diff options
| author | Jeff Carr <[email protected]> | 2025-10-25 01:20:39 -0500 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-10-25 01:20:39 -0500 |
| commit | 0653bd60ce9276ad6245b25c60f37aefd0d1408a (patch) | |
| tree | d16a8d5e55f42da3c0790d4d69060c3e180b8476 | |
| parent | 16dd7c48c92289b6ff748db1cfd8bd9707acc892 (diff) | |
hmm. this is going to be complicated and convoluted
it feels like it is going to be impossible to handle
what all the cases because everyone does different things.
so, when that is the case in software development,
often it is the best idea at the start to
DO WHAT YOU WANT & NEED AND IGNORE EVERYTHING ELSE
then see how it turns out and go from there.
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | argv.custom.go | 29 | ||||
| -rw-r--r-- | argv.struct.go | 15 | ||||
| -rw-r--r-- | main.go | 14 | ||||
| -rw-r--r-- | parseArgvStruct.go | 32 | ||||
| -rw-r--r-- | resources/README.md | 1 | ||||
| -rw-r--r-- | structs.go | 17 |
7 files changed, 109 insertions, 0 deletions
@@ -3,3 +3,4 @@ go.* *.patch *.mbox *.pb.go +argv diff --git a/argv.custom.go b/argv.custom.go new file mode 100644 index 0000000..c6774a5 --- /dev/null +++ b/argv.custom.go @@ -0,0 +1,29 @@ +// Copyright 2017-2025 WIT.COM Inc. All rights reserved. +// Use of this source code is governed by the GPL 3.0 + +package main + +import ( + "os" + + "go.wit.com/lib/protobuf/argvpb" +) + +// sent via -ldflags +var VERSION string +var BUILDTIME string + +// used for shell auto completion +var APPNAME string = "mirrors" // todo: get this from $0 + +// sends the strings to bash or zsh that will be your options +func (a args) SendCompletionStrings(pb *argvpb.Argv) { + base := []string{"--dry-run", "--force", "incoming", "walk", "list", "everything", "verify", "newest", "--create", "--verbose", "release"} + + if pb.GetCmd() == "" { + pb.SendStrings(base) + } else { + pb.SubCommand(pb.Goargs...) + } + os.Exit(0) +} diff --git a/argv.struct.go b/argv.struct.go new file mode 100644 index 0000000..4a1db02 --- /dev/null +++ b/argv.struct.go @@ -0,0 +1,15 @@ +// Copyright 2017-2025 WIT.COM Inc. All rights reserved. +// Use of this source code is governed by the GPL 3.0 + +package main + +var argv args + +type args struct { + Test *EmptyCmd `arg:"subcommand:test" help:"test"` + Verbose bool `arg:"--verbose" help:"be loud about it"` + Force bool `arg:"--force" help:"rebuild everything"` +} + +type EmptyCmd struct { +} @@ -0,0 +1,14 @@ +package main + +import ( + "embed" +) + +//go:embed resources/* +var resources embed.FS + +func main() { + me = new(mainType) + + parseArgvStruct() +} diff --git a/parseArgvStruct.go b/parseArgvStruct.go new file mode 100644 index 0000000..d8ef1ac --- /dev/null +++ b/parseArgvStruct.go @@ -0,0 +1,32 @@ +package main + +import ( + "bufio" + "os" + "strings" + + "go.wit.com/lib/protobuf/argvpb" + "go.wit.com/log" +) + +func parseArgvStruct() (*argvpb.Argv, error) { + file, err := os.Open("argv.struct.go") + if err != nil { + return nil, err + } + + pb := argvpb.NewArgvs() + + scanner := bufio.NewScanner(file) + for scanner.Scan() { + line := scanner.Text() + line = strings.TrimSpace(line) + log.Info("LINE:", line) + parts := strings.Fields(line) + if len(parts) > 0 { + pb.Fast = true + } + } + + return pb, nil +} diff --git a/resources/README.md b/resources/README.md new file mode 100644 index 0000000..1b50248 --- /dev/null +++ b/resources/README.md @@ -0,0 +1 @@ +# a binary to help with bash autocomplete diff --git a/structs.go b/structs.go new file mode 100644 index 0000000..d295f3c --- /dev/null +++ b/structs.go @@ -0,0 +1,17 @@ +package main + +import ( + "go.wit.com/dev/alexflint/arg" + "go.wit.com/lib/protobuf/argvpb" +) + +var me *mainType + +// this app's variables +type mainType 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 + // forge *forgepb.Forge // your customized repo preferences and settings + // pb *zoopb.Packages // the mirrors packages +} |
