mirror of
https://github.com/yusing/godoxy.git
synced 2025-05-20 12:42:34 +02:00
38 lines
650 B
Go
38 lines
650 B
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
type Args struct {
|
|
Command string
|
|
}
|
|
|
|
const (
|
|
CommandStart = ""
|
|
CommandValidate = "validate"
|
|
CommandReload = "reload"
|
|
)
|
|
|
|
var ValidCommands = []string{CommandStart, CommandValidate, CommandReload}
|
|
|
|
func getArgs() Args {
|
|
var args Args
|
|
flag.Parse()
|
|
args.Command = flag.Arg(0)
|
|
if err := validateArgs(args.Command, ValidCommands); err != nil {
|
|
logrus.Fatal(err)
|
|
}
|
|
return args
|
|
}
|
|
|
|
func validateArgs[T comparable](arg T, validArgs []T) error {
|
|
for _, v := range validArgs {
|
|
if arg == v {
|
|
return nil
|
|
}
|
|
}
|
|
return NewNestedError("invalid argument").Subjectf("%v", arg)
|
|
}
|