diff --git a/functions/venv.fish b/functions/venv.fish index 65be541..79d8719 100644 --- a/functions/venv.fish +++ b/functions/venv.fish @@ -6,11 +6,23 @@ function venv -d "Manipulate Python virtual environments (venv)" end if test $argv[1] = "list" -o $argv[1] = "l" - ls -1 --color=no $WORKON_HOME + printf "%10s %10s %10s\n" "Name" "Version" "IPython" + for venv in (ls $WORKON_HOME) + set venv_path "$WORKON_HOME/$venv" + set venv_version ($venv_path/bin/python --version | cut -d' ' -f 2) + set venv_ipython (command -v $venv_path/bin/ipython > /dev/null && echo "yes" || echo "no") + printf "%10s %10s %10s\n" "$venv" "$venv_version" "$venv_ipython" + end else if test $argv[1] = "deactivate" -o $argv[1] = "d" type -q deactivate; and deactivate else if test $argv[1] = "activate" -o $argv[1] = "a" source $WORKON_HOME/{$argv[2]}/bin/activate.fish + else if test $argv[1] = "remove" -o $argv[1] = "r" + set venv_folder $WORKON_HOME/{$argv[2]} + if set -q VIRTUAL_ENV && test $VIRTUAL_ENV = $venv_folder + deactivate + end + rm -rf $venv_folder else return 1 end @@ -23,9 +35,16 @@ end complete -c venv -f # subcommand completion -set -l commands list deactivate activate +set -l commands list deactivate activate remove complete -c venv -n "not __fish_seen_subcommand_from $commands" -a "$commands" # activate completion +complete -c venv -n "__fish_seen_subcommand_from a" \ + -a "(ls $WORKON_HOME)" complete -c venv -n "__fish_seen_subcommand_from activate" \ -a "(ls $WORKON_HOME)" + +complete -c venv -n "__fish_seen_subcommand_from r" \ + -a "(ls $WORKON_HOME)" +complete -c venv -n "__fish_seen_subcommand_from remove" \ + -a "(ls $WORKON_HOME)"