#!/usr/bin/env bash

set -e
set -u
set -o pipefail

if [[ "${CI:-}" != 'true' ]]
then
    printf '%s\n' 'CI environment variable must be set to true'
    exit 1
fi

if [[ "${CIRCLECI:-}" != 'true' ]]
then
    printf '%s\n' 'CIRCLECI environment variable must be set to true'
    exit 1
fi

if [[ "${CIRCLE_BRANCH}" != "develop" ]]
then
    printf 'This is not develop branch'
    exit 0
fi

if [[ -z "${GITHUB_TOKEN:-}" ]]
then
    printf '%s\n' 'GITHUB_TOKEN environment variable must be set'
    exit 1
elif [[ -z "${GITHUB_TOKEN_USER:-}" ]]
then
    printf '%s\n' 'GITHUB_TOKEN_USER environment variable must be set'
    exit 1
fi

mkdir temp

git config --global user.email "metamaskbot@users.noreply.github.com"

git config --global user.name "MetaMask Bot"

git clone git@github.com:MetaMask/extension_bundlesize_stats.git temp

{
    echo " '${CIRCLE_SHA1}': ";
    cat test-artifacts/chrome/mv3/bundle_size_stats.json;
    echo ", ";
} >> temp/stats/bundle_size_data.temp.js

cp temp/stats/bundle_size_data.temp.js temp/stats/bundle_size_data.js

echo " }" >> temp/stats/bundle_size_data.js

if [ -f temp/stats/bundle_size_data.json ]; then
  # copy bundle_size_data.json in bundle_size_data.temp.json without last 2 lines
  head -$(($(wc -l < temp/stats/bundle_size_data.json) - 2)) temp/stats/bundle_size_data.json > bundle_size_stats.temp.json

  {
    echo "},";
    echo "\"$CIRCLE_SHA1\":";
    cat test-artifacts/chrome/mv3/bundle_size_stats.json;
    echo "}";
  } >> bundle_size_stats.temp.json
else
  {
    echo "{";
    echo "\"$CIRCLE_SHA1\":";
    cat test-artifacts/chrome/mv3/bundle_size_stats.json;
    echo "}";
  } > bundle_size_stats.temp.json
fi

jq . bundle_size_stats.temp.json > temp/stats/bundle_size_data.json
rm bundle_size_stats.temp.json

cd temp

git add .

git commit --message "Adding bundle size at commit: ${CIRCLE_SHA1}"

repo_slug="$CIRCLE_PROJECT_USERNAME/extension_bundlesize_stats"
git push "https://$GITHUB_TOKEN_USER:$GITHUB_TOKEN@github.com/$repo_slug" main

cd ..

rm -rf temp
