#!/bin/sh

set -e

if [ "$1" == "" ]; then
  echo "   Please specify output file for CHANGELOG"
  echo "   Usage:"
  echo "      ./gen-changelog.sh CHANGELOG.pdf"
fi

repo=${GITHUB_REPO:-"skinholdings/drakemall"}
token=$GITHUB_CHANGELOG_TOKEN

vault_token=${RELEASE_BOT_VAULT_TOKEN:-""}

if [ "$vault_token" == "" ]; then
  echo "    Unable to find vault token!"
  echo "    Please specify vault token in order to interact with Vault server!"
  echo "    "
  exit 1
fi

export VAULT_TOKEN=$vault_token

curr_ver="$(vault read --field data --format json ci/$repo/version | json .current_version)"

if [ "$curr_ver" == "" ]; then
  echo "    Unable to get the latest production version!"
  echo "    Please make sure that you set properly VAULT_TOKEN and have enough permissions to read from secret backend"
  echo "   "
  exit 1
fi

echo "    The latest production version: $curr_ver"

if [ -z "$token" ]; then
  echo "    Github token is required, please specify token via 'GITHUB_CHANGELOG_TOKEN' environment variable"
  exit 1
fi

if [ -z $repo ]; then
  echo "    Name of project on GitHub is required, please specify via 'GITHUB_REPO' environment variable"
  echo "    For example 'skinholdings/drakemall'"
  exit 1
fi

if [ ! -f "$PWD/package.json"  ]; then
  echo "    Unable to find package.json"
  echo "    Unable to determine next release version..."
  exit 1
fi

next_release_ver=${RELEASE_TAG:-"$(cat $PWD/package.json | json .version)"}

tmp_dir="/tmp/github_changelog_generator"
rm -rf $tmp_dir
mkdir $tmp_dir

changelog_generator="docker run --name=github-changelog-generator --interactive ferrarimarco/github-changelog-generator"

echo "    Everything is ok, generate the changelog for $repo ..."

$changelog_generator $repo -t $token --since-tag="v$curr_ver" -o /usr/local/src/CHANGELOG.md

docker cp github-changelog-generator:/usr/local/src/CHANGELOG.md $tmp_dir/CHANGELOG.md
docker rm github-changelog-generator

cat $tmp_dir/CHANGELOG.md > $1