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  }