autocomp
This commit is contained in:
parent
d781bb4768
commit
6362b0616a
2 changed files with 32 additions and 4 deletions
|
@ -13,7 +13,7 @@ _pyv_log() {
|
||||||
}
|
}
|
||||||
|
|
||||||
_pyv_help() {
|
_pyv_help() {
|
||||||
printf 'Usage:\n \033[92mpyv\033[0m \033[94m[ls|new|rm|go|exit]\033[0m \033[95mmyvenv\033[0m\n'
|
printf 'Usage:\n \033[92mpyv\033[0m \033[94m[ls|new|rm|enter|exit]\033[0m \033[95mmyvenv\033[0m\n'
|
||||||
}
|
}
|
||||||
|
|
||||||
_pyv_avail() {
|
_pyv_avail() {
|
||||||
|
@ -62,7 +62,7 @@ pyv() {
|
||||||
mkdir -p "$VENV_DIR"
|
mkdir -p "$VENV_DIR"
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
new|go|rm)
|
new|enter|rm)
|
||||||
VENV_OPT="$1" ; VENV_LIST="${@#${VENV_OPT}}" ; VENV_LIST="${VENV_LIST#* }" ;;
|
VENV_OPT="$1" ; VENV_LIST="${@#${VENV_OPT}}" ; VENV_LIST="${VENV_LIST#* }" ;;
|
||||||
-d)
|
-d)
|
||||||
VENV_OPT="rm" ; VENV_LIST="${@#${VENV_OPT}}" ; VENV_LIST="${VENV_LIST#* }" ;;
|
VENV_OPT="rm" ; VENV_LIST="${@#${VENV_OPT}}" ; VENV_LIST="${VENV_LIST#* }" ;;
|
||||||
|
@ -83,7 +83,7 @@ pyv() {
|
||||||
[ -n "$avail" ] && printf '\n%s\n' "$avail"
|
[ -n "$avail" ] && printf '\n%s\n' "$avail"
|
||||||
return 0 ;;
|
return 0 ;;
|
||||||
*)
|
*)
|
||||||
VENV_OPT="go" ; VENV_LIST="$@" ;;
|
VENV_OPT="enter" ; VENV_LIST="$@" ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
for v in $VENV_LIST ; do
|
for v in $VENV_LIST ; do
|
||||||
|
@ -122,7 +122,7 @@ pyv() {
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$VENV_OPT" == "go" ] ; then
|
if [ "$VENV_OPT" == "enter" ] ; then
|
||||||
command -v deactivate >&- 2>&- && deactivate
|
command -v deactivate >&- 2>&- && deactivate
|
||||||
venv="${VENV_LIST%% *}"
|
venv="${VENV_LIST%% *}"
|
||||||
_pyv_log "Activating $venv..."
|
_pyv_log "Activating $venv..."
|
||||||
|
|
28
shell/functions/pyv_comp.bash
Normal file
28
shell/functions/pyv_comp.bash
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
_pyv_comp() {
|
||||||
|
if [ -z "$VENV_DIR" ] ; then
|
||||||
|
if [ -n "$XDG_DATA_HOME" ] ; then
|
||||||
|
VENV_DIR="$XDG_DATA_HOME/venv"
|
||||||
|
else
|
||||||
|
[ -z "$HOME" ] && return 1
|
||||||
|
VENV_DIR="$HOME/.local/share/venv"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${#COMP_WORDS[@]}" == "2" ]; then
|
||||||
|
COMPREPLY=($(compgen -W "ls new rm enter exit" "${COMP_WORDS[1]}"))
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "${#COMP_WORDS[@]}" -gt 2 ]; then
|
||||||
|
venvs="$(for v in "$VENV_DIR"/* ; do
|
||||||
|
if [ -d "$v" ] ; then
|
||||||
|
printf '%s ' "${v##*/}"
|
||||||
|
fi
|
||||||
|
done)"
|
||||||
|
venvs="${venvs% *}"
|
||||||
|
COMPREPLY=($(compgen -W "$venvs" -- "${COMP_WORDS[-1]}"))
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
complete -F _pyv_comp pyv
|
Loading…
Reference in a new issue