github.com/JarrahG/buffalocli@v0.0.0-20230801092127-b85bfd5d395a/internal/cmd/generate/mailer.go (about)

     1  package generate
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/JarrahG/buffalocli/internal/genny/mail"
     7  	"github.com/gobuffalo/flect/name"
     8  	"github.com/gobuffalo/genny/v2"
     9  	"github.com/gobuffalo/genny/v2/gogen"
    10  	"github.com/gobuffalo/meta"
    11  	"github.com/spf13/cobra"
    12  )
    13  
    14  var mailOptions = struct {
    15  	dryRun bool
    16  	*mail.Options
    17  }{
    18  	Options: &mail.Options{},
    19  }
    20  
    21  // MailCmd for generating mailers
    22  var MailCmd = &cobra.Command{
    23  	Use:   "mailer [name]",
    24  	Short: "Generate a new mailer for Buffalo",
    25  	RunE: func(cmd *cobra.Command, args []string) error {
    26  		mailOptions.App = meta.New(".")
    27  		mailOptions.Name = name.New(args[0])
    28  		gg, err := mail.New(mailOptions.Options)
    29  		if err != nil {
    30  			return err
    31  		}
    32  
    33  		run := genny.WetRunner(context.Background())
    34  		if mailOptions.dryRun {
    35  			run = genny.DryRunner(context.Background())
    36  		}
    37  
    38  		g, err := gogen.Fmt(mailOptions.App.Root)
    39  		if err != nil {
    40  			return err
    41  		}
    42  		if err := run.With(g); err != nil {
    43  			return err
    44  		}
    45  
    46  		gg.With(run)
    47  		return run.Run()
    48  	},
    49  }
    50  
    51  func init() {
    52  	MailCmd.Flags().BoolVarP(&mailOptions.dryRun, "dry-run", "d", false, "dry run of the generator")
    53  	MailCmd.Flags().BoolVar(&mailOptions.SkipInit, "skip-init", false, "skip initializing mailers/")
    54  }