98 lines
2.5 KiB
Go
98 lines
2.5 KiB
Go
// 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)
|
|
}
|