forked from Qortal/qortal
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.
84 lines
2.4 KiB
84 lines
2.4 KiB
#!/usr/bin/env bash |
|
|
|
set -e |
|
|
|
# Check we are within a git repo |
|
git_dir=$( git rev-parse --show-toplevel ) |
|
if [ -z "${git_dir}" ]; then |
|
echo "Cannot determine top-level directory for git repo" |
|
exit 1 |
|
fi |
|
|
|
# Change to git top-level |
|
cd ${git_dir} |
|
|
|
# Check we are in 'master' branch |
|
branch_name=$( git symbolic-ref -q HEAD || echo ) |
|
branch_name=${branch_name##refs/heads/} |
|
echo "Current git branch: ${branch_name}" |
|
if [ "${branch_name}" != "master" ]; then |
|
echo "Unexpected current branch '${branch_name}' - expecting 'master'" |
|
echo "CTRL-C within 5 seconds to abort" |
|
sleep 5 |
|
fi |
|
|
|
# Extract short-form commit hash |
|
short_hash=$( git rev-parse --short HEAD ) |
|
if [ -z "${short_hash}" ]; then |
|
echo "Unable to extract short-form current commit hash" |
|
exit 1 |
|
fi |
|
echo "HEAD commit is: ${short_hash}" |
|
|
|
# Check there are no uncommitted changes |
|
uncommitted=$( git status --short --untracked-files=no ) |
|
if [ ! -z "${uncommitted}" ]; then |
|
echo "Cannot continue due to uncommitted files:" |
|
echo "${uncommitted}" |
|
exit 1 |
|
fi |
|
|
|
# Determine project name |
|
project=$( perl -n -e 'if (m/<artifactId>(\w+)<.artifactId>/) { print $1; exit }' pom.xml $) |
|
if [ -z "${project}" ]; then |
|
echo "Unable to determine project name from pom.xml?" |
|
exit 1 |
|
fi |
|
|
|
# Actually rebuild JAR |
|
echo "Building ${project} JAR..." |
|
mvn clean package 1>/tmp/${project}-mvn-build.log 2>&1 |
|
if [ "$?" != "0" -o ! -r target/${project}*.jar ]; then |
|
echo "Maven build failed. For details, see /tmp/${project}-mvn-build.log" |
|
exit 1 |
|
fi |
|
|
|
# Convert packaged JAR to XORed update form |
|
echo "Building ${project}.update..." |
|
java -cp target/${project}*.jar org.qortal.XorUpdate target/${project}*.jar ${project}.update |
|
if [ "$?" != "0" ]; then |
|
echo "Failed to create XORed auto-update JAR" |
|
exit 1 |
|
fi |
|
|
|
# Create auto-update branch from this commit |
|
update_branch=auto-update-${short_hash} |
|
|
|
if git show-ref --quiet --verify refs/heads/${update_branch}; then |
|
echo "Existing auto-update branch based on this commit (${short_hash}) - deleting..." |
|
git branch --delete --force ${update_branch} |
|
fi |
|
|
|
echo "Checking out new auto-update branch based on this commit (${short_hash})..." |
|
git checkout --orphan ${update_branch} |
|
git rm --cached -fr . 1>/dev/null |
|
|
|
git add ${project}.update |
|
|
|
git commit --message "XORed, auto-update JAR based on commit ${short_hash}" |
|
git push --set-upstream origin --force-with-lease ${update_branch} |
|
|
|
branch_name=${branch_name-master} |
|
|
|
echo "Changing back to '${branch_name}' branch" |
|
git checkout --force ${branch_name}
|
|
|