github.com/r2d2-ai/cli@v1.20.0/api/builder.go (about) 1 package api 2 3 import ( 4 "fmt" 5 "os" 6 "os/exec" 7 8 "github.com/r2d2-ai/cli/common" 9 "github.com/r2d2-ai/cli/util" 10 ) 11 12 type AppBuilder struct { 13 } 14 15 func (*AppBuilder) Build(project common.AppProject) error { 16 17 err := restoreMain(project) 18 if err != nil { 19 return err 20 } 21 22 err = simpleGoBuild(project) 23 if err != nil { 24 return err 25 } 26 27 return nil 28 } 29 30 func simpleGoBuild(project common.AppProject) error { 31 if _, err := os.Stat(project.BinDir()); err != nil { 32 if Verbose() { 33 fmt.Println("Creating 'bin' directory") 34 } 35 err = os.MkdirAll(project.BinDir(), os.ModePerm) 36 if err != nil { 37 return err 38 } 39 } 40 41 if Verbose() { 42 fmt.Println("Performing 'go build'...") 43 } 44 45 err := util.ExecCmd(exec.Command("go", "build", "-o", project.Executable()), project.SrcDir()) 46 if err != nil { 47 fmt.Println("Error in building", project.SrcDir()) 48 return err 49 } 50 51 return nil 52 }