Home | History | Annotate | Download | only in posix
      1 # This file must be used with ". bin/activate.fish" *from fish* (http://fishshell.org)
      2 # you cannot run it directly
      3 
      4 function deactivate  -d "Exit virtualenv and return to normal shell environment"
      5     # reset old environment variables
      6     if test -n "$_OLD_VIRTUAL_PATH"
      7         set -gx PATH $_OLD_VIRTUAL_PATH
      8         set -e _OLD_VIRTUAL_PATH
      9     end
     10     if test -n "$_OLD_VIRTUAL_PYTHONHOME"
     11         set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME
     12         set -e _OLD_VIRTUAL_PYTHONHOME
     13     end
     14 
     15     if test -n "$_OLD_FISH_PROMPT_OVERRIDE"
     16         functions -e fish_prompt
     17         set -e _OLD_FISH_PROMPT_OVERRIDE
     18         functions -c _old_fish_prompt fish_prompt
     19         functions -e _old_fish_prompt
     20     end
     21 
     22     set -e VIRTUAL_ENV
     23     if test "$argv[1]" != "nondestructive"
     24         # Self destruct!
     25         functions -e deactivate
     26     end
     27 end
     28 
     29 # unset irrelevant variables
     30 deactivate nondestructive
     31 
     32 set -gx VIRTUAL_ENV "__VENV_DIR__"
     33 
     34 set -gx _OLD_VIRTUAL_PATH $PATH
     35 set -gx PATH "$VIRTUAL_ENV/__VENV_BIN_NAME__" $PATH
     36 
     37 # unset PYTHONHOME if set
     38 if set -q PYTHONHOME
     39     set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME
     40     set -e PYTHONHOME
     41 end
     42 
     43 if test -z "$VIRTUAL_ENV_DISABLE_PROMPT"
     44     # fish uses a function instead of an env var to generate the prompt.
     45 
     46     # save the current fish_prompt function as the function _old_fish_prompt
     47     functions -c fish_prompt _old_fish_prompt
     48 
     49     # with the original prompt function renamed, we can override with our own.
     50     function fish_prompt
     51         # Save the return status of the last command
     52         set -l old_status $status
     53 
     54         # Prompt override?
     55         if test -n "__VENV_PROMPT__"            
     56             printf "%s%s" "__VENV_PROMPT__" (set_color normal)
     57         else
     58             # ...Otherwise, prepend env
     59             set -l _checkbase (basename "$VIRTUAL_ENV")
     60             if test $_checkbase = "__"
     61                 # special case for Aspen magic directories
     62                 # see http://www.zetadev.com/software/aspen/
     63                 printf "%s[%s]%s " (set_color -b blue white) (basename (dirname "$VIRTUAL_ENV")) (set_color normal)
     64             else
     65                 printf "%s(%s)%s" (set_color -b blue white) (basename "$VIRTUAL_ENV") (set_color normal)
     66             end
     67         end
     68 
     69         # Restore the return status of the previous command.
     70         echo "exit $old_status" | .
     71         _old_fish_prompt
     72     end
     73 
     74     set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV"
     75 end
     76