So because this is a feature I rebased this against master.  Though it's not
actually a feature of Puppet itself, so I'd like to see it merged into the
next release of 2.6 as well as 2.7.

Thoughts on that process?

Jacob, I addressed your comments and amended the change set.

-Jeff

On Thu, May 19, 2011 at 4:20 PM, Jeff McCune <[email protected]> wrote:

> 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
>
>


-- 
Jeff McCune
Puppet Labs
@0xEFF

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en.

Reply via email to