github.com/PaulioRandall/go-cookies@v0.1.1/godo.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"os"
     6  	"path/filepath"
     7  	"strings"
     8  
     9  	"github.com/PaulioRandall/go-cookies/go/quick"
    10  )
    11  
    12  var (
    13  	ROOT      = quick.AbsPath(".")
    14  	BUILD     = filepath.Join(ROOT, "build")
    15  	PROJ_PATH = "github.com/PaulioRandall/go-cookies"
    16  	MAIN_PKG  = "cmd"
    17  	USAGE     = `Usage:
    18  	help       Show usage
    19  	clean      Remove build files
    20  	build      Build -> format -> vet
    21  	test       Build -> format -> test -> vet
    22  	run        Build -> format -> test -> vet -> run`
    23  )
    24  
    25  var (
    26  	BUILD_ARGS = []string{
    27  		"-o", BUILD,
    28  		"", // "-gcflags -m -ldflags -s -w"
    29  		PROJ_PATH + "/" + MAIN_PKG,
    30  	}
    31  	FMT_ARGS  = []string{"./..."}
    32  	TEST_ARGS = []string{"-timeout", "2s", "./..."}
    33  	VET_ARGS  = []string{"./..."}
    34  )
    35  
    36  func main() {
    37  
    38  	code := 0
    39  	args := os.Args[1:]
    40  
    41  	if len(args) == 0 {
    42  		quick.UsageErr(USAGE, "Missing command argument")
    43  	}
    44  
    45  	switch cmd := args[0]; strings.ToLower(cmd) {
    46  	case "help":
    47  		fmt.Println(USAGE)
    48  
    49  	case "clean":
    50  		quick.Clean(BUILD)
    51  
    52  	case "build":
    53  		quick.Clean(BUILD)
    54  		quick.Setup(BUILD, os.ModePerm)
    55  		quick.Build(ROOT, BUILD_ARGS...)
    56  		quick.Fmt(ROOT, FMT_ARGS...)
    57  		quick.Vet(ROOT, VET_ARGS...)
    58  
    59  	case "test":
    60  		quick.Clean(BUILD)
    61  		quick.Setup(BUILD, os.ModePerm)
    62  		quick.Build(ROOT, BUILD_ARGS...)
    63  		quick.Fmt(ROOT, FMT_ARGS...)
    64  		quick.Test(ROOT, TEST_ARGS...)
    65  		quick.Vet(ROOT, VET_ARGS...)
    66  
    67  	case "run":
    68  		quick.Clean(BUILD)
    69  		quick.Setup(BUILD, os.ModePerm)
    70  		quick.Build(ROOT, BUILD_ARGS...)
    71  		quick.Fmt(ROOT, FMT_ARGS...)
    72  		quick.Test(ROOT, TEST_ARGS...)
    73  		quick.Vet(ROOT, VET_ARGS...)
    74  		code = quick.Run(BUILD, MAIN_PKG)
    75  
    76  	default:
    77  		quick.UsageErr(USAGE, "Unknown command argument %q", cmd)
    78  	}
    79  
    80  	fmt.Printf("\nExit: %d\n", code)
    81  	os.Exit(code)
    82  }