github.com/aca02djr/gb@v0.4.1/cmd/gb/generate.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "os" 6 "os/exec" 7 "path/filepath" 8 9 "github.com/constabulary/gb" 10 "github.com/constabulary/gb/cmd" 11 ) 12 13 func init() { 14 registerCommand(GenerateCmd) 15 } 16 17 var GenerateCmd = &cmd.Command{ 18 Name: "generate", 19 UsageLine: "generate [-run regexp] [file.go... | packages]", 20 Short: "generate Go files by processing source", 21 Long: ` 22 Generate runs commands described by directives within existing files. 23 24 Those commands can run any process, but the intent is to create or update Go 25 source files, for instance by running yacc. 26 27 See 'go help generate'. 28 `, 29 Run: func(ctx *gb.Context, args []string) error { 30 env := cmd.MergeEnv(os.Environ(), map[string]string{ 31 "GOPATH": fmt.Sprintf("%s%c%s", ctx.Projectdir(), filepath.ListSeparator, filepath.Join(ctx.Projectdir(), "vendor")), 32 }) 33 34 cmd := exec.Command("go", append([]string{"generate"}, args...)...) 35 cmd.Env = env 36 cmd.Stdin = os.Stdin 37 cmd.Stdout = os.Stdout 38 cmd.Stderr = os.Stderr 39 40 return cmd.Run() 41 }, 42 }