You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.0 KiB
45 lines
1.0 KiB
2 years ago
|
#!/usr/bin/env bash
|
||
|
|
||
|
set -euo pipefail
|
||
|
|
||
|
if [ $# -lt 1 ]; then
|
||
|
echo "usage: bash $0 <target> [<base>]" >&2
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
set -x
|
||
|
|
||
|
target="$1"
|
||
|
base="${2-}"
|
||
|
|
||
|
bash scripts/upgradeable/transpile.sh
|
||
|
|
||
|
commit="$(git rev-parse --short HEAD)"
|
||
|
branch="$(git rev-parse --abbrev-ref HEAD)"
|
||
|
|
||
|
git add contracts
|
||
|
|
||
|
# detach from the current branch to avoid making changes to it
|
||
|
git checkout --quiet --detach
|
||
|
|
||
|
# switch to the target branch, creating it if necessary
|
||
|
if git rev-parse -q --verify "$target"; then
|
||
|
# if the branch exists, make it the current HEAD without checking out its contents
|
||
|
git reset --soft "$target"
|
||
|
git checkout "$target"
|
||
|
else
|
||
|
# if the branch doesn't exist, create it as an orphan and check it out
|
||
|
git checkout --orphan "$target"
|
||
|
if [ -n "$base" ] && git rev-parse -q --verify "$base"; then
|
||
|
# if base was specified and it exists, set it as the branch history
|
||
|
git reset --soft "$base"
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
# commit if there are changes to commit
|
||
|
if ! git diff --quiet --cached; then
|
||
|
git commit -m "Transpile $commit"
|
||
|
fi
|
||
|
|
||
|
git checkout "$branch"
|