#!/bin/bash

# Command Validations
if [[ -z $(command -v git) ]]; then
  echo "fatal: git is not installed and is required."
  exit 1
fi

if [[ -z $(command -v node) ]]; then
  echo "fatal: node is not installed and is required."
  exit 1
fi

if [[ -z $(command -v semver) ]]; then
  echo "fatal: semver is not installed and is required."
  echo "  npm install -g semver"
  exit 1
fi

defaultPrefix="semver:"
prefix=${COMMIT_SEMVER_PREFIX:-${defaultPrefix}} # Use environment variable or default

while [[ $# > 0 ]]; do
  key="$1"

  case ${key} in
    -l|--level)
      action=level

      exit 0
      ;;
    -h|--help)
      usage
      exit 0
      ;;
  esac

  shift
done

if [[ $1 == "-l" ]]; then
  # Compute the level for the next version
  git log --format=%b HEAD ^master | \
    grep -i semver | \
    grep -i -v none | \
    tr '[:upper:]' '[:lower:]' | \
    uniq | \
    sed "s/${prefix}//g" | \
    sort | \
    head -1
elif [[ $1 == "-n" ]]; then
  currentVersion=$(./$0)
  level=$(./$0 -l)

  semver ${currentVersion} -i ${level}
else
  node -e "console.log(require('${PWD}/package').version)"
fi
