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