spruce/main.go
Dan Anglin 2c5c7332be
refactor: move the subcommands to internal
Move the subcommands and FlagSets to a new internal package.
2023-08-12 10:26:23 +01:00

50 lines
878 B
Go

package main
import (
"log"
"os"
"codeflow.dananglin.me.uk/apollo/spruce/internal/cmd"
)
type Runner interface {
Parse([]string) error
Name() string
Run() error
}
var (
binaryVersion string
buildTime string
goVersion string
gitCommit string
)
func main() {
commandMap := map[string]Runner{
"version": cmd.NewVersionCommand(
binaryVersion,
buildTime,
goVersion,
gitCommit,
),
"generate": cmd.NewGenerateCommand(),
"create": cmd.NewCreateCommand(),
}
subcommand := os.Args[1]
runner, ok := commandMap[subcommand]
if !ok {
log.Fatalf("ERROR: unknown subcommand '%s'.", subcommand)
}
if err := runner.Parse(os.Args[2:]); err != nil {
log.Fatalf("ERROR: unable to parse the command line flags; %v.", err)
}
if err := runner.Run(); err != nil {
log.Fatalf("ERROR: unable to run '%s'; %v.", runner.Name(), err)
}
}