123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- package main
- import (
- "flag"
- "fmt"
- "io"
- "os"
- )
- var globalOpts struct {
- ctlSock string
- verbose bool
- }
- type commandFunc func([]string) error
- var cmdMap map[string]commandFunc
- func init() {
- cmdMap = map[string]commandFunc{
- // TODO: implement set and get of config at runtime
- //"set": setCmd,
- //"get": getCmd,
- "pause": pauseCmd,
- "reload": reloadCmd,
- "restart": restartCmd,
- "help": helpCmd,
- }
- }
- //func setCmd(ctlSock string, args []string) error {}
- //func getCmd(ctlSock string, args []string) error {}
- func pauseCmd(args []string) error {
- return nil
- }
- func reloadCmd(args []string) error {
- return nil
- }
- func restartCmd(args []string) error {
- return nil
- }
- func helpCmd(args []string) error {
- usage(os.Stdout)
- os.Exit(0)
- return nil
- }
- func usage(w io.Writer) {
- fmt.Fprintf(w, "USAGE: %s [globalOpts] [SUBCOMMAND] [opts]\n", os.Args[0])
- fmt.Fprintf(w, "\nSUBCOMMANDS:\n\n")
- for command := range cmdMap {
- fmt.Fprintf(w, "\t%s\n", command)
- }
- }
- func parseAndRun(args []string) {
- cmdName := args[0]
- cmdToRun, ok := cmdMap[cmdName]
- if !ok {
- fmt.Fprintf(os.Stderr, "Unknown subcommand: %s\n", cmdName)
- usage(os.Stderr)
- os.Exit(2)
- }
- err := cmdToRun(args)
- if err != nil {
- fmt.Fprintf(os.Stderr, "Error:\n%s\n", err)
- os.Exit(1)
- }
- }
- func main() {
- flag.StringVar(&globalOpts.ctlSock, "ctl-socket", "/tmp/circologd-ctl.sock",
- "Path to a unix domain socket for the control server; leave empty to disable")
- flag.BoolVar(&globalOpts.verbose, "verbose", false, "Print more output")
- flag.Parse()
- args := flag.Args()
- if globalOpts.verbose {
- fmt.Fprintf(os.Stdout, "Args: %v", args)
- }
- if len(args) == 0 {
- usage(os.Stderr)
- os.Exit(-1)
- }
- parseAndRun(args)
- }
|