77 lines
3.1 KiB
Go
77 lines
3.1 KiB
Go
package main
|
|
|
|
import "go.wit.com/log"
|
|
|
|
/*
|
|
this parses the command line arguements
|
|
|
|
this enables command line options from other packages like 'gui' and 'log'
|
|
*/
|
|
|
|
var argv args
|
|
|
|
type args struct {
|
|
List *ListCmd `arg:"subcommand:list" help:"list things"`
|
|
Droplet *DropletCmd `arg:"subcommand:droplet" help:"send events to a droplet"`
|
|
Config string `arg:"env:VIRTIGO_HOME" help:"defaults to ~/.config/virtigo/"`
|
|
Server string `arg:"env:VIRTIGO_SERVER" help:"what virtigo cluster to connect to"`
|
|
Localhost bool `arg:"--localhost" help:"use the local libvirt"`
|
|
Daemon bool `arg:"--daemon" help:"run as a daemon"`
|
|
Verbose bool `arg:"--verbose" help:"talk more"`
|
|
Port int `arg:"--port" default:"8080" help:"allow droplet events via http"`
|
|
Xml []string `arg:"--libvirt" help:"import qemu xml files: --libvirt /etc/libvirt/qemu/*.xml"`
|
|
Admin bool `arg:"--admin" help:"enter admin mode"`
|
|
Bash bool `arg:"--bash" help:"generate bash completion"`
|
|
BashAuto []string `arg:"--auto-complete" help:"todo: move this to go-arg"`
|
|
}
|
|
|
|
type EmptyCmd struct {
|
|
}
|
|
|
|
type testCmd string
|
|
|
|
type ListCmd struct {
|
|
Droplets *EmptyCmd `arg:"subcommand:droplets" help:"list droplets"`
|
|
Hypervisors *EmptyCmd `arg:"subcommand:hypervisors" help:"list hypervisors"`
|
|
On bool `arg:"--on" help:"only show things that are on"`
|
|
}
|
|
|
|
type DropletCmd struct {
|
|
Start *EmptyCmd `arg:"subcommand:start" help:"start droplet"`
|
|
Stop *EmptyCmd `arg:"subcommand:stop" help:"stop droplet"`
|
|
Show *EmptyCmd `arg:"subcommand:show" help:"show droplet"`
|
|
Console *EmptyCmd `arg:"subcommand:console" help:"open serial console"`
|
|
VNC *EmptyCmd `arg:"subcommand:vnc" help:"open VNC console"`
|
|
Spice *EmptyCmd `arg:"subcommand:spice" help:"open spiceconsole"`
|
|
Name string `arg:"--name" help:"what droplet to start"`
|
|
}
|
|
|
|
func (a args) Description() string {
|
|
return `
|
|
virtigo: control your cluster
|
|
|
|
This maintains a master list of all your vm's (aka 'droplets')
|
|
in your homelab cloud. You can import libvirt xml files.
|
|
This app talks to your hypervisors via the virtigod daemon.
|
|
`
|
|
}
|
|
|
|
func (args) Version() string {
|
|
return ARGNAME + " " + VERSION + " Built on " + BUILDTIME
|
|
}
|
|
|
|
var INFO *log.LogFlag
|
|
var POLL *log.LogFlag
|
|
var WARN *log.LogFlag
|
|
var EVENT *log.LogFlag
|
|
|
|
func init() {
|
|
full := "go.wit.com/apps/virtigo"
|
|
short := "virtigo"
|
|
|
|
INFO = log.NewFlag("INFO", false, full, short, "general virtigo")
|
|
POLL = log.NewFlag("POLL", false, full, short, "virtigo polling")
|
|
WARN = log.NewFlag("WARN", true, full, short, "bad things")
|
|
EVENT = log.NewFlag("EVENT", true, full, short, "hypeprvisor/droplet events")
|
|
}
|