summaryrefslogtreecommitdiff
path: root/bash.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-10-12 02:23:18 -0500
committerJeff Carr <[email protected]>2025-10-12 02:23:18 -0500
commit90524977ef3603b50f3744884b6906d2216e1b28 (patch)
treedbf63e54d67d34ffe3f03b4a8f04b83b65d9af87 /bash.go
parent0c84559372b1d4c293ac10aa2b6de6e53ebb1163 (diff)
moved to .cache/argv/
Diffstat (limited to 'bash.go')
-rw-r--r--bash.go156
1 files changed, 0 insertions, 156 deletions
diff --git a/bash.go b/bash.go
deleted file mode 100644
index 0cef75c..0000000
--- a/bash.go
+++ /dev/null
@@ -1,156 +0,0 @@
-package prep
-
-// initializes logging and command line options
-
-import (
- "fmt"
- "io/ioutil"
- "os"
- "strings"
-)
-
-// deprecate this
-func Bash3(dest any) *Auto {
- return Autocomplete(dest)
-}
-
-// deprecate this
-func Bash(dest any) *Auto {
- return Autocomplete(dest)
-}
-
-func makeCompletionText(argname string) string {
- sh := getParentProcessName()
- return fmt.Sprintf("# shell might be %s", sh)
-}
-
-func makeBashCompletionText(argname string) string {
- var out string
-
- out += fmt.Sprintf("# add this in your bashrc:\n")
- out += fmt.Sprintf("\n")
- out += fmt.Sprintf("# todo: add this to go-arg as a 'hidden' go-arg option --bash\n")
- out += fmt.Sprintf("#\n")
- out += fmt.Sprintf("# Put the below in the file: ~/.local/share/bash-completion/completions/%s\n", argname)
- out += fmt.Sprintf("#\n")
- out += fmt.Sprintf("# todo: make this output work/parse with:\n")
- out += fmt.Sprintf("# complete -C %s --bash go\n", argname)
- out += fmt.Sprintf("\n")
- out += fmt.Sprintf("_%s_complete()\n", argname)
- out += fmt.Sprintf("{\n")
- out += fmt.Sprintf(" # sets local to this func vars\n")
- out += fmt.Sprintf(" local cur prev all\n")
- out += fmt.Sprintf(" cur=${COMP_WORDS[COMP_CWORD]}\n")
- out += fmt.Sprintf(" prev=${COMP_WORDS[COMP_CWORD-1]}\n")
- out += fmt.Sprintf(" all=${COMP_WORDS[@]}\n")
- out += fmt.Sprintf("\n")
- out += fmt.Sprintf(" # this is where we generate the go-arg output\n")
- out += fmt.Sprintf(" GOARGS=$(%s --auto-complete $prev \\'$cur\\' $all)\n", argname)
- out += fmt.Sprintf("\n")
- out += fmt.Sprintf(" # this compares the command line input from the user\n")
- out += fmt.Sprintf(" # to whatever strings we output\n")
- out += fmt.Sprintf(" COMPREPLY=( $(compgen -W \"$GOARGS\" -- $cur) ) # THIS WORKS\n")
- out += fmt.Sprintf(" return 0\n")
- out += fmt.Sprintf("}\n")
- out += fmt.Sprintf("complete -F _%s_complete %s\n", argname, argname)
- out += fmt.Sprintf("\n")
- out += fmt.Sprintf("# copy and paste the above into your bash shell should work\n")
- return out
-}
-
-func makeBashCompletionText2(argname string) string {
- var out string
-
- out += fmt.Sprintf("# add this in your bashrc:\n")
- out += fmt.Sprintf("\n")
- out += fmt.Sprintf("# todo: add this to go-arg as a 'hidden' go-arg option --bash\n")
- out += fmt.Sprintf("#\n")
- out += fmt.Sprintf("# Put the below in the file: ~/.local/share/bash-completion/completions/%s\n", argname)
- out += fmt.Sprintf("#\n")
- out += fmt.Sprintf("# todo: make this output work/parse with:\n")
- out += fmt.Sprintf("# complete -C %s --bash go\n", argname)
- out += fmt.Sprintf("\n")
- out += fmt.Sprintf("_%s_complete()\n", argname)
- out += fmt.Sprintf("{\n")
- out += fmt.Sprintf(" # sets local to this func vars\n")
- out += fmt.Sprintf(" local cur prev all\n")
- out += fmt.Sprintf(" cur=${COMP_WORDS[COMP_CWORD]}\n")
- out += fmt.Sprintf(" # prev=${COMP_WORDS[COMP_CWORD-1]}\n")
- out += fmt.Sprintf(" all=${COMP_WORDS[@]}\n")
- out += fmt.Sprintf("\n")
- out += fmt.Sprintf(" # this is where we generate the go-arg output\n")
- out += fmt.Sprintf(" GOARGS=$(%s --auto-complete \\'$cur\\' $all)\n", argname)
- out += fmt.Sprintf("\n")
- out += fmt.Sprintf(" # this compares the command line input from the user\n")
- out += fmt.Sprintf(" # to whatever strings we output\n")
- out += fmt.Sprintf(" COMPREPLY=( $(compgen -W \"$GOARGS\" -- $cur) ) # THIS WORKS\n")
- out += fmt.Sprintf(" return 0\n")
- out += fmt.Sprintf("}\n")
- out += fmt.Sprintf("complete -F _%s_complete %s\n", argname, argname)
- out += fmt.Sprintf("\n")
- out += fmt.Sprintf("# copy and paste the above into your bash shell should work\n")
- return out
-}
-
-func getParentProcessName() string {
- ppid := os.Getppid()
- // On Linux, the command name is in /proc/<pid>/comm
- commPath := fmt.Sprintf("/proc/%d/comm", ppid)
- content, err := ioutil.ReadFile(commPath)
- if err != nil {
- return "unknown"
- }
- // The file content has a trailing newline, so trim it.
- return strings.TrimSpace(string(content))
-}
-
-/*
-
- This script will be placed in a directory in your $fpath (e.g., ~/.zsh/completions/_my-app).
-
-#compdef my-app
-
-# This function will be called by Zsh to get the completions.
-_my_app_completions() {
- local -a suggestions
-
- # Here is the key part:
- # We execute our Go program with the hidden flag and capture its output.
- 9 # The `(f)` flag splits the output by line into an array.
- 10 suggestions=( ${(f)"$(my-app --_generate_completions)"} )
- 11
- 12 # Pass the suggestions to the Zsh completion engine.
- 13 _describe 'command' suggestions
- 14 }
- 15
- 16 # Tell Zsh to call our function when completing for my-app
- 17 _my_app_completions "$@"
-*/
-
-// zsh:
-/*
-#compdef forge
-
-# Zsh completion function for the 'forge' command.
-
-_forge_completions() {
- local -a words
- local -i CURRENT
-
- # Zsh's equivalent of Bash's COMP_WORDS and COMP_CWORD
- words=("${(@)words}")
- CURRENT=$CURRENT
-
- # Generate the completion suggestions by calling the forge command.
- # The output is split into an array.
- local -a suggestions
- suggestions=("${(@f)$(forge --auto-complete "'${words[CURRENT]}'" "${words[@]}")}")
-
- # Pass the suggestions to the Zsh completion system.
- _describe 'completions' suggestions
-}
-
-# Register the function to be called for the 'forge' command.
-_forge_completions "$@"
-
-*/