45 lines
606 B
Go
45 lines
606 B
Go
package main
|
|
|
|
import (
|
|
"flag"
|
|
"log"
|
|
"os"
|
|
|
|
"github.com/itzg/go-flagsfiller"
|
|
)
|
|
|
|
type cmd struct {
|
|
cmd func([]string, any)
|
|
config any
|
|
fs *flag.FlagSet
|
|
}
|
|
|
|
func (c *cmd) Register(name string) {
|
|
c.fs = flag.NewFlagSet(name, flag.ExitOnError)
|
|
if c.config != nil {
|
|
filler := flagsfiller.New()
|
|
err := filler.Fill(c.fs, c.config)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
}
|
|
|
|
func (c *cmd) Run(name string) {
|
|
c.fs.Parse(os.Args[2:])
|
|
c.cmd(c.fs.Args(), c.config)
|
|
}
|
|
|
|
var commands = map[string]*cmd{
|
|
"request": {
|
|
request,
|
|
nil,
|
|
nil,
|
|
},
|
|
"create": {
|
|
create,
|
|
&createFlags{},
|
|
nil,
|
|
},
|
|
}
|