Fucking around with asdf ... #fish
This commit is contained in:
@ -1,70 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
_asdf () {
|
|
||||||
local cur
|
|
||||||
cur=${COMP_WORDS[COMP_CWORD]}
|
|
||||||
local cmd
|
|
||||||
cmd=${COMP_WORDS[1]}
|
|
||||||
local prev
|
|
||||||
prev=${COMP_WORDS[COMP_CWORD-1]}
|
|
||||||
local plugins
|
|
||||||
plugins=$(asdf plugin-list 2> /dev/null | tr '\n' ' ')
|
|
||||||
|
|
||||||
# We can safely ignore warning SC2207 since it warns that it will uses the
|
|
||||||
# shell's sloppy word splitting and globbing. The possible commands here are
|
|
||||||
# all single words, and most likely won't contain special chars the shell will
|
|
||||||
# expand.
|
|
||||||
COMPREPLY=()
|
|
||||||
|
|
||||||
case "$cmd" in
|
|
||||||
plugin-update)
|
|
||||||
# shellcheck disable=SC2207
|
|
||||||
COMPREPLY=($(compgen -W "$plugins --all" -- "$cur"))
|
|
||||||
;;
|
|
||||||
plugin-remove|current|list|list-all)
|
|
||||||
# shellcheck disable=SC2207
|
|
||||||
COMPREPLY=($(compgen -W "$plugins" -- "$cur"))
|
|
||||||
;;
|
|
||||||
plugin-add)
|
|
||||||
local available_plugins
|
|
||||||
available_plugins=$( (asdf plugin-list 2> /dev/null && asdf plugin-list-all 2> /dev/null) | sort | uniq -u)
|
|
||||||
# shellcheck disable=SC2207
|
|
||||||
COMPREPLY=($(compgen -W "$available_plugins" -- "$cur"))
|
|
||||||
;;
|
|
||||||
install)
|
|
||||||
if [[ "$plugins" == *"$prev"* ]] ; then
|
|
||||||
local versions
|
|
||||||
versions=$(asdf list-all "$prev" 2> /dev/null)
|
|
||||||
# shellcheck disable=SC2207
|
|
||||||
COMPREPLY=($(compgen -W "$versions" -- "$cur"))
|
|
||||||
else
|
|
||||||
# shellcheck disable=SC2207
|
|
||||||
COMPREPLY=($(compgen -W "$plugins" -- "$cur"))
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
update)
|
|
||||||
# shellcheck disable=SC2207
|
|
||||||
COMPREPLY=($(compgen -W "--head" -- "$cur"))
|
|
||||||
;;
|
|
||||||
uninstall|where|reshim|local|global)
|
|
||||||
if [[ "$plugins" == *"$prev"* ]] ; then
|
|
||||||
local versions
|
|
||||||
versions=$(asdf list "$prev" 2> /dev/null)
|
|
||||||
# shellcheck disable=SC2207
|
|
||||||
COMPREPLY=($(compgen -W "$versions" -- "$cur"))
|
|
||||||
else
|
|
||||||
# shellcheck disable=SC2207
|
|
||||||
COMPREPLY=($(compgen -W "$plugins" -- "$cur"))
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
local cmds='current global help install list list-all local plugin-add plugin-list plugin-list-all plugin-remove plugin-update reshim uninstall update where which '
|
|
||||||
# shellcheck disable=SC2207
|
|
||||||
COMPREPLY=($(compgen -W "$cmds" -- "$cur"))
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
complete -F _asdf asdf
|
|
||||||
@ -1,110 +0,0 @@
|
|||||||
function __fish_asdf_needs_command
|
|
||||||
set -l cmd (commandline -opc)
|
|
||||||
if test (count $cmd) -eq 1
|
|
||||||
return 0
|
|
||||||
end
|
|
||||||
return 1
|
|
||||||
end
|
|
||||||
|
|
||||||
function __fish_asdf_using_command -a current_command
|
|
||||||
set -l cmd (commandline -opc)
|
|
||||||
if test (count $cmd) -gt 1
|
|
||||||
if test $current_command = $cmd[2]
|
|
||||||
return 0
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return 1
|
|
||||||
end
|
|
||||||
|
|
||||||
function __fish_asdf_arg_number -a number
|
|
||||||
set -l cmd (commandline -opc)
|
|
||||||
test (count $cmd) -eq $number
|
|
||||||
end
|
|
||||||
|
|
||||||
function __fish_asdf_arg_at -a number
|
|
||||||
set -l cmd (commandline -opc)
|
|
||||||
echo $cmd[$number]
|
|
||||||
end
|
|
||||||
|
|
||||||
function __fish_asdf_list_versions -a plugin
|
|
||||||
asdf list $plugin 2> /dev/null | sed -e 's/^\s*//'
|
|
||||||
end
|
|
||||||
|
|
||||||
function __fish_asdf_list_all -a plugin
|
|
||||||
asdf list-all $plugin 2> /dev/null
|
|
||||||
end
|
|
||||||
|
|
||||||
function __fish_asdf_plugin_list
|
|
||||||
asdf plugin-list 2> /dev/null
|
|
||||||
end
|
|
||||||
|
|
||||||
function __fish_asdf_plugin_list_all
|
|
||||||
asdf plugin-list-all 2> /dev/null
|
|
||||||
end
|
|
||||||
|
|
||||||
# plugin-add completion
|
|
||||||
complete -f -c asdf -n '__fish_asdf_needs_command' -a plugin-add -d "Add git repo as plugin"
|
|
||||||
complete -f -c asdf -n '__fish_asdf_using_command plugin-add; and __fish_asdf_arg_number 2' -a '(__fish_asdf_plugin_list_all | grep -v \'*\' | awk \'{ print $1 }\')'
|
|
||||||
complete -f -c asdf -n '__fish_asdf_using_command plugin-add; and __fish_asdf_arg_number 3' -a '(__fish_asdf_plugin_list_all | grep (__fish_asdf_arg_at 3) | awk \'{ print $2 }\')'
|
|
||||||
complete -f -c asdf -n '__fish_asdf_using_command plugin-add; and __fish_asdf_arg_number 4'
|
|
||||||
|
|
||||||
# plugin-list completion
|
|
||||||
complete -f -c asdf -n '__fish_asdf_needs_command' -a plugin-list -d "List installed plugins"
|
|
||||||
|
|
||||||
# plugin-list-all completion
|
|
||||||
complete -f -c asdf -n '__fish_asdf_needs_command' -a plugin-list-all -d "List all existing plugins"
|
|
||||||
|
|
||||||
# plugin-remove completion
|
|
||||||
complete -f -c asdf -n '__fish_asdf_needs_command' -a plugin-remove -d "Remove plugin and package versions"
|
|
||||||
complete -f -c asdf -n '__fish_asdf_using_command plugin-remove; and __fish_asdf_arg_number 2' -a '(__fish_asdf_plugin_list)'
|
|
||||||
|
|
||||||
# plugin-update completion
|
|
||||||
complete -f -c asdf -n '__fish_asdf_needs_command' -a plugin-update -d "Update plugin"
|
|
||||||
complete -f -c asdf -n '__fish_asdf_using_command plugin-update; and __fish_asdf_arg_number 2' -a '(__fish_asdf_plugin_list)'
|
|
||||||
complete -f -c asdf -n '__fish_asdf_using_command plugin-update; and __fish_asdf_arg_number 2' -a --all
|
|
||||||
|
|
||||||
# install completion
|
|
||||||
complete -f -c asdf -n '__fish_asdf_needs_command' -a install -d "Install a specific version of a package"
|
|
||||||
complete -f -c asdf -n '__fish_asdf_using_command install; and __fish_asdf_arg_number 2' -a '(__fish_asdf_plugin_list)'
|
|
||||||
complete -f -c asdf -n '__fish_asdf_using_command install; and __fish_asdf_arg_number 3' -a '(__fish_asdf_list_all (__fish_asdf_arg_at 3))'
|
|
||||||
|
|
||||||
# uninstall completion
|
|
||||||
complete -f -c asdf -n '__fish_asdf_needs_command' -a uninstall -d "Remove a specific version of a package"
|
|
||||||
complete -f -c asdf -n '__fish_asdf_using_command uninstall; and __fish_asdf_arg_number 2' -a '(__fish_asdf_plugin_list)'
|
|
||||||
complete -f -c asdf -n '__fish_asdf_using_command uninstall; and __fish_asdf_arg_number 3' -a '(__fish_asdf_list_versions (__fish_asdf_arg_at 3))'
|
|
||||||
|
|
||||||
# current completion
|
|
||||||
complete -f -c asdf -n '__fish_asdf_needs_command' -a current -d "Display version set or being used for package"
|
|
||||||
complete -f -c asdf -n '__fish_asdf_using_command current; and __fish_asdf_arg_number 2' -a '(__fish_asdf_plugin_list)'
|
|
||||||
|
|
||||||
# where completion
|
|
||||||
complete -f -c asdf -n '__fish_asdf_needs_command' -a where -d "Display install path for an installed version"
|
|
||||||
complete -f -c asdf -n '__fish_asdf_using_command where; and __fish_asdf_arg_number 2' -a '(__fish_asdf_plugin_list)'
|
|
||||||
complete -f -c asdf -n '__fish_asdf_using_command where; and __fish_asdf_arg_number 3' -a '(__fish_asdf_list_versions (__fish_asdf_arg_at 3))'
|
|
||||||
|
|
||||||
# list completion
|
|
||||||
complete -f -c asdf -n '__fish_asdf_needs_command' -a list -d "List installed versions of a package"
|
|
||||||
complete -f -c asdf -n '__fish_asdf_using_command list; and __fish_asdf_arg_number 2' -a '(__fish_asdf_plugin_list)'
|
|
||||||
|
|
||||||
# list-all completion
|
|
||||||
complete -f -c asdf -n '__fish_asdf_needs_command' -a list-all -d "List all versions of a package"
|
|
||||||
complete -f -c asdf -n '__fish_asdf_using_command list-all; and __fish_asdf_arg_number 2' -a '(__fish_asdf_plugin_list)'
|
|
||||||
|
|
||||||
# reshim completion
|
|
||||||
complete -f -c asdf -n '__fish_asdf_needs_command' -a reshim -d "Recreate shims for version of a package"
|
|
||||||
complete -f -c asdf -n '__fish_asdf_using_command reshim; and __fish_asdf_arg_number 2' -a '(__fish_asdf_plugin_list)'
|
|
||||||
complete -f -c asdf -n '__fish_asdf_using_command reshim; and __fish_asdf_arg_number 3' -a '(__fish_asdf_list_versions (__fish_asdf_arg_at 3))'
|
|
||||||
|
|
||||||
# local completion
|
|
||||||
complete -f -c asdf -n '__fish_asdf_needs_command' -a local -d "Set local version for a plugin"
|
|
||||||
complete -f -c asdf -n '__fish_asdf_using_command local; and __fish_asdf_arg_number 2' -a '(__fish_asdf_plugin_list)'
|
|
||||||
complete -f -c asdf -n '__fish_asdf_using_command local; and test (count (commandline -opc)) -gt 2' -a '(__fish_asdf_list_versions (__fish_asdf_arg_at 3)) system'
|
|
||||||
|
|
||||||
# global completion
|
|
||||||
complete -f -c asdf -n '__fish_asdf_needs_command' -a global -d "Set global version for a plugin"
|
|
||||||
complete -f -c asdf -n '__fish_asdf_using_command global; and __fish_asdf_arg_number 2' -a '(__fish_asdf_plugin_list)'
|
|
||||||
complete -f -c asdf -n '__fish_asdf_using_command global; and test (count (commandline -opc)) -gt 2' -a '(__fish_asdf_list_versions (__fish_asdf_arg_at 3)) system'
|
|
||||||
|
|
||||||
# misc
|
|
||||||
complete -f -c asdf -n '__fish_asdf_needs_command' -l "help" -d "Displays help"
|
|
||||||
complete -f -c asdf -n '__fish_asdf_needs_command' -l "version" -d "Displays asdf version"
|
|
||||||
@ -1,6 +1,5 @@
|
|||||||
edc/bass
|
edc/bass
|
||||||
jethrokuan/fzf
|
jethrokuan/fzf
|
||||||
asdf-vm/asdf
|
|
||||||
2m/fish-gpg-tty
|
2m/fish-gpg-tty
|
||||||
oh-my-fish/plugin-direnv
|
oh-my-fish/plugin-direnv
|
||||||
oh-my-fish/theme-bobthefish
|
oh-my-fish/theme-bobthefish
|
||||||
|
|||||||
@ -1,15 +0,0 @@
|
|||||||
#!/usr/bin/env fish
|
|
||||||
|
|
||||||
set -x ASDF_DIR (dirname (status -f))
|
|
||||||
set -l asdf_data_dir (
|
|
||||||
if test -n "$ASDF_DATA_DIR"; echo $ASDF_DATA_DIR;
|
|
||||||
else; echo $HOME/.asdf; end)
|
|
||||||
|
|
||||||
# Add asdf to PATH
|
|
||||||
set -l asdf_bin_dirs $ASDF_DIR/bin $ASDF_DIR/shims $asdf_data_dir/shims
|
|
||||||
|
|
||||||
for x in $asdf_bin_dirs
|
|
||||||
if begin not contains $x $fish_user_paths; and test -d $x; end
|
|
||||||
set -gx fish_user_paths $fish_user_paths $x
|
|
||||||
end
|
|
||||||
end
|
|
||||||
Reference in New Issue
Block a user