github.com/singlemusic/buffalo@v0.16.30/buffalo/cmd/generate/mailer.go (about)

     1  package generate
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/gobuffalo/buffalo/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  		run.With(g)
    43  
    44  		gg.With(run)
    45  		return run.Run()
    46  
    47  	},
    48  }
    49  
    50  func init() {
    51  	MailCmd.Flags().BoolVarP(&mailOptions.dryRun, "dry-run", "d", false, "dry run of the generator")
    52  	MailCmd.Flags().BoolVar(&mailOptions.SkipInit, "skip-init", false, "skip initializing mailers/")
    53  }