1+ #
2+ # $Id$
3+ #
4+
5+ #
6+ # Setup:
7+ #
8+ # 1. Add a line like "export WORKON_HOME=$HOME/.virtualenvs"
9+ # to your .bashrc.
10+ # 2. Add a line like "source /path/to/this/file/virtualenvwrapper_bashrc"
11+ # to your .bashrc.
12+ # 3. Run: source ~/.bashrc
13+ # 4. Run: workon
14+ # 5. A list of environments, empty, is printed.
15+ # 6. Run: mkvirtualenv temp
16+ # 7. Run: workon
17+ # 8. This time, the "temp" environment is included.
18+ # 9. Run: workon temp
19+ # 10. The virtual environment is activated.
20+ #
21+
22+ # Make sure there is a default value for WORKON_HOME.
23+ if [ "$WORKON_HOME" = "" ]
24+ then
25+ export WORKON_HOME="$HOME/.virtualenvs"
26+ fi
27+
28+ # Verify that the WORKON_HOME directory exists
29+ function verify_workon_home () {
30+ if [ ! -d "$WORKON_HOME" ]
31+ then
32+ echo "ERROR: $WORKON_HOME does not exist!"
33+ return 1
34+ fi
35+ return 0
36+ }
37+
38+ # Function to create a new environment, in the WORKON_HOME.
39+ function mkvirtualenv () {
40+ verify_workon_home
41+ (cd "$WORKON_HOME"; virtualenv $*)
42+ }
43+
44+ # Function to remove an environment, in the WORKON_HOME.
45+ function rmvirtualenv () {
46+ typeset env_name="$1"
47+ verify_workon_home
48+ env_dir="$WORKON_HOME/$env_name"
49+ if [ "$VIRTUAL_ENV" == "$env_dir" ]
50+ then
51+ echo "ERROR: You cannot remove the active environment."
52+ return 1
53+ fi
54+ rm -rf "$env_dir"
55+ }
56+
57+ # Function to list the available environments.
58+ function show_workon_options () {
59+ verify_workon_home
60+ ls "$WORKON_HOME" | egrep -v '*.egg' | sort
61+ }
62+
63+ # Function to list or change working virtual environments
64+ function workon () {
65+ typeset env_name="$1"
66+ if [ "$env_name" = "" ]
67+ then
68+ show_workon_options
69+ return 1
70+ fi
71+
72+ activate="$WORKON_HOME/$env_name/bin/activate"
73+ if [ ! -f "$activate" ]
74+ then
75+ echo "ERROR: No activate for $WORKON_HOME/$env_name"
76+ return 1
77+ fi
78+ source "$activate"
79+ return 0
80+ }
0 commit comments