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 }