package main import ( "fmt" "os" ) /* this parses the command line arguements this enables command line options from other packages like 'gui' and 'log' */ type args struct { Commit *EmptyCmd `arg:"subcommand:commit" help:"'git commit' but errors out if on wrong branch"` Auto bool `arg:"--auto" help:"automatically attempt to make the .deb"` Ldflags []string `arg:"--ldflags" help:"flags to pass to go build"` Forge string `arg:"--forge" help:"use a git repo from forge"` OutDir string `arg:"--dir" help:"write .deb file into this directory"` Release bool `arg:"--release" help:"build a release from the last git tag"` KeepFiles bool `arg:"--keep-files" help:"keep the build files/"` Force bool `arg:"--force" default:"false" help:"force overwrite an existing .deb file"` Verbose bool `arg:"--verbose" help:"show more things"` Bash bool `arg:"--bash" help:"generate bash completion"` BashAuto []string `arg:"--auto-complete" help:"todo: move this to go-arg"` } func (args) Version() string { return "go-clone " + VERSION + " Built on " + DATE } 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` } // 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 } fmt.Fprintln(os.Stderr, "") fmt.Fprintln(os.Stderr, "hello world") fmt.Fprintln(os.Stderr, "") } func (args) doBashAuto() { // argv.doBashHelp() switch argv.BashAuto[0] { case "arch": fmt.Println("riscv64") case "build": fmt.Println("user devel release") default: if argv.BashAuto[0] == ARGNAME { // list the subcommands here fmt.Println("arch build") } } os.Exit(0) }