github.com/w3security/vervet/v5@v5.3.1-0.20230618081846-5bd9b5d799dc/internal/cmd/generate.go (about)

     1  package cmd
     2  
     3  import (
     4  	"path/filepath"
     5  
     6  	"github.com/urfave/cli/v2"
     7  
     8  	"github.com/w3security/vervet/v5/generate"
     9  )
    10  
    11  // GenerateCommand is the `vervet generate` subcommand.
    12  var GenerateCommand = cli.Command{
    13  	Name:      "generate",
    14  	Usage:     "Generate artifacts from resource versioned OpenAPI specs",
    15  	ArgsUsage: "<generator> [<generator2>...]",
    16  	Flags: []cli.Flag{
    17  		&cli.StringFlag{
    18  			Name:    "config",
    19  			Aliases: []string{"c", "conf"},
    20  			Usage:   "Project configuration file",
    21  		},
    22  		&cli.BoolFlag{
    23  			Name:    "dry-run",
    24  			Aliases: []string{"n"},
    25  			Usage:   "Dry-run, listing files that would be generated",
    26  		},
    27  		&cli.StringFlag{
    28  			Name:    "generators",
    29  			Aliases: []string{"g", "gen", "generator"},
    30  			Usage:   "Generators definition file",
    31  		},
    32  	},
    33  	Action: Generate,
    34  }
    35  
    36  // Generate executes code generators against OpenAPI specs.
    37  func Generate(ctx *cli.Context) error {
    38  	projectDir, configFile, err := projectConfig(ctx)
    39  	if err != nil {
    40  		return err
    41  	}
    42  
    43  	var generators []string
    44  	for i := 0; i < ctx.Args().Len(); i++ {
    45  		generators = append(generators, ctx.Args().Get(i))
    46  	}
    47  
    48  	genFile := ctx.String("generators")
    49  	genFile, err = filepath.Abs(genFile)
    50  	if err != nil {
    51  		return err
    52  	}
    53  
    54  	params := generate.GeneratorParams{
    55  		ProjectDir:     projectDir,
    56  		ConfigFile:     configFile,
    57  		Generators:     generators,
    58  		GeneratorsFile: genFile,
    59  		Debug:          ctx.Bool("debug"),
    60  		DryRun:         ctx.Bool("dry-run"),
    61  	}
    62  
    63  	return generate.Generate(params)
    64  }