From 7b1392bae94ebf20d6c2ebc60afd8c766c0e9188 Mon Sep 17 00:00:00 2001 From: Jeff Carr Date: Mon, 6 Jan 2025 21:29:19 -0600 Subject: [PATCH] more argv examples --- argv.go | 43 +++++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/argv.go b/argv.go index ee59a70..fb3bf17 100644 --- a/argv.go +++ b/argv.go @@ -6,11 +6,25 @@ import ( ) /* - this parses the command line arguements + this parses the command line arguements using alex flint's go-arg */ var argv args +type args struct { + Checkout *CheckoutCmd `arg:"subcommand:checkout" help:"switch git branches"` + Config *ConfigCmd `arg:"subcommand:config" help:"show your .config/forge/ settings"` + Dirty *EmptyCmd `arg:"subcommand:dirty" help:"check if your git repos are dirty"` + GitReset *EmptyCmd `arg:"subcommand:hard-reset" help:"hard reset your user git branches"` + List *FindCmd `arg:"subcommand:list" help:"just show a table of the current state"` + Patch *PatchCmd `arg:"subcommand:patch" help:"examine and make patch sets"` + GitPull *FindCmd `arg:"subcommand:pull" help:"run 'git pull'"` + Rescan *EmptyCmd `arg:"subcommand:rescan" help:"recreate the git protobuf repos.pb file"` + URL string `arg:"--connect" help:"gowebd url"` + Bash bool `arg:"--bash" help:"generate bash completion"` + BashAuto []string `arg:"--auto-complete" help:"does the actual autocompletion"` +} + type EmptyCmd struct { } @@ -20,7 +34,8 @@ type PatchCmd struct { } type ConfigAddCmd struct { - GoPath string `arg:"--gopath" help:"gopath of the repo"` + Path string `arg:"--path" help:"absolute path of the git repo"` + GoPath string `arg:"--gopath" help:"GO path of the git repo"` Directory bool `arg:"--directory" default:"false" help:"repo is a directory to match against"` ReadOnly bool `arg:"--readonly" default:"false" help:"repo is readonly"` Writable bool `arg:"--writable" default:"false" help:"repo is writable"` @@ -55,20 +70,6 @@ type FindCmd struct { // ReadOnly bool `arg:"--readonly" help:"include read-only repos"` } -type args struct { - Checkout *CheckoutCmd `arg:"subcommand:checkout" help:"switch git branches"` - Config *ConfigCmd `arg:"subcommand:config" help:"show your .config/forge/ settings"` - Dirty *EmptyCmd `arg:"subcommand:dirty" help:"check if your git repos are dirty"` - GitReset *EmptyCmd `arg:"subcommand:hard-reset" help:"hard reset your user git branches"` - List *FindCmd `arg:"subcommand:list" help:"just show a table of the current state"` - Patch *PatchCmd `arg:"subcommand:patch" help:"examine and make patch sets"` - GitPull *FindCmd `arg:"subcommand:pull" help:"run 'git pull'"` - Rescan *EmptyCmd `arg:"subcommand:rescan" help:"recreate the git protobuf repos.pb file"` - URL string `arg:"--connect" help:"gowebd url"` - Bash bool `arg:"--bash" help:"generate bash completion"` - BashAuto []string `arg:"--auto-complete" help:"does the actual autocompletion"` -} - func (args) Version() string { return "forge " + VERSION + " Built on " + BUILDTIME } @@ -77,6 +78,10 @@ func (a args) Description() string { return ` forge -- in the spirit of things like sourceforge + This supports GO projects so far. + It will work from ~/go/src or where your go.work file is. + Since I mostly use ~/go/src, that has been tested more. + Examples: forge # opens the GUI forge list # show every repo state @@ -84,6 +89,12 @@ Examples: forge pull # run 'git pull' in every repo forge checkout # switch git branches + forge config add --private --path /opt/bob # add a private repo /opt/bob + forge config add --directory --writable \ + --gopath 'go.wit.com/user/bob' # directory contains r/w repos + forge config add --private --writeable \ + --gopath 'go.wit.com/user/bob/work' # a GO repo that can not be published + ` }