summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff McCune <jeff@puppetlabs.com>2011-02-21 15:34:31 -0500
committerJeff McCune <jeff@puppetlabs.com>2011-05-19 16:49:49 -0700
commitf037662edfd35a9b0f17cab45ba30753c3959a0c (patch)
treeb92934ab74973dd352a48996263f0305cc30464b
parent0c9439d1ff0534edd69ff8581ad2085ca6a41b11 (diff)
downloadpuppet-f037662edfd35a9b0f17cab45ba30753c3959a0c.tar.gz
puppet-f037662edfd35a9b0f17cab45ba30753c3959a0c.tar.xz
puppet-f037662edfd35a9b0f17cab45ba30753c3959a0c.zip
(#6395) Add extpuppet help, eval, and interfaces
This patch add three features to the envpuppet helper script. First, if --help is passed as the first argument, a helpful message is printed. Second, if ENVPUPPET_BLEEDING=true when envpuppet is executed, additional repositories are enabled. The only addition at this time is puppet-interfaces, which heavily modifies the behavior of Puppet itself and may or may not be desired. Third, if no arguments are passed to the script, bourne compatible shell statements are printed to STDOUT which may be directly evaluated in the current shell. This is to help people who prefer to directly set RUBYLIB and PATH in their development workflows, which I've noticed to be the case for many people. For example: eval $(envpuppet) Signed-off-by: Jeff McCune <jeff@puppetlabs.com> Reviewed-by: Jacob Helwig <jacob@puppetlabs.com>
-rwxr-xr-xext/envpuppet59
1 files changed, 56 insertions, 3 deletions
diff --git a/ext/envpuppet b/ext/envpuppet
index d921a19b8..c794e6764 100755
--- a/ext/envpuppet
+++ b/ext/envpuppet
@@ -34,6 +34,38 @@
set -e
set -u
+if [[ "${1:-}" == "--help" ]]; then
+ cat <<EO_HELP
+This command reconfigures the environment once for development.
+It is designed to wrap around any other command, specifically puppet
+
+Jeff McCune <jeff@puppetlabs.com>
+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"
@@ -50,15 +82,23 @@ 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"
@@ -73,8 +113,21 @@ myrubylib="${myrubylib}:${ENVPUPPET_BASEDIR}/puppet-module-tool/lib"
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
+