shopt -s extglob # Syntax sugar. indent() { RE="s/^/ /" [ $(uname) == "Darwin" ] && sed -l "$RE" || sed -u "$RE" } # 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' } # Virtualenv wrapper. function virtualenv (){ python "$ROOT_DIR/vendor/virtualenv-1.8.4/virtualenv.py" "$@" } # 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 } # 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 '{}' \; }