github.com/jacobsoderblom/buffalo@v0.11.0/buffalo/cmd/generate/resource.go (about)

     1  package generate
     2  
     3  import (
     4  	"github.com/markbates/inflect"
     5  	"github.com/pkg/errors"
     6  
     7  	"github.com/gobuffalo/buffalo/generators/resource"
     8  	"github.com/gobuffalo/makr"
     9  	"github.com/spf13/cobra"
    10  )
    11  
    12  var resourceOptions = struct {
    13  	SkipMigration bool
    14  	SkipModel     bool
    15  	SkipTemplates bool
    16  	ModelName     string
    17  	Name          string
    18  }{}
    19  
    20  // ResourceCmd generates a new actions/resource file and a stub test.
    21  var ResourceCmd = &cobra.Command{
    22  	Use:     "resource [name]",
    23  	Example: resourceExamples,
    24  	Aliases: []string{"r"},
    25  	Short:   "Generates a new actions/resource file",
    26  	RunE: func(cmd *cobra.Command, args []string) error {
    27  		o, err := resource.New(resourceOptions.Name, args...)
    28  		if err != nil {
    29  			return errors.WithStack(err)
    30  		}
    31  		o.SkipModel = resourceOptions.SkipModel
    32  		o.SkipMigration = resourceOptions.SkipMigration
    33  		o.SkipTemplates = resourceOptions.SkipTemplates
    34  		if resourceOptions.ModelName != "" {
    35  			o.UseModel = true
    36  			o.Model = inflect.Name(resourceOptions.ModelName)
    37  		}
    38  
    39  		if err := o.Validate(); err != nil {
    40  			return err
    41  		}
    42  
    43  		return o.Run(".", makr.Data{})
    44  	},
    45  }
    46  
    47  var resourceMN string
    48  
    49  func init() {
    50  	ResourceCmd.Flags().BoolVarP(&resourceOptions.SkipMigration, "skip-migration", "s", false, "tells resource generator not-to add model migration")
    51  	ResourceCmd.Flags().BoolVarP(&resourceOptions.SkipModel, "skip-model", "", false, "tells resource generator not to generate model nor migrations")
    52  	ResourceCmd.Flags().BoolVarP(&resourceOptions.SkipTemplates, "skip-templates", "", false, "tells resource generator not to generate templates for the resource")
    53  	ResourceCmd.Flags().StringVarP(&resourceOptions.ModelName, "use-model", "", "", "tells resource generator to reference an existing model in generated code")
    54  	ResourceCmd.Flags().StringVarP(&resourceOptions.Name, "name", "n", "", "allows to define a different model name for the resource being generated.")
    55  }
    56  
    57  const resourceExamples = `$ buffalo g resource users
    58  Generates:
    59  
    60  - actions/users.go
    61  - actions/users_test.go
    62  - models/user.go
    63  - models/user_test.go
    64  - migrations/2016020216301234_create_users.up.fizz
    65  - migrations/2016020216301234_create_users.down.fizz
    66  
    67  $ buffalo g resource users --skip-migration
    68  Generates:
    69  
    70  - actions/users.go
    71  - actions/users_test.go
    72  - models/user.go
    73  - models/user_test.go
    74  
    75  $ buffalo g resource users --skip-model
    76  Generates:
    77  
    78  - actions/users.go
    79  - actions/users_test.go
    80  
    81  $ buffalo g resource users --use-model users
    82  Generates:
    83  
    84  - actions/users.go
    85  - actions/users_test.go`