diff options
| author | Jeff Carr <[email protected]> | 2025-10-12 02:23:18 -0500 |
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-10-12 02:23:18 -0500 |
| commit | 90524977ef3603b50f3744884b6906d2216e1b28 (patch) | |
| tree | dbf63e54d67d34ffe3f03b4a8f04b83b65d9af87 /bash.go | |
| parent | 0c84559372b1d4c293ac10aa2b6de6e53ebb1163 (diff) | |
moved to .cache/argv/
Diffstat (limited to 'bash.go')
| -rw-r--r-- | bash.go | 156 |
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 "$@" - -*/ |
