diff --git a/ext/envpuppet b/ext/envpuppet index d921a19b8..c794e6764 100755 --- a/ext/envpuppet +++ b/ext/envpuppet @@ -1,80 +1,133 @@ #! /bin/bash # # Jeff McCune # 2010-10-20 # # Copyright (c) 2010, Puppet Labs # License: BSD 3-clause license # # This script provides a simple way to execute puppet and related tools # directly from a git clone of the upstream repositories. This allows you to # quickly switch branches and test different versions of code without much # friction. # # NOTE: There may be issues if puppet, facter, etc... are already installed # into RUBY's site_ruby directory. If you run into strange problems, make sure # the correct ruby libraries are being loaded... # # Sample Usage: # ============= # cd ~/src # git clone git://github.com/puppetlabs/puppet.git # git clone git://github.com/puppetlabs/facter.git # pushd puppet # git checkout tags/2.6.1 # popd # pushd facter # git checkout tags/1.5.8 # export ENVPUPPET_BASEDIR=/home/jeff/src # envpuppet puppet --version # 2.6.1 # envpuppet facter --version # 1.5.8 set -e set -u +if [[ "${1:-}" == "--help" ]]; then + cat < +2011-02-09 + +Puppet should not be installed in site_ruby because all of \$LOAD_PATH +is searched by puppet when loading libraries and the installed version +will taint the development version + +The following enviornment variables configure the behavior of envpuppet + + ENVPUPPET_BASEDIR=${HOME}/src + the base directory where puppet, facter, etc... live. + + ENVPUPPET_BLEEDING=true Enables bleeding edge prototypes like + puppet-interfaces + +The PATH and RUBYLIB are the primary environment variables modified by +the envpuppet script. + +If no arguments are given, the environment variables are printed to STDOUT +allowing the output to be sourced. For example: + + eval \$(envpuppet) + +EO_HELP + exit 0 +fi + if test -d puppet -o -d facter; then echo " WARNING!" echo " Strange things happen if puppet or facter are in the" echo " current working directory" echo " (import errors from ruby are a prime example)" echo " WARNING!" echo "" echo "I suggest changing to ~ or /tmp or something..." echo "" echo "Sleeping 2 seconds." echo "" sleep 2 fi # Set this to where you check out puppet and facter : ${ENVPUPPET_BASEDIR:="${HOME}/src"} +# Are we bleeding edge? +: ${ENVPUPPET_BLEEDING:='false'} -# git://github.com/reductivelabs/puppet.git +# git://github.com/puppetlabs/puppet.git mypath="${ENVPUPPET_BASEDIR}/puppet/sbin:${ENVPUPPET_BASEDIR}/puppet/bin" myrubylib="${ENVPUPPET_BASEDIR}/puppet/lib" -# git://github.com/reductivelabs/facter.git +# git://github.com/puppetlabs/facter.git mypath="${mypath}:${ENVPUPPET_BASEDIR}/facter/bin" myrubylib="${myrubylib}:${ENVPUPPET_BASEDIR}/facter/lib" +if [[ "${ENVPUPPET_BLEEDING:-}" == "true" ]]; then + # git://github.com/puppetlabs/facter.git + mypath="${mypath}:${ENVPUPPET_BASEDIR}/puppet-interfaces/bin" + myrubylib="${myrubylib}:${ENVPUPPET_BASEDIR}/puppet-interfaces/lib" +fi + # http://github.com/jamtur01/puppet-scaffold.git mypath="${mypath}:${ENVPUPPET_BASEDIR}/puppet-scaffold/bin" myrubylib="${myrubylib}:${ENVPUPPET_BASEDIR}/puppet-scaffold/lib" # http://github.com/puppetlabs/puppet-module-tool.git # Also known as "pmt" Will become "puppet module" mypath="${mypath}:${ENVPUPPET_BASEDIR}/puppet-module-tool/bin" myrubylib="${myrubylib}:${ENVPUPPET_BASEDIR}/puppet-module-tool/lib" # Use the existing environment, if present. # Default to no value to prevent unbound variable issues mypath="${mypath}:${PATH:-}" myrubylib="${myrubylib}:${RUBYLIB:-}" +export ENVPUPPET_OLD_PATH="${PATH:-}" +export ENVPUPPET_OLD_RUBYLIB="${RUBYLIB:-}" + # Trim any trailing colons from the path list. export PATH="${mypath%%:}" export RUBYLIB="${myrubylib%%:}" -exec "$@" +if [[ $# -eq 0 ]]; then + echo "export ENVPUPPET_OLD_PATH='${ENVPUPPET_OLD_PATH}'" + echo "export ENVPUPPET_OLD_RUBYLIB='${ENVPUPPET_OLD_RUBYLIB}'" + echo "export ENVPUPPET_BASEDIR='${ENVPUPPET_BASEDIR}'" + echo "export ENVPUPPET_BLEEDING='${ENVPUPPET_BLEEDING}'" + echo "export PATH='${PATH}'" + echo "export RUBYLIB='${RUBYLIB}'" +else + exec "$@" +fi +