github.com/gobuffalo/buffalo-cli/v2@v2.0.0-alpha.15.0.20200919213536-a7350c8e6799/cli/internal/plugins/golang/mainfix/cmd.go (about) 1 package mainfix 2 3 import ( 4 "context" 5 "os" 6 "path" 7 "path/filepath" 8 9 "github.com/gobuffalo/here" 10 ) 11 12 // Cmd takes care of moving existing main.go into 13 // cmd/[name]/main.go where its expected by the build command. 14 type Cmd struct{} 15 16 func (*Cmd) PluginName() string { 17 return "main/fixer" 18 } 19 20 func (fixer *Cmd) Fix(ctx context.Context, root string, args []string) error { 21 info, err := here.Dir(root) 22 if err != nil { 23 return err 24 } 25 26 fp := filepath.Join(root, "cmd", path.Base(info.Module.Path)) 27 if _, err := os.Stat(filepath.Join(fp, "main.go")); err == nil { 28 return nil 29 } 30 31 if _, err := os.Stat(fp); err != nil { 32 err := os.MkdirAll(fp, 0777) 33 if err != nil { 34 return err 35 } 36 } 37 38 mainPath := filepath.Join(root, "main.go") 39 if _, err := os.Stat(mainPath); err == nil { 40 err := os.Rename(mainPath, filepath.Join(fp, "main.go")) 41 if err != nil { 42 return err 43 } 44 } 45 46 return nil 47 }