github.com/ashleymcnamara/buffalo@v0.8.0/buffalo/cmd/generate/resource.go (about)

     1  package generate
     2  
     3  import (
     4  	"errors"
     5  
     6  	"github.com/gobuffalo/buffalo/generators/resource"
     7  	"github.com/gobuffalo/makr"
     8  	"github.com/markbates/inflect"
     9  	"github.com/spf13/cobra"
    10  )
    11  
    12  const resourceExamples = `$ buffalo g resource users
    13  Generates:
    14  
    15  - actions/users.go
    16  - actions/users_test.go
    17  - models/user.go
    18  - models/user_test.go
    19  - migrations/2016020216301234_create_users.up.fizz
    20  - migrations/2016020216301234_create_users.down.fizz
    21  
    22  $ buffalo g resource users --skip-migration
    23  Generates:
    24  
    25  - actions/users.go
    26  - actions/users_test.go
    27  - models/user.go
    28  - models/user_test.go
    29  
    30  $ buffalo g resource users --skip-model
    31  Generates:
    32  
    33  - actions/users.go
    34  - actions/users_test.go`
    35  
    36  //SkipResourceMigration allows to generate a resource without the migration.
    37  var SkipResourceMigration = false
    38  
    39  //SkipResourceModel allows to generate a resource without the model and Migration.
    40  var SkipResourceModel = false
    41  
    42  // ResourceCmd generates a new actions/resource file and a stub test.
    43  var ResourceCmd = &cobra.Command{
    44  	Use:     "resource [name]",
    45  	Example: resourceExamples,
    46  	Aliases: []string{"r"},
    47  	Short:   "Generates a new actions/resource file",
    48  	RunE: func(cmd *cobra.Command, args []string) error {
    49  		if len(args) == 0 {
    50  			return errors.New("you must specify a resource name")
    51  		}
    52  
    53  		name := args[0]
    54  		data := makr.Data{
    55  			"name":         name,
    56  			"singular":     inflect.Singularize(name),
    57  			"plural":       inflect.Pluralize(name),
    58  			"camel":        inflect.Camelize(name),
    59  			"under":        inflect.Underscore(name),
    60  			"downFirstCap": inflect.CamelizeDownFirst(name),
    61  			"actions":      []string{"List", "Show", "New", "Create", "Edit", "Update", "Destroy"},
    62  			"args":         args,
    63  
    64  			// Flags
    65  			"skipMigration": SkipResourceMigration,
    66  			"skipModel":     SkipResourceModel,
    67  		}
    68  
    69  		g, err := resource.New(data)
    70  		if err != nil {
    71  			return err
    72  		}
    73  		return g.Run(".", data)
    74  	},
    75  }