github.com/metux/go-metabuild@v0.0.0-20240118143255-d9ed5ab697f9/cmd/metabuild/main.go (about) 1 package main 2 3 import ( 4 "flag" 5 "fmt" 6 "log" 7 "os" 8 9 E "github.com/metux/go-metabuild/engine" 10 "github.com/metux/go-metabuild/util" 11 ) 12 13 var ( 14 argDefaults string 15 argConf string 16 args []string 17 ) 18 19 func usage() { 20 fmt.Printf("Usage: %s -conf <fn> -global <fn> [command ...]\n", os.Args[0]) 21 flag.PrintDefaults() 22 fmt.Printf("Available commands\n") 23 fmt.Printf(" build [stage] run build\n") 24 os.Exit(1) 25 } 26 27 func cmdBuild() { 28 stage := E.StagePackage 29 30 if len(args) > 1 { 31 stage = E.Stage(args[1]) 32 } 33 34 engine, err := E.Load(argConf, argDefaults) 35 if err != nil { 36 log.Printf("ERR: %s\n", err) 37 } else { 38 util.ErrPanicf(engine.RunStage(stage), "build failed") 39 } 40 } 41 42 func main() { 43 flag.StringVar(&argDefaults, "global", "", "global defaults yaml") 44 flag.StringVar(&argConf, "conf", "", "project config yaml") 45 flag.Parse() 46 args = flag.Args() 47 48 if argDefaults == "" || argConf == "" || len(args) == 0 { 49 usage() 50 } 51 52 switch args[0] { 53 case "build": 54 cmdBuild() 55 default: 56 usage() 57 } 58 }