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

  )
}
