shopt -s extglob if [ $(uname) == Darwin ]; then sed() { command sed -l "$@"; } else sed() { command sed -u "$@"; } fi # Syntax sugar. indent() { sed "s/^/ /" } # Clean up pip output cleanup() { sed -e 's/\.\.\.\+/.../g' | sed -e '/already satisfied/Id' | sed -e '/Overwriting/Id' | sed -e '/python executable/Id' | sed -e '/no previously-included files/Id' } # Buildpack Steps. function puts-step (){ echo "-----> $@" } # Buildpack Warnings. function puts-warn (){ echo " ! $@" } # Usage: $ set-env key value function set-env (){ echo "export $1=$2" >> $PROFILE_PATH } # Usage: $ set-default-env key value function set-default-env (){ echo "export $1=\${$1:-$2}" >> $PROFILE_PATH } # Usage: $ set-default-env key value function un-set-env (){ echo "unset $1" >> $PROFILE_PATH } # Does some serious copying. function deep-cp (){ find -H $1 -maxdepth 1 -name '.*' -a \( -type d -o -type f -o -type l \) -exec cp -a '{}' $2 \; cp -r $1/!(tmp) $2 # echo copying $1 to $2 } # Does some serious moving. function deep-mv (){ deep-cp $1 $2 rm -fr $1/!(tmp) find -H $1 -maxdepth 1 -name '.*' -a \( -type d -o -type f -o -type l \) -exec rm -fr '{}' \; } # Does some serious deleting. function deep-rm (){ rm -fr $1/!(tmp) find -H $1 -maxdepth 1 -name '.*' -a \( -type d -o -type f -o -type l \) -exec rm -fr '{}' \; } sub-env() { WHITELIST=${2:-''} BLACKLIST=${3:-'^(GIT_DIR|PYTHONHOME|PYTHONPATH|LD_LIBRARY_PATH|LIBRARY_PATH|PATH)$'} ( if [ -d "$ENV_DIR" ]; then for e in $(ls $ENV_DIR); do echo "$e" | grep -E "$WHITELIST" | grep -qvE "$BLACKLIST" && export "$e=$(cat $ENV_DIR/$e)" : done fi $1 ) }