diff options
Diffstat (limited to 'cmd/planr/main.go')
-rw-r--r-- | cmd/planr/main.go | 77 |
1 files changed, 65 insertions, 12 deletions
diff --git a/cmd/planr/main.go b/cmd/planr/main.go index e2a85ed..2243203 100644 --- a/cmd/planr/main.go +++ b/cmd/planr/main.go @@ -1,24 +1,28 @@ package main -import ( +import ( "flag" "fmt" "io" "log" "os" + "runtime/pprof" + "golang.flu0r1ne.net/planr" + "golang.flu0r1ne.net/planr/adapters/gtest" + "golang.flu0r1ne.net/planr/adapters/bash" "golang.flu0r1ne.net/planr/cmd/planr/sub" ) -const ( - VERSION = "0.0.3" -) - func printUsage(w io.Writer) { fmt.Fprintf (w, "usage: %s command args ... \n", os.Args[0]) fmt.Fprintln(w, " help ") fmt.Fprintln(w, " version ") fmt.Fprintln(w, " build ") fmt.Fprintln(w, " evaluate ") + fmt.Fprintln(w, " evaluate <test0> <test1> ... ") + fmt.Fprintln(w, " evaluate -json ") + fmt.Fprintln(w, " clean ") + fmt.Fprintln(w, " config <key> ") } func dieUsage() { @@ -26,25 +30,74 @@ func dieUsage() { os.Exit(1) } +var src = flag.String("srcdir", "", "source directory") +var config = flag.String("configdir", "", "config directory") +var build = flag.String("builddir", "", "build directory") +var cpuprofile = flag.String("cpuprofile", "", "write cpu profile to file") + +func getConfiguredRunner() planr.Runner { + r := planr.ConfigureRunner() + r = planr.RegisterAdapter(r, gtest.NewAdapter()) + r = planr.RegisterAdapter(r, bash.NewAdapter()) + + if wd, err := os.Getwd(); err == nil { + r = planr.SetConfigDirFromTree(r, wd) + } + + if *src != "" { + r = planr.SetSrcDir(r, *src) + } + + if *config != "" { + r = planr.SetConfigDir(r, *config) + } + + if *build != "" { + r = planr.SetBuildDir(r, *build) + } + + return r.New() +} + func main() { + flag.Parse() + + if *cpuprofile != "" { + f, err := os.Create(*cpuprofile) + + if err != nil { + log.Fatal(err) + } + + pprof.StartCPUProfile(f) + defer pprof.StopCPUProfile() + } log.SetFlags(log.Llongfile | log.Lmsgprefix) log.SetPrefix("planr: ") - if len(os.Args) < 2 { + if flag.NArg() < 1 { dieUsage() } - subcommand := os.Args[1] - subargs := os.Args[2:] + runner := getConfiguredRunner() + + cfg := planr.DecodeConfig(runner.ConfigDir()) + + subcommand := flag.Arg(0) + subargs := flag.Args()[1:] switch subcommand { case "version": - fmt.Printf("%s\n", VERSION) + fmt.Printf("%s\n", planr.VERSION) case "build": - sub.Build(subargs) - case "evaluate","eval": - sub.Evaluate(subargs) + sub.Build(runner, subargs, cfg) + case "evaluate", "eval": + sub.Evaluate(runner, subargs, cfg) + case "clean": + sub.Clean(runner, subargs) + case "config": + sub.Config(runner, subargs) case "help", "-h", "-help", "--help": printUsage(os.Stdout) default: |