github.com/singlemusic/buffalo@v0.16.30/buffalo/cmd/generate/resource.go (about) 1 package generate 2 3 import ( 4 "context" 5 "fmt" 6 7 "github.com/gobuffalo/attrs" 8 "github.com/gobuffalo/buffalo/genny/resource" 9 "github.com/gobuffalo/genny/v2" 10 "github.com/gobuffalo/logger" 11 "github.com/spf13/cobra" 12 ) 13 14 var resourceOptions = struct { 15 *resource.Options 16 Verbose bool 17 DryRun bool 18 }{ 19 Options: &resource.Options{}, 20 } 21 22 // ResourceCmd generates a new actions/resource file and a stub test. 23 var ResourceCmd = &cobra.Command{ 24 Use: "resource [name]", 25 Example: resourceExamples, 26 Aliases: []string{"r"}, 27 Short: "Generate a new actions/resource file", 28 RunE: func(cmd *cobra.Command, args []string) error { 29 if len(args) == 0 { 30 return fmt.Errorf("you must supply a name") 31 } 32 ctx := context.Background() 33 run := genny.WetRunner(ctx) 34 if resourceOptions.DryRun { 35 run = genny.DryRunner(ctx) 36 } 37 38 if resourceOptions.Verbose { 39 lg := logger.New(logger.DebugLevel) 40 run.Logger = lg 41 } 42 43 if len(resourceOptions.Name) == 0 { 44 resourceOptions.Name = args[0] 45 } 46 if len(args) > 1 { 47 ats, err := attrs.ParseArgs(args[1:]...) 48 if err != nil { 49 return err 50 } 51 resourceOptions.Attrs = ats 52 } 53 54 if err := run.WithNew(resource.New(resourceOptions.Options)); err != nil { 55 return err 56 } 57 return run.Run() 58 }, 59 } 60 61 func init() { 62 ResourceCmd.Flags().BoolVarP(&resourceOptions.SkipMigration, "skip-migration", "s", false, "tells resource generator not-to add model migration") 63 ResourceCmd.Flags().BoolVarP(&resourceOptions.SkipModel, "skip-model", "", false, "tells resource generator not to generate model nor migrations") 64 ResourceCmd.Flags().BoolVarP(&resourceOptions.SkipTemplates, "skip-templates", "", false, "tells resource generator not to generate templates for the resource") 65 ResourceCmd.Flags().StringVarP(&resourceOptions.Model, "use-model", "", "", "tells resource generator to reference an existing model in generated code") 66 ResourceCmd.Flags().StringVarP(&resourceOptions.Name, "name", "n", "", "allows to define a different model name for the resource being generated.") 67 ResourceCmd.Flags().BoolVarP(&resourceOptions.DryRun, "dry-run", "d", false, "dry run") 68 ResourceCmd.Flags().BoolVarP(&resourceOptions.Verbose, "verbose", "v", false, "verbosely print out the go get commands") 69 } 70 71 const resourceExamples = `$ buffalo g resource users 72 Generates: 73 74 - actions/users.go 75 - actions/users_test.go 76 - models/user.go 77 - models/user_test.go 78 - migrations/2016020216301234_create_users.up.fizz 79 - migrations/2016020216301234_create_users.down.fizz 80 81 $ buffalo g resource users --skip-migration 82 Generates: 83 84 - actions/users.go 85 - actions/users_test.go 86 - models/user.go 87 - models/user_test.go 88 89 $ buffalo g resource users --skip-model 90 Generates: 91 92 - actions/users.go 93 - actions/users_test.go 94 95 $ buffalo g resource users --use-model users 96 Generates: 97 98 - actions/users.go 99 - actions/users_test.go`