github.com/gobuffalo/buffalo-cli/v2@v2.0.0-alpha.15.0.20200919213536-a7350c8e6799/internal/garlic/run.go (about) 1 package garlic 2 3 import ( 4 "bytes" 5 "context" 6 "io/ioutil" 7 "os" 8 "os/exec" 9 "path/filepath" 10 11 "github.com/gobuffalo/buffalo-cli/v2/cli" 12 "github.com/gobuffalo/plugins/plugio" 13 ) 14 15 func isBuffalo(mod string) bool { 16 if _, err := os.Stat(mod); err != nil { 17 return false 18 } 19 20 b, err := ioutil.ReadFile(mod) 21 if err != nil { 22 return false 23 } 24 25 return bytes.Contains(b, []byte("github.com/gobuffalo/buffalo")) 26 } 27 28 func Run(ctx context.Context, root string, args []string) error { 29 main := filepath.Join(root, "cmd", "buffalo") 30 if _, err := os.Stat(filepath.Dir(main)); err != nil { 31 buff, err := cli.NewFromRoot(root) 32 if err != nil { 33 return err 34 } 35 return buff.Main(ctx, root, args) 36 } 37 38 bargs := []string{"run", "-v", "./cmd/buffalo"} 39 bargs = append(bargs, args...) 40 41 cmd := exec.CommandContext(ctx, "go", bargs...) 42 cmd.Stdin = plugio.Stdin() 43 cmd.Stdout = plugio.Stdout() 44 cmd.Stderr = plugio.Stderr() 45 return cmd.Run() 46 }