#!/usr/bin/env bash

set -ex

: ${UPDATE_SCHEMA:=1}

function usage() {
cat <<EOT
$0 [ARGS]
  -n suppress download of latest schema
EOT
exit $1
}

while getopts "hnv:" opt; do
  case $opt in
    n)
      UPDATE_SCHEMA=0
      ;;
    h)
      usage 1
      ;;
    \?)
      usage 0
      ;;
    esac
done

API_VERSION="3"
CLIENT_VERSION="v5"
SCHEMA_FILE="$CLIENT_VERSION/schema.json"
GENERATED_FILE="$CLIENT_VERSION/heroku.go"

NEW_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.."; pwd)"
cd $NEW_DIR

if [ $UPDATE_SCHEMA -eq 1 ]; then
  curl -so "$SCHEMA_FILE" https://api.heroku.com/schema \
    -H "Accept: application/vnd.heroku+json; version=$API_VERSION"
fi

go install github.com/interagent/schematic/cmd/schematic@7f954c20daa584c8b9a5c13bce4973dbd2539482

schematic "$SCHEMA_FILE" > "$GENERATED_FILE"

sed -E -i '' \
  "s/^([[:space:]]*Version[[:space:]]*=[[:space:]]*)\"\"\$/\1\"${CLIENT_VERSION}\"/" \
  "$GENERATED_FILE"

gofmt -w "$GENERATED_FILE"
