summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRĂ©mi Verschelde <remi@verschelde.fr>2021-07-29 14:45:04 +0200
committerGitHub <noreply@github.com>2021-07-29 14:45:04 +0200
commit5b92f7aac1beb480675d1dd7d6c916c6dae16f65 (patch)
treed149a04450325439f0662cfecbda18b5f5a86a48
parent1c68be9c8f8d045de0fae9c3fb8187cfa1fcccc0 (diff)
parent9a71038e346aa01480e2379e1f3caadfa5692b2b (diff)
Merge pull request #51001 from akien-mga/make_tarball-git-HEAD
Add script to make source tarball with `.git/HEAD`
-rwxr-xr-xmisc/scripts/make_tarball.sh66
1 files changed, 66 insertions, 0 deletions
diff --git a/misc/scripts/make_tarball.sh b/misc/scripts/make_tarball.sh
new file mode 100755
index 0000000000..9e02b80af1
--- /dev/null
+++ b/misc/scripts/make_tarball.sh
@@ -0,0 +1,66 @@
+#!/bin/sh
+
+if [ ! -e "version.py" ]; then
+ echo "This script should be ran from the root folder of the Godot repository."
+ exit 1
+fi
+
+while getopts "h?sv:g:" opt; do
+ case "$opt" in
+ h|\?)
+ echo "Usage: $0 [OPTIONS...]"
+ echo
+ echo " -s script friendly file name (godot.tar.gz)"
+ echo " -v godot version for file name (e.g. 4.0-stable)"
+ echo " -g git treeish to archive (e.g. master)"
+ echo
+ exit 1
+ ;;
+ s)
+ script_friendly_name=1
+ ;;
+ v)
+ godot_version=$OPTARG
+ ;;
+ g)
+ git_treeish=$OPTARG
+ ;;
+ esac
+done
+
+if [ ! -z "$git_treeish" ]; then
+ HEAD=$(git rev-parse $git_treeish)
+else
+ HEAD=$(git rev-parse HEAD)
+fi
+
+if [ ! -z "$script_friendly_name" ]; then
+ NAME=godot
+else
+ if [ ! -z "$godot_version" ]; then
+ NAME=godot-$godot_version
+ else
+ NAME=godot-$HEAD
+ fi
+fi
+
+CURDIR=$(pwd)
+TMPDIR=$(mktemp -d -t godot-XXXXXX)
+
+echo "Generating tarball for revision $HEAD with folder name '$NAME'."
+echo
+echo "The tarball will be written to the parent folder:"
+echo " $(dirname $CURDIR)/$NAME.tar.gz"
+
+git archive $HEAD --prefix=$NAME/ -o $TMPDIR/$NAME.tar
+
+# Adding custom .git/HEAD to tarball so that we can generate VERSION_HASH.
+cd $TMPDIR
+mkdir -p $NAME/.git
+echo $HEAD > $NAME/.git/HEAD
+tar -uf $NAME.tar $NAME
+
+cd $CURDIR
+gzip -c $TMPDIR/$NAME.tar > ../$NAME.tar.gz
+
+rm -rf $TMPDIR