func init() { registerCommand(&cmd.Command{ Name: "doc", UsageLine: `doc <pkg> <sym>[.<method>]`, Short: "show documentation for a package or symbol", Run: func(ctx *gb.Context, args []string) error { env := cmd.MergeEnv(os.Environ(), map[string]string{ "GOPATH": fmt.Sprintf("%s:%s", ctx.Projectdir(), filepath.Join(ctx.Projectdir(), "vendor")), }) if len(args) == 0 { args = append(args, ".") } args = append([]string{filepath.Join(ctx.GOROOT, "bin", "godoc")}, args...) cmd := exec.Cmd{ Path: args[0], Args: args, Env: env, Stdin: os.Stdin, Stdout: os.Stdout, Stderr: os.Stderr, } return cmd.Run() }, ParseArgs: func(_ *gb.Context, _ string, args []string) []string { return args }, }) }
See gb help plugins. `, Run: func(ctx *gb.Context, args []string) error { if len(args) < 1 { return fmt.Errorf("plugin: no command supplied") } path, err := lookupPlugin(args[0]) if err != nil { return err } args[0] = path env := cmd.MergeEnv(os.Environ(), map[string]string{ "GB_PROJECT_DIR": ctx.Projectdir(), }) cmd := exec.Cmd{ Path: path, Args: args, Env: env, Stdin: os.Stdin, Stdout: os.Stdout, Stderr: os.Stderr, } return cmd.Run() }, // plugin should not interpret arguments
func init() { registerCommand(GenerateCmd) } var GenerateCmd = &cmd.Command{ Name: "generate", UsageLine: "generate", Short: "generate Go files by processing source", Long: `Generate runs commands described by directives within existing files. Those commands can run any process but the intent is to create or update Go source files, for instance by running yacc. See 'go help generate'`, Run: func(ctx *gb.Context, args []string) error { env := cmd.MergeEnv(os.Environ(), map[string]string{ "GOPATH": fmt.Sprintf("%s:%s", ctx.Projectdir(), filepath.Join(ctx.Projectdir(), "vendor")), }) args = append([]string{filepath.Join(ctx.GOROOT, "bin", "go"), "generate"}, args...) cmd := exec.Cmd{ Path: args[0], Args: args, Env: env, Stdin: os.Stdin, Stdout: os.Stdout, Stderr: os.Stderr, } return cmd.Run()