diff options
| author | Jeff Carr <[email protected]> | 2025-10-19 05:29:27 -0500 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-10-19 05:29:27 -0500 |
| commit | 6ca452fb52c847c92704b9cd6ad13c91234eadbf (patch) | |
| tree | 17644390434dd4ec1fe0d9b073b671669bb0f623 | |
| parent | 4802283a2819d977f2f1d2e052ce30dbc00b3489 (diff) | |
new argvv0.0.20
| -rw-r--r-- | argv.custom.go | 20 | ||||
| -rw-r--r-- | argv.go | 35 | ||||
| -rw-r--r-- | argv.struct.go | 10 | ||||
| -rw-r--r-- | argv.template.go | 80 | ||||
| -rw-r--r-- | main.go | 8 | ||||
| -rw-r--r-- | structs.go | 19 |
6 files changed, 133 insertions, 39 deletions
diff --git a/argv.custom.go b/argv.custom.go new file mode 100644 index 0000000..62c494a --- /dev/null +++ b/argv.custom.go @@ -0,0 +1,20 @@ +package main + +/* + this parses the command line arguements +*/ + +// are sent via -ldflags at buildtime +var VERSION string +var BUILDTIME string + +var APPNAME string = "going2git" + +func (a args) Description() string { + return ` +This is a demo of git2go to show how it works. + +Actually, I don't know how to use libgit2 or git2go yet so really this is just +an example of how to compile something against it. +` +} diff --git a/argv.go b/argv.go deleted file mode 100644 index f9b676c..0000000 --- a/argv.go +++ /dev/null @@ -1,35 +0,0 @@ -package main - -/* - this parses the command line arguements -*/ - -import ( - "go.wit.com/dev/alexflint/arg" -) - -var argv args - -type args struct { - RepoPath string `arg:"--repo" default:"./" help:"path to the .git repo"` - Hostname string `arg:"--hostname" help:"hostname to use"` - Refs bool `arg:"--refs" help:"list the git ref hashes"` - Tag string `arg:"--tag" help:"what tag name to walk"` -} - -func (args) Version() string { - return "going2git " + VERSION + " Built on " + BUILDTIME -} - -func init() { - arg.MustParse(&argv) -} - -func (a args) Description() string { - return ` -This is a demo of git2go to show how it works. - -Actually, I don't know how to use libgit2 or git2go yet so really this is just -an example of how to compile something against it. -` -} diff --git a/argv.struct.go b/argv.struct.go new file mode 100644 index 0000000..ce285ac --- /dev/null +++ b/argv.struct.go @@ -0,0 +1,10 @@ +package main + +var argv args + +type args struct { + RepoPath string `arg:"--repo" default:"./" help:"path to the .git repo"` + Hostname string `arg:"--hostname" help:"hostname to use"` + Refs bool `arg:"--refs" help:"list the git ref hashes"` + Tag string `arg:"--tag" help:"what tag name to walk"` +} diff --git a/argv.template.go b/argv.template.go new file mode 100644 index 0000000..e7a9948 --- /dev/null +++ b/argv.template.go @@ -0,0 +1,80 @@ +package main + +// these are stubbed in functions needed +// just copy this file from another working app for now +// you shouldn't need to change anything here +// TODO: clean this up in argv + +import ( + "os" + + "go.wit.com/dev/alexflint/arg" + "go.wit.com/gui" + "go.wit.com/lib/fhelp" + "go.wit.com/log" +) + +func (args) InitArgv() (string, string, string) { + return APPNAME, BUILDTIME, VERSION +} + +// this function will send the current argv PB to go-args for parsing +func (args) ParseFlags(flags []string) error { + var err error + if me.pp == nil { + // log.Info("Parse Flags GOT flags:", flags) + me.pp, err = arg.ParseFlags(flags, &argv) + // panic("got to the app's ParseFlags()") + } else { + panic("me.pp was not nil") + } + return err +} + +// add this funcgion: this will print the help +func (args) WriteHelpForSubcommand(cmd string) error { + me.pp.WriteHelpForSubcommand(os.Stderr, cmd) + return nil +} + +// this will print the help for the subcmd +func (args) WriteHelpForAutocomplete(part string, subcmd ...string) error { + return me.pp.WriteHelpForAutocomplete(os.Stderr, os.Stdout, part, subcmd...) +} + +func (args) WriteHelpForAutocompleteDebug(part string, subcmd ...string) error { + f, _ := os.OpenFile("/tmp/argv.junk", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) + return me.pp.WriteHelpForAutocomplete(f, os.Stdout, part, subcmd...) +} + +// add this funcgion: this will print the help +func (args) WriteHelp() error { + me.pp.WriteHelp(os.Stderr) + return nil +} + +func (args) InitGui() error { + // panic("got here") + arg.Register(&gui.ArgvGui) + // me.gui = gui.PreInit() + me.myGui = fhelp.Gui() + return nil +} + +func (args) Exit() { + gui.UnloadToolkits() + if me.argv.Verbose() { + log.Info("argv.Exit() called", APPNAME+".Exit()") + } + // remove this from the template for your app (or make one for youself if you need it) + // forgeExit() // custom forge shutdown function +} + +func (args) Help() string { + return "got app help" +} + +func (args) MustParse() error { + me.pp = arg.MustParse(&argv) + return nil +} @@ -4,14 +4,14 @@ import ( "os" git "go.wit.com/lib/libgit2" + "go.wit.com/lib/protobuf/argvpb" "go.wit.com/log" ) -// are sent via -ldflags at buildtime -var VERSION string -var BUILDTIME string - func main() { + me = new(autoType) + me.argv = argvpb.Autocomplete(&argv) // adds shell auto complete to go-args + var repo *git.Repository if argv.Refs { repo, _ = showRefs() diff --git a/structs.go b/structs.go new file mode 100644 index 0000000..eefb588 --- /dev/null +++ b/structs.go @@ -0,0 +1,19 @@ +// Copyright 2017-2025 WIT.COM Inc. All rights reserved. +// Use of this source code is governed by the GPL 3.0 + +package main + +import ( + "go.wit.com/dev/alexflint/arg" + "go.wit.com/lib/fhelp" + "go.wit.com/lib/protobuf/argvpb" +) + +var me *autoType + +// this app's variables +type autoType struct { + argv *argvpb.Argv // more experiments for bash handling + pp *arg.Parser // for parsing the command line args. Yay to alexf lint! + myGui *fhelp.GuiPrep // for initializing the GUI toolkits +} |
