github.com/kekek/gb@v0.4.5-0.20170222120241-d4ba64b0b297/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  }