|
| 1 | +# usage: source hacking/env-setup [-q] |
| 2 | +# modifies environment for running Ansible from checkout |
| 3 | + |
| 4 | +# Default values for shell variables we use |
| 5 | +PYTHONPATH=${PYTHONPATH-""} |
| 6 | +PATH=${PATH-""} |
| 7 | +MANPATH=${MANPATH-""} |
| 8 | +PYTHON=$(which python 2>/dev/null || which python3 2>/dev/null) |
| 9 | +PYTHON_BIN=${PYTHON_BIN-$PYTHON} |
| 10 | + |
| 11 | +verbosity=${1-info} # Defaults to `info' if unspecified |
| 12 | + |
| 13 | +if [ "$verbosity" = -q ]; then |
| 14 | + verbosity=silent |
| 15 | +fi |
| 16 | + |
| 17 | +# When run using source as directed, $0 gets set to bash, so we must use $BASH_SOURCE |
| 18 | +if [ -n "$BASH_SOURCE" ] ; then |
| 19 | + HACKING_DIR=$(dirname "$BASH_SOURCE") |
| 20 | +elif [ $(basename -- "$0") = "env-setup" ]; then |
| 21 | + HACKING_DIR=$(dirname "$0") |
| 22 | +# Works with ksh93 but not pdksh, have to eval to keep ash happy... |
| 23 | +elif [ -n "$KSH_VERSION" ] && echo $KSH_VERSION | grep -qv '^@(#)PD KSH'; then |
| 24 | + eval "HACKING_DIR=\$(dirname \"\${.sh.file}\")" |
| 25 | +else |
| 26 | + HACKING_DIR="$PWD/hacking" |
| 27 | +fi |
| 28 | +# The below is an alternative to readlink -fn which doesn't exist on OS X |
| 29 | +# Source: http://stackoverflow.com/a/1678636 |
| 30 | +FULL_PATH=$($PYTHON_BIN -c "import os; print(os.path.realpath('$HACKING_DIR'))") |
| 31 | +export ANSIBLE_HOME="$(dirname "$FULL_PATH")" |
| 32 | + |
| 33 | +PREFIX_PYTHONPATH="$ANSIBLE_HOME/lib" |
| 34 | +PREFIX_PATH="$ANSIBLE_HOME/bin:$ANSIBLE_HOME/test/runner" |
| 35 | +PREFIX_MANPATH="$ANSIBLE_HOME/docs/man" |
| 36 | + |
| 37 | +expr "$PYTHONPATH" : "${PREFIX_PYTHONPATH}.*" > /dev/null || export PYTHONPATH="$PREFIX_PYTHONPATH:$PYTHONPATH" |
| 38 | +expr "$PATH" : "${PREFIX_PATH}.*" > /dev/null || export PATH="$PREFIX_PATH:$PATH" |
| 39 | +expr "$MANPATH" : "${PREFIX_MANPATH}.*" > /dev/null || export MANPATH="$PREFIX_MANPATH:$MANPATH" |
| 40 | + |
| 41 | +# |
| 42 | +# Generate egg_info so that pkg_resources works |
| 43 | +# |
| 44 | + |
| 45 | +# Do the work in a function so we don't repeat ourselves later |
| 46 | +gen_egg_info() |
| 47 | +{ |
| 48 | + if [ -e "$PREFIX_PYTHONPATH/ansible.egg-info" ] ; then |
| 49 | + \rm -rf "$PREFIX_PYTHONPATH/ansible.egg-info" |
| 50 | + fi |
| 51 | + $PYTHON_BIN setup.py egg_info |
| 52 | +} |
| 53 | + |
| 54 | +if [ "$ANSIBLE_HOME" != "$PWD" ] ; then |
| 55 | + current_dir="$PWD" |
| 56 | +else |
| 57 | + current_dir="$ANSIBLE_HOME" |
| 58 | +fi |
| 59 | +( |
| 60 | + cd "$ANSIBLE_HOME" |
| 61 | + if [ "$verbosity" = silent ] ; then |
| 62 | + gen_egg_info > /dev/null 2>&1 & |
| 63 | + find . -type f -name "*.pyc" -exec rm -f {} \; > /dev/null 2>&1 |
| 64 | + else |
| 65 | + gen_egg_info |
| 66 | + find . -type f -name "*.pyc" -exec rm -f {} \; |
| 67 | + fi |
| 68 | + cd "$current_dir" |
| 69 | +) |
| 70 | + |
| 71 | +if [ "$verbosity" != silent ] ; then |
| 72 | + cat <<- EOF |
| 73 | + |
| 74 | + Setting up Ansible to run out of checkout... |
| 75 | + |
| 76 | + PATH=$PATH |
| 77 | + PYTHONPATH=$PYTHONPATH |
| 78 | + MANPATH=$MANPATH |
| 79 | + |
| 80 | + Remember, you may wish to specify your host file with -i |
| 81 | + |
| 82 | + Done! |
| 83 | + |
| 84 | + EOF |
| 85 | +fi |
0 commit comments