package main import ( "os" "go.wit.com/lib/protobuf/argvpb" ) /* this parses the command line arguements this enables command line options from other packages like 'gui' and 'log' */ // argv *argvpb.Argv // more experiments for bash handling // me.argv = argvpb.Autocomplete(&argv) // adds shell auto complete to go-args var argv args type args struct { Repo string `arg:"positional" help:"go import path"` AutoWork bool `arg:"--work" default:"false" help:"recreate the go.work file"` DryRun bool `arg:"--dry-run" help:"show what would be run"` NonRecursive bool `arg:"--non-recursive" help:"recursively clone all dependencies"` Build bool `arg:"--build" help:"try to build it after clone"` Install bool `arg:"--install" help:"try to install it after clone"` Ignore bool `arg:"--ignore" default:"false" help:"ignore weird clone errors from non-standard repos"` // Fetch bool `arg:"--git-fetch" default:"false" help:"run 'git fetch' on all your repos"` } func (args) Version() string { return "go-clone " + VERSION + " Built on " + BUILDTIME } func (args) Buildtime() (string, string) { return BUILDTIME, VERSION } func (a args) Description() string { return ` git clone go repositories recursively Examples: go-clone go.wit.com/apps/go-clone # 'git clone' go-clone ` } func (args) Appname() string { return ARGNAME } func (a args) DoAutoComplete(pb *argvpb.Argv) { // fmt.Fprintf(os.Stderr, "blah\n") // fmt.Fprintf(os.Stderr, "\n") if pb.Cmd == "" { pb.SendStrings([]string{"--dry-run", "--non-recursive", "--work", "--version"}) } else { pb.SubCommand(pb.Goargs...) } os.Exit(0) }