// 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 ( "os" "go.wit.com/lib/protobuf/argvpb" "go.wit.com/log" ) var argv args type args struct { Status *EmptyCmd `arg:"subcommand:status" help:"should display something"` Test *EmptyCmd `arg:"subcommand:test" help:"test stuff"` Daemon bool `arg:"--daemon" default:"false" help:"run in daemon mode"` Port int `arg:"--port" default:"2521" help:"port to run on"` URL string `arg:"--url" help:"url to use"` } type EmptyCmd struct { } func (a args) Description() string { return ` this daemon talks to zookeeper ` } var NOW *log.LogFlag var INFO *log.LogFlag var PING *log.LogFlag var WARN *log.LogFlag func init() { full := "go.wit.com/apps/zood" short := "zood" NOW = log.NewFlag("NOW", true, full, short, "useful while doing debugging") INFO = log.NewFlag("INFO", false, full, short, "general zood") PING = log.NewFlag("PING", false, full, short, "show pings to the zookeeper") WARN = log.NewFlag("WARN", true, full, short, "bad things") } func (args) Version() string { return argvpb.StandardVersion(ARGNAME, VERSION, BUILDTIME) } func (args) Buildtime() (string, string) { return BUILDTIME, VERSION } func (args) Appname() string { return ARGNAME } // sends the strings to bash or zsh that will be your options func (a args) SendCompletionStrings(pb *argvpb.Argv) { if pb.Cmd == "" { base := []string{"status", "test", "--version", "--daemon"} pb.SendStrings(base) } else { pb.SubCommand(pb.Goargs...) } os.Exit(0) }