github.com/JarrahG/buffalocli@v0.0.0-20230801092127-b85bfd5d395a/internal/cmd/generate/action.go (about) 1 package generate 2 3 import ( 4 "context" 5 "fmt" 6 7 "github.com/JarrahG/buffalocli/internal/genny/actions" 8 "github.com/gobuffalo/genny/v2" 9 "github.com/gobuffalo/logger" 10 "github.com/spf13/cobra" 11 ) 12 13 var actionOptions = struct { 14 *actions.Options 15 dryRun bool 16 verbose bool 17 }{ 18 Options: &actions.Options{}, 19 } 20 21 // ActionCmd is the cmd that generates actions. 22 var ActionCmd = &cobra.Command{ 23 Use: "action [name] [handler name...]", 24 Aliases: []string{"a", "actions"}, 25 Short: "Generate new action(s)", 26 RunE: func(cmd *cobra.Command, args []string) error { 27 if len(args) == 0 { 28 return fmt.Errorf("you must provide a name") 29 } 30 actionOptions.Name = args[0] 31 if len(args) == 1 { 32 return fmt.Errorf("you must provide at least one action name") 33 } 34 actionOptions.Actions = args[1:] 35 36 ctx := context.Background() 37 run := genny.WetRunner(ctx) 38 39 if actionOptions.dryRun { 40 run = genny.DryRunner(ctx) 41 } 42 43 if actionOptions.verbose { 44 run.Logger = logger.New(logger.DebugLevel) 45 } 46 47 opts := actionOptions.Options 48 if err := run.WithNew(actions.New(opts)); err != nil { 49 return err 50 } 51 return run.Run() 52 }, 53 } 54 55 func init() { 56 ActionCmd.Flags().BoolVarP(&actionOptions.SkipTemplates, "skip-template", "", false, "skip generation of templates for action(s)") 57 ActionCmd.Flags().BoolVarP(&actionOptions.dryRun, "dry-run", "d", false, "dry run") 58 ActionCmd.Flags().BoolVarP(&actionOptions.verbose, "verbose", "v", false, "verbosely run the generator") 59 ActionCmd.Flags().StringVarP(&actionOptions.Method, "method", "m", "GET", "change the HTTP method for the generate action(s)") 60 }