diff options
| -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 +}  | 
