// Copyright 2017-2025 WIT.COM Inc. All rights reserved. // Use of this source code is governed by the GPL 3.0 package main /* this parses the command line arguements this enables command line options from other packages like 'gui' and 'log' */ import ( "fmt" "os" "go.wit.com/log" ) var argv args type args struct { Gui *EmptyCmd `arg:"subcommand:gui" help:"open the gui"` List *EmptyCmd `arg:"subcommand:list" help:"list the machines in your zoo"` Upgrade *EmptyCmd `arg:"subcommand:upgrade" help:"upgrade the machines"` Verbose bool `arg:"--verbose" default:"false" help:"talk more"` Daemon bool `arg:"--daemon" default:"false" help:"run in daemon mode"` Port int `arg:"--port" default:"8080" help:"port to run on"` NoPort bool `arg:"--no-port" help:"don't open socket"` Bash bool `arg:"--bash" help:"generate bash completion"` BashAuto []string `arg:"--auto-complete" help:"todo: move this to go-arg"` } type EmptyCmd struct { } func (args) Version() string { return "zookeeper " + VERSION + " Built on: " + BUILDTIME } /* func init() { arg.MustParse(&argv) } */ func (a args) Description() string { return ` this daemon talks to zookeeper ` } var NOW *log.LogFlag var INFO *log.LogFlag var ZOOD *log.LogFlag var WARN *log.LogFlag func init() { full := "go.wit.com/apps/zookeeper" short := "zookeeper" NOW = log.NewFlag("NOW", true, full, short, "useful while doing debugging") INFO = log.NewFlag("INFO", false, full, short, "general zookeeper") ZOOD = log.NewFlag("ZOOD", false, full, short, "show reporting from zood") WARN = log.NewFlag("WARN", true, full, short, "bad things") } // prints help to STDERR // TODO: move everything below this to go-args func (args) doBashHelp() { if argv.BashAuto[1] != "''" { // if this is not blank, then the user has typed something return } if argv.BashAuto[0] != ARGNAME { // if this is not the name of the command, the user already started doing something return } if argv.BashAuto[0] == ARGNAME { me.pp.WriteHelp(os.Stderr) return } } func (args) doBashAuto() { switch argv.BashAuto[0] { case "list": fmt.Println("") case "verify": fmt.Println("on") case "upgrade": fmt.Println("") default: if argv.BashAuto[0] == ARGNAME { // list the subcommands here fmt.Println("help list") } } os.Exit(0) }