error() { echo " ! $*" >&2 exit 1 } status() { echo "-----> $*" } protip() { echo echo "PRO TIP: $*" | indent echo "See https://devcenter.heroku.com/articles/nodejs-support" | indent echo } # sed -l basically makes sed replace and buffer through stdin to stdout # so you get updates while the command runs and dont wait for the end # e.g. npm install | indent indent() { c='s/^/ /' case $(uname) in Darwin) sed -l "$c";; # mac/bsd sed: -l buffers on line boundaries *) sed -u "$c";; # unix/gnu sed: -u unbuffered (arbitrary) chunks of data esac } cat_npm_debug_log() { test -f $build_dir/npm-debug.log && cat $build_dir/npm-debug.log } cp_keep_links() { if [ "$(uname)" == "Darwin" ]; then cp -p "$@" else cp --preserve=links "$@" fi }