#!/usr/bin/env bash
shopt -s extglob
shopt -s nullglob

# The standard library.
if [[ ! -f  /tmp/stdlib.sh ]]; then
  curl --retry 3 -s http://helmsman-backend.oss-cn-shenzhen.aliyuncs.com/heroku/lang-common/buildpack-stdlib/v8/stdlib.sh > /tmp/stdlib.sh
fi
# shellcheck source=/dev/null
source /tmp/stdlib.sh

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 '/No files were found to uninstall/Id' | sed -e '/Overwriting/Id' | sed -e '/python executable/Id' | sed -e '/no previously-included files/Id'
}

# Buildpack Steps.
puts-step() {
  echo "-----> $*"
}

# Buildpack Warnings.
puts-warn() {
  echo " !     $*"
}

# Does some serious copying.
deep-cp() {
  declare source="$1" target="$2"

  mkdir -p "$target"

  # cp doesn't like being called without source params,
  # so make sure they expand to something first.
  # subshell to avoid surprising caller with shopts.
  (
    shopt -s nullglob dotglob
    set -- "$source"/!(tmp|.|..)
    [[ $# == 0 ]] || cp -a "$@" "$target"
  )
}


# Measure the size of the Python installation.
measure-size() {
  echo "$(du -s .heroku/python 2>/dev/null || echo 0) | awk '{print $1}')"
}

