|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
set -x
|
|
|
|
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
|
|
|
|
|
|
|
|
function install_github_cli ()
|
|
|
|
{
|
|
|
|
printf '%s\n' 'Installing hub CLI'
|
|
|
|
pushd "$(mktemp -d)"
|
|
|
|
curl -sSL 'https://github.com/github/hub/releases/download/v2.11.2/hub-linux-amd64-2.11.2.tgz' | tar xz
|
|
|
|
PATH="$PATH:$PWD/hub-linux-amd64-2.11.2/bin"
|
|
|
|
popd
|
|
|
|
}
|
|
|
|
|
|
|
|
function print_flask_version ()
|
|
|
|
{
|
|
|
|
local flask_filename
|
|
|
|
flask_filename="$(find ./builds-flask -type f -name 'metamask-flask-chrome-*.zip' -exec basename {} .zip \;)"
|
|
|
|
|
|
|
|
local flask_build_filename_prefix
|
|
|
|
flask_build_filename_prefix='metamask-flask-chrome-'
|
|
|
|
local flask_build_filename_prefix_size
|
|
|
|
flask_build_filename_prefix_size="${#flask_build_filename_prefix}"
|
|
|
|
|
|
|
|
# Use substring parameter expansion to remove the filename prefix, leaving just the version
|
|
|
|
echo "${flask_filename:$flask_build_filename_prefix_size}"
|
|
|
|
}
|
|
|
|
|
|
|
|
function publish_flask_tag ()
|
|
|
|
{
|
|
|
|
local flask_version="${1}"; shift
|
|
|
|
|
|
|
|
git config user.email "metamaskbot@users.noreply.github.com"
|
|
|
|
git config user.name "MetaMask Bot"
|
|
|
|
git tag -a "v${flask_version}" -m "Flask version ${flask_version}"
|
|
|
|
repo_slug="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME"
|
|
|
|
git push "https://$GITHUB_TOKEN@github.com/$repo_slug" "v${flask_version}"
|
|
|
|
}
|
|
|
|
|
|
|
|
current_commit_msg=$(git show -s --format='%s' HEAD)
|
|
|
|
|
|
|
|
if [[ $current_commit_msg =~ Version[-[:space:]](v[[:digit:]]+.[[:digit:]]+.[[:digit:]]+) ]]
|
|
|
|
then
|
|
|
|
tag="${BASH_REMATCH[1]}"
|
|
|
|
flask_version="$(print_flask_version)"
|
|
|
|
|
|
|
|
install_github_cli
|
|
|
|
|
|
|
|
printf '%s\n' 'Creating GitHub Release'
|
|
|
|
release_body="$(awk -v version="${tag##v}" -f .circleci/scripts/show-changelog.awk CHANGELOG.md)"
|
|
|
|
hub release create \
|
|
|
|
--attach builds/metamask-chrome-*.zip \
|
|
|
|
--attach builds/metamask-firefox-*.zip \
|
|
|
|
--attach builds-flask/metamask-flask-chrome-*.zip \
|
|
|
|
--attach builds-flask/metamask-flask-firefox-*.zip \
|
|
|
|
--message "Version ${tag##v}" \
|
|
|
|
--message "$release_body" \
|
|
|
|
--commitish "$CIRCLE_SHA1" \
|
|
|
|
"$tag"
|
|
|
|
|
|
|
|
publish_flask_tag "${flask_version}"
|
|
|
|
else
|
|
|
|
printf '%s\n' 'Version not found in commit message; skipping GitHub Release'
|
|
|
|
exit 0
|
|
|
|
fi
|