summaryrefslogtreecommitdiff
path: root/bash.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-09-18 07:30:04 -0500
committerJeff Carr <[email protected]>2025-09-18 07:30:04 -0500
commitfec80aca170e85e9bb8c122ae2c6c2283930f252 (patch)
tree39591ce1b2b561544a31a31ba9688a386ada69cd /bash.go
parent1522a2fef0ed356f12a5c9cc011cdad6b4cd4a05 (diff)
rename files
Diffstat (limited to 'bash.go')
-rw-r--r--bash.go118
1 files changed, 0 insertions, 118 deletions
diff --git a/bash.go b/bash.go
deleted file mode 100644
index e0d23bd..0000000
--- a/bash.go
+++ /dev/null
@@ -1,118 +0,0 @@
-package prep
-
-// initializes logging and command line options
-
-import (
- "fmt"
- "os"
- "path/filepath"
- "strings"
-
- "go.wit.com/dev/alexflint/arg"
- "go.wit.com/lib/gui/shell"
- "go.wit.com/log"
-)
-
-var argBash ArgsBash
-
-/*
-This struct can be used with the go-arg package. These
-are the generic default command line arguments for the 'GUI' package
-*/
-type ArgsBash struct {
- Bash bool `arg:"--bash" help:"generate bash completion"`
-}
-
-var myBash *BashAuto
-
-type BashAuto struct {
- id int // should be unique
- hidden bool // don't update the toolkits when it's hidden
- Auto func([]string)
- appName string // a good way to track the name of the binary ?
-}
-
-/*
-func dumpjunk() {
- fmt.Fprintln(os.Stderr, "")
- fmt.Fprintln(os.Stderr, os.Args)
- os.Exit(0)
-}
-*/
-
-// argname is the name of the executable
-func Bash(argname string, autocomplete func([]string)) *BashAuto {
- if len(os.Args) > 1 && os.Args[1] == "--bash" {
- doBash(argname)
- os.Exit(0)
- }
-
- if len(os.Args) > 1 && os.Args[1] == "--auto-complete" {
- autocomplete(os.Args[2:])
- os.Exit(0)
- }
-
- arg.Register(&argBash)
-
- myBash = new(BashAuto)
- myBash.appName = argname
-
- // parse go.Arg here?
- return myBash
-}
-
-// print out auto complete debugging info
-func (pb *Auto) AutoDebug() {
- dur := pb.Duration.AsDuration()
- pb.Debugf("AUTOCOMPLETE: arg0='%s' arg1='%s' partial='%s' cmd='%s' age=%s argv=%v\n", pb.Arg0, pb.Arg1, pb.Partial, pb.Cmd, shell.FormatDuration(dur), pb.Argv)
- // fmt.Println("--all --gui --verbose --force")
-}
-
-// returns the last command (is blank if the current arg is not blank)
-func GetLast(cur string, argv []string) string {
- if cur != "''" {
- return ""
- }
- for _, s := range argv {
- if strings.HasPrefix(s, "-") {
- continue
- }
- return s
- }
- return ""
-}
-
-// returns the name of the executable registered for shell autocomplete
-func AppName() string {
- return myBash.appName
-}
-
-// makes a bash autocomplete file for your command
-func doBash(argname string) {
- fmt.Println(makeBashCompletionText(argname))
-
- homeDir, err := os.UserHomeDir()
- if err != nil {
- log.Printf("%v\n", err)
- os.Exit(0)
- }
- filename := filepath.Join(homeDir, ".local/share/bash-completion/completions", argname)
- if shell.Exists(filename) {
- log.Println(filename, "file already exists")
- os.Exit(0)
- }
- basedir, _ := filepath.Split(filename)
- if !shell.IsDir(basedir) {
- os.MkdirAll(basedir, os.ModePerm)
- }
-
- if f, err := os.OpenFile(filename, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644); err == nil {
- f.Write([]byte(makeBashCompletionText(argname)))
- f.Close()
- log.Println("bash file created:", filename)
- log.Println("restart bash")
- } else {
- log.Info(filename, err)
- }
- os.Exit(0)
-}