summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--argv.go42
-rw-r--r--argvAutoshell.go97
-rw-r--r--main.go20
-rw-r--r--structs.go3
4 files changed, 48 insertions, 114 deletions
diff --git a/argv.go b/argv.go
index 8dfaffa..e6651a5 100644
--- a/argv.go
+++ b/argv.go
@@ -1,5 +1,11 @@
package main
+import (
+ "fmt"
+ "os"
+ "os/user"
+)
+
/*
this parses the command line arguements
@@ -41,3 +47,39 @@ the repositories in the go.sum file using git clone`
func (args) Version() string {
return "guireleaser " + VERSION
}
+
+/*
+ handles shell autocomplete
+*/
+
+func (a args) DoAutoComplete(argv []string) {
+ switch argv[0] {
+ case "checkout":
+ usr, _ := user.Current()
+ fmt.Println("user devel master " + usr.Username)
+ case "commit":
+ fmt.Println("--all")
+ case "config":
+ fmt.Println("add fix list delete")
+ case "list":
+ fmt.Println("--all --mine --favorites --private")
+ case "pull":
+ fmt.Println("--all --mine --favorites --private")
+ case "patch":
+ fmt.Println("--list --submit --show")
+ case "dirty":
+ fmt.Println("--show-files")
+ case "user":
+ fmt.Println("--force")
+ case "devel":
+ fmt.Println("--force")
+ case "master":
+ fmt.Println("--force")
+ default:
+ if argv[0] == ARGNAME {
+ // list the subcommands here
+ fmt.Println("--bash quick")
+ }
+ }
+ os.Exit(0)
+}
diff --git a/argvAutoshell.go b/argvAutoshell.go
deleted file mode 100644
index fb46ff5..0000000
--- a/argvAutoshell.go
+++ /dev/null
@@ -1,97 +0,0 @@
-package main
-
-import (
- "fmt"
- "os"
- "os/user"
-)
-
-/*
- handles shell autocomplete
-*/
-
-// used for shell auto completion
-// var ARGNAME string = "forge" // todo: get this from $0 ?
-
-func (args) doBashAuto() {
- argv.doBashHelp()
- switch argv.BashAuto[0] {
- case "checkout":
- usr, _ := user.Current()
- fmt.Println("user devel master " + usr.Username)
- case "commit":
- fmt.Println("--all")
- case "config":
- fmt.Println("add fix list delete")
- case "list":
- fmt.Println("--all --mine --favorites --private")
- case "pull":
- fmt.Println("--all --mine --favorites --private")
- case "patch":
- fmt.Println("--list --submit --show")
- case "dirty":
- fmt.Println("--show-files")
- case "user":
- fmt.Println("--force")
- case "devel":
- fmt.Println("--force")
- case "master":
- fmt.Println("--force")
- default:
- if argv.BashAuto[0] == ARGNAME {
- // list the subcommands here
- fmt.Println("--bash quick")
- }
- }
- os.Exit(0)
-}
-
-// 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, "")
-}
-
-// complete -F forge --bash forge
-func (args) doBash() {
- fmt.Println("# add this in your bashrc:")
- fmt.Println("")
- fmt.Println("# todo: add this to go-arg as a 'hidden' go-arg option --bash")
- fmt.Println("#")
- fmt.Println("# todo: make this output work/parse with:")
- fmt.Println("# complete -C " + ARGNAME + " --bash go")
- fmt.Println("")
- fmt.Println("_" + ARGNAME + "_complete()")
- fmt.Println("{")
- fmt.Println(" # sets local to this func vars")
- fmt.Println(" local cur prev all")
- fmt.Println(" cur=${COMP_WORDS[COMP_CWORD]}")
- fmt.Println(" prev=${COMP_WORDS[COMP_CWORD-1]}")
- fmt.Println(" all=${COMP_WORDS[@]}")
- fmt.Println("")
- fmt.Println(" # this is where we generate the go-arg output")
- fmt.Println(" GOARGS=$(" + ARGNAME + " --auto-complete $prev \\'$cur\\' $all)")
- fmt.Println("")
- fmt.Println(" # this compares the command line input from the user")
- fmt.Println(" # to whatever strings we output")
- fmt.Println(" COMPREPLY=( $(compgen -W \"$GOARGS\" -- $cur) ) # THIS WORKS")
- fmt.Println(" return 0")
- fmt.Println("}")
- fmt.Println("complete -F _" + ARGNAME + "_complete " + ARGNAME)
- fmt.Println("")
- fmt.Println("# copy and paste the above into your bash shell should work")
- os.Exit(0)
-}
diff --git a/main.go b/main.go
index fec3f9a..c140b97 100644
--- a/main.go
+++ b/main.go
@@ -8,9 +8,9 @@ import (
"path/filepath"
"go.wit.com/dev/alexflint/arg"
- "go.wit.com/gui"
"go.wit.com/lib/fhelp"
"go.wit.com/lib/gadgets"
+ "go.wit.com/lib/gui/prep"
"go.wit.com/lib/gui/shell"
"go.wit.com/lib/protobuf/forgepb"
"go.wit.com/lib/protobuf/gitpb"
@@ -27,20 +27,10 @@ var argv args
func main() {
me = new(autoType)
-
- // parse the command line
- gui.InitArg()
+ prep.Bash(ARGNAME, argv.DoAutoComplete) // this line should be: prep.Bash(argv)
+ me.myGui = prep.Gui() // prepares the GUI package for go-args
me.pp = arg.MustParse(&argv)
- if argv.Bash {
- argv.doBash()
- os.Exit(0)
- }
- if len(argv.BashAuto) != 0 {
- argv.doBashAuto()
- os.Exit(0)
- }
-
// load the ~/.config/forge/ config
me.forge = forgepb.Init()
me.found = new(gitpb.Repos)
@@ -62,9 +52,7 @@ func main() {
// user drops to a shell or xterm, then they shouldn't be set there either
os.Unsetenv("GO111MODULE")
- me.myGui = gui.New()
- me.myGui.InitEmbed(resources)
- me.myGui.Default()
+ me.myGui.Start() // loads the GUI toolkit
// our main window
me.mainWindow = gadgets.RawBasicWindow("GUI release manager " + VERSION)
diff --git a/structs.go b/structs.go
index 61b134a..3c0bd2f 100644
--- a/structs.go
+++ b/structs.go
@@ -5,6 +5,7 @@ import (
"go.wit.com/dev/alexflint/arg"
"go.wit.com/gui"
"go.wit.com/lib/gadgets"
+ "go.wit.com/lib/gui/prep"
"go.wit.com/lib/protobuf/forgepb"
"go.wit.com/lib/protobuf/gitpb"
)
@@ -13,7 +14,7 @@ var me *autoType
type autoType struct {
pp *arg.Parser // for parsing the command line args. Yay to alexf lint!
- myGui *gui.Node // the gui handle itself
+ myGui *prep.GuiPrep // the gui handle itself
releaseReasonS string // = "gocui dropdown select"
release releaseStruct // notsure
reposbox *gui.Node // notsure