On Thu, 19 May 2011 16:20:56 -0700, Jeff McCune wrote:
> Date: Thu, 19 May 2011 16:20:56 -0700
> From: Jeff McCune <[email protected]>
> To: [email protected]
> Subject: [Puppet-dev] [PATCH/puppet 1/1] (#6395) Add extpuppet help,
>  eval, and interfaces
> X-Mailer: git-send-email 1.7.5
> Message-Id: <[email protected]>
> 
> 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 <[email protected]>
> ---
> Local-branch: feature/master/6395_envpuppet
>  ext/envpuppet |   59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--
>  1 files changed, 56 insertions(+), 3 deletions(-)
> 
> diff --git a/ext/envpuppet b/ext/envpuppet
> index d921a19..c794e67 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 <[email protected]>
> +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
> +
> -- 
> 1.7.5
> 

Thanks!

Reviewed-by: Jacob Helwig <[email protected]>

-- 
Jacob Helwig

Attachment: signature.asc
Description: Digital signature

Reply via email to