package main import ( "os" "go.wit.com/gui" "go.wit.com/lib/fhelp" "go.wit.com/lib/gui/prep" ) /* this parses the command line arguements this enables command line options from other packages like 'gui' and 'log' */ type args struct { Quick *QuickCmd `arg:"subcommand:quick" help:"only do repos with patches"` DryRun bool `arg:"--dry-run,env:DRYRUN" help:"don't actually do the release"` Minor bool `arg:"--minor" help:"increment minor verion numbers"` Protobuf bool `arg:"--protobuf" help:"increment protobuf repos"` KeepGOMOD bool `arg:"--keep-gomod" help:"keep go.* and *.pb.go files in master"` Verbose bool `arg:"--verbose" help:"talk alot"` Full bool `arg:"--full" help:"build every package"` Reason string `arg:"--reason" help:"tag message"` Force bool `arg:"--force" help:"try harder than normal"` AutoRun bool `arg:"--auto-run" help:"automatically process everything"` Port int `arg:"--port" default:"9419" help:"do fun stuff with curl"` } func (args) Examples() string { var out string out += "guireleaser --full # release everything\n" return out } type QuickCmd struct { List *EmptyCmd `arg:"subcommand:list" help:"list available patches"` Show *EmptyCmd `arg:"subcommand:show" help:"show a specific patch"` NoLibs *EmptyCmd `arg:"subcommand:show" help:"skip libraries that aren't changed"` } type EmptyCmd struct { } func (a args) Description() string { return ` Example usage: guireleaser go.wit.com/apps/go-clone --increment --release --dry-run --reason "blerg" This will pull down the go sources and the repositories in the go.sum file using git clone` } func (args) Version() string { return "guireleaser " + VERSION } /* handles shell autocomplete */ func (args) Appname() string { return ARGNAME } func (args) Buildtime() (string, string) { return BUILDTIME, VERSION } func (args) ArgvGui() error { me.myGui = fhelp.Gui() // adds the GUI package argv support me.origGui = gui.New() return nil } func (a args) DoAutoComplete(pb *prep.Auto) { if pb.Cmd == "" { pb.Autocomplete3([]string{"--bash", "quick", "--dry-run", "--full", "--reason", "--version", "--auto-run", "--keep-gomod"}) } else { pb.SubCommand(pb.Goargs...) } os.Exit(0) }