From b1bb2b05c4839ee3e6b4cebceab52c196ef29efe Mon Sep 17 00:00:00 2001
From: Arkerthan <arkerthan@gmail.com>
Date: Fri, 22 Mar 2019 10:07:05 -0700
Subject: [PATCH] Unifiy all UNIX compile files into one

---
 README.md                       |   5 +-
 compile                         |  74 ---------------
 compile-git                     |  48 ----------
 compile-git+java-sanityCheck.sh |  48 ----------
 compile.sh                      | 157 ++++++++++++++++++++++++++++++++
 5 files changed, 159 insertions(+), 173 deletions(-)
 delete mode 100755 compile
 delete mode 100755 compile-git
 delete mode 100755 compile-git+java-sanityCheck.sh
 create mode 100755 compile.sh

diff --git a/README.md b/README.md
index b33a96a73bd..3440d8c0eaa 100644
--- a/README.md
+++ b/README.md
@@ -46,9 +46,8 @@ How to mod (basic doc):
 
 	Linux:
 	Ensure executable permission on file "devTools/tweeGo/tweego" (not tweego.exe!)
-	Ensure executable permission on file "compile"
-	In the root dir of sources (where you see src, devTools, bin...) run command "./compile" from console
-	compile-git will produce the same result file but with current commit hash in filename.
+	Ensure executable permission on file "compile.sh"
+	In the root dir of sources (where you see src, devTools, bin...) run command "./compile.sh" from console
 
 	Mac:
 	Not supported directly (I don't have access to Mac for testing).
diff --git a/compile b/compile
deleted file mode 100755
index fe95b68a0c2..00000000000
--- a/compile
+++ /dev/null
@@ -1,74 +0,0 @@
-#!/bin/bash
-
-mkdir -p bin
-
-while [[ "$1" ]]
-do
-	case $1 in
-	--insane)
-		insane="true"
-	;;
-	*)
-		echo "Unknown argument $1"
-		exit 1
-	esac
-	shift
-done
-
-# Find and insert current commit
-COMMIT=$(git rev-parse --short HEAD)
-sed -Ei "s/build .releaseID/\0 commit $COMMIT/" src/gui/mainMenu/AlphaDisclaimer.tw
-
-if [[ ! "$insane" ]]
-then
-	# Run sanity check.
-	./sanityCheck
-fi
-
-export TWEEGO_PATH=devTools/tweeGo/storyFormats
-TWEEGO_EXE="tweego"
-
-if hash $TWEEGO_EXE 2>/dev/null; then
-	echo "system tweego binary"
-else
-	case "$(uname -m)" in
-	x86_64|amd64)
-		echo "x64 arch"
-		if [ "$(uname -s)" = "Darwin" ]; then
-			TWEEGO_EXE="./devTools/tweeGo/tweego_osx64"
-		else
-			TWEEGO_EXE="./devTools/tweeGo/tweego_nix64"
-		fi
-		;;
-	x86|i[3-6]86)
-		echo "x86 arch"
-		if [ "$(uname -s)" = "Darwin" ]; then
-			TWEEGO_EXE="./devTools/tweeGo/tweego_osx86"
-		else
-			TWEEGO_EXE="./devTools/tweeGo/tweego_nix86"
-		fi
-		;;
-	*)
-		echo "No system tweego binary found, and no precompiled binary for your platform available"
-		echo "Please compile tweego and put the executable in PATH"
-		exit 2
-	esac
-fi
-
-$TWEEGO_EXE -o "bin/FC_pregmod_tmp.html" src/ --head devTools/head.html || build_failed="true"
-
-# Revert AlphaDisclaimer for next compilation
-git checkout -- src/gui/mainMenu/AlphaDisclaimer.tw
-
-if [ "$build_failed" = "true" ]
-then
-	exit 1
-fi
-
-#Make the output prettier, replacing \t with a tab and \n with a newline
-sed -i -e '/^.*<div id="store-area".*$/s/\\t/\t/g' -e '/^.*<div id="store-area".*$/s/\\n/\n/g' bin/FC_pregmod_tmp.html \
-	&& mv bin/FC_pregmod_tmp.html bin/FC_pregmod.html
-
-ln -s ../resources bin/ 2> /dev/null
-
-echo "bin/FC_pregmod.html compilation finished."
diff --git a/compile-git b/compile-git
deleted file mode 100755
index 2897281674b..00000000000
--- a/compile-git
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/bash
-
-mkdir -p bin
-
-# Run sanity check.
-./sanityCheck
-
-HASH="$(git rev-list -n 1 --abbrev-commit HEAD)"
-
-export TWEEGO_PATH=devTools/tweeGo/storyFormats
-TWEEGO_EXE="tweego"
-
-if hash $TWEEGO_EXE 2>/dev/null; then
-	echo "system tweego binary"
-else
-	case "$(uname -m)" in
-	x86_64|amd64)
-		echo "x64 arch"
-		if [ "$(uname -s)" = "Darwin" ]; then
-			TWEEGO_EXE="./devTools/tweeGo/tweego_osx64"
-		else
-			TWEEGO_EXE="./devTools/tweeGo/tweego_nix64"
-		fi
-		;;
-	x86|i[3-6]86)
-		echo "x86 arch"
-		if [ "$(uname -s)" = "Darwin" ]; then
-			TWEEGO_EXE="./devTools/tweeGo/tweego_osx86"
-		else
-			TWEEGO_EXE="./devTools/tweeGo/tweego_nix86"
-		fi
-		;;
-	*)
-		echo "No system tweego binary found, and no precompiled binary for your platform available"
-		echo "Please compile tweego and put the executable in PATH"
-		exit 2
-	esac
-fi
-
-$TWEEGO_EXE -o "bin/FC_pregmod_${HASH}_tmp.html" src/ --head devTools/head.html || build_failed="true"
-
-#Make the output prettier, replacing \t with a tab and \n with a newline
-sed -i -e '/^<div id="store-area".*$/s/\\t/\t/g' -e '/^<div id="store-area".*$/s/\\n/\n/g'  "bin/FC_pregmod_${HASH}_tmp.html" \
-	&& mv "bin/FC_pregmod_${HASH}_tmp.html" "bin/FC_pregmod_${HASH}.html"
-
-ln -s ../resources bin/ 2> /dev/null
-
-echo "bin/FC_pregmod_$HASH.html compilation finished."
diff --git a/compile-git+java-sanityCheck.sh b/compile-git+java-sanityCheck.sh
deleted file mode 100755
index 2fd438b3d4f..00000000000
--- a/compile-git+java-sanityCheck.sh
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/bash
-
-mkdir -p bin
-
-# Run sanity check.
-./java+gitGrep-sanityCheck.sh
-
-HASH="$(git rev-list -n 1 --abbrev-commit HEAD)"
-
-export TWEEGO_PATH=devTools/tweeGo/storyFormats
-TWEEGO_EXE="tweego"
-
-if hash $TWEEGO_EXE 2>/dev/null; then
-	echo "system tweego binary"
-else
-	case "$(uname -m)" in
-	x86_64|amd64)
-		echo "x64 arch"
-		if [ "$(uname -s)" = "Darwin" ]; then
-			TWEEGO_EXE="./devTools/tweeGo/tweego_osx64"
-		else
-			TWEEGO_EXE="./devTools/tweeGo/tweego_nix64"
-		fi
-		;;
-	x86|i[3-6]86)
-		echo "x86 arch"
-		if [ "$(uname -s)" = "Darwin" ]; then
-			TWEEGO_EXE="./devTools/tweeGo/tweego_osx86"
-		else
-			TWEEGO_EXE="./devTools/tweeGo/tweego_nix86"
-		fi
-		;;
-	*)
-		echo "No system tweego binary found, and no precompiled binary for your platform available"
-		echo "Please compile tweego and put the executable in PATH"
-		exit 2
-	esac
-fi
-
-$TWEEGO_EXE -o "bin/FC_pregmod_${HASH}_tmp.html" src/ --head devTools/head.html || build_failed="true"
-
-#Make the output prettier, replacing \t with a tab and \n with a newline
-sed -i -e '/^<div id="store-area".*$/s/\\t/\t/g' -e '/^<div id="store-area".*$/s/\\n/\n/g'  "bin/FC_pregmod_${HASH}_tmp.html" \
-	&& mv "bin/FC_pregmod_${HASH}_tmp.html" "bin/FC_pregmod_${HASH}.html"
-
-ln -s ../resources bin/ 2> /dev/null
-
-echo "FC_pregmod_$HASH.html compilation finished."
diff --git a/compile.sh b/compile.sh
new file mode 100755
index 00000000000..9754f807d17
--- /dev/null
+++ b/compile.sh
@@ -0,0 +1,157 @@
+#!/bin/bash
+
+output=/dev/stdout
+
+# displays help text
+function displayHelp {
+  cat << HelpText
+Usage: compile.sh [OPTION]...
+
+Options:
+  -d, --dry      Do not compile
+  -g, --git      Add hash of HEAD to filename
+  -h, --help     Show this help text
+  -j, --java     Run sanityCheck based on java
+  -p, --python   Run sanityCheck based on python
+  -q, --quiet    Suppress terminal output
+HelpText
+}
+
+#display an error message
+function echoError {
+	echo -e "\033[0;31m$@\033[0m"
+}
+
+#display message
+function echoMessage {
+	echo "$1" > "${output}"
+}
+
+#compile the HTML file
+function compile {
+
+	mkdir -p bin
+
+	export TWEEGO_PATH=devTools/tweeGo/storyFormats
+	TWEEGO_EXE="tweego"
+
+	if hash $TWEEGO_EXE 2>/dev/null; then
+		echoMessage "system tweego binary"
+	else
+		case "$(uname -m)" in
+		x86_64|amd64)
+			echoMessage "x64 arch"
+			if [ "$(uname -s)" = "Darwin" ]; then
+				TWEEGO_EXE="./devTools/tweeGo/tweego_osx64"
+			else
+				TWEEGO_EXE="./devTools/tweeGo/tweego_nix64"
+			fi
+			;;
+		x86|i[3-6]86)
+			echoMessage "x86 arch"
+			if [ "$(uname -s)" = "Darwin" ]; then
+				TWEEGO_EXE="./devTools/tweeGo/tweego_osx86"
+			else
+				TWEEGO_EXE="./devTools/tweeGo/tweego_nix86"
+			fi
+			;;
+		*)
+			echoError "No system tweego binary found, and no precompiled binary for your platform available."
+			echoError "Please compile tweego and put the executable in PATH."
+			exit 2
+		esac
+	fi
+
+	if [[ "$usehash" ]]; then
+		HASH="$(git rev-list -n 1 --abbrev-commit HEAD)"
+
+		$TWEEGO_EXE -o "bin/FC_pregmod_${HASH}_tmp.html" src/ --head devTools/head.html || build_failed="true"
+
+		if [ "$build_failed" = "true" ]
+		then
+			echoError "Build failed."
+			exit 1
+		fi
+
+		#Make the output prettier, replacing \t with a tab and \n with a newline
+		sed -i -e '/^<div id="store-area".*$/s/\\t/\t/g' -e '/^<div id="store-area".*$/s/\\n/\n/g'  "bin/FC_pregmod_${HASH}_tmp.html" \
+			&& mv "bin/FC_pregmod_${HASH}_tmp.html" "bin/FC_pregmod_${HASH}.html"
+
+		ln -s ../resources bin/ 2> /dev/null
+
+		echoMessage "Saved to bin/FC_pregmod_$HASH.html."
+
+	else
+		# Find and insert current commit
+		COMMIT=$(git rev-parse --short HEAD)
+		sed -Ei "s/build .releaseID/\0 commit $COMMIT/" src/gui/mainMenu/AlphaDisclaimer.tw
+
+		$TWEEGO_EXE -o "bin/FC_pregmod_tmp.html" src/ --head devTools/head.html || build_failed="true"
+
+		# Revert AlphaDisclaimer for next compilation
+		git checkout -- src/gui/mainMenu/AlphaDisclaimer.tw
+
+		if [ "$build_failed" = "true" ]
+		then
+			echoError "Build failed."
+			exit 1
+		fi
+
+		#Make the output prettier, replacing \t with a tab and \n with a newline
+		sed -i -e '/^.*<div id="store-area".*$/s/\\t/\t/g' -e '/^.*<div id="store-area".*$/s/\\n/\n/g' bin/FC_pregmod_tmp.html \
+			&& mv bin/FC_pregmod_tmp.html bin/FC_pregmod.html
+
+		ln -s ../resources bin/ 2> /dev/null
+
+		echoMessage "Saved to bin/FC_pregmod.html."
+	fi
+}
+
+if [[ "$1" == "" ]]; then
+	#tip if no option
+	echoMessage "For more options see compile.sh -h."
+else
+	#parse options
+	while [[ "$1" ]]
+	do
+		case $1 in
+		-d|--dry)
+			dry="true"
+		;;
+		-g|--git)
+			usehash="true"
+		;;
+		-h|--help)
+			displayHelp
+			exit 0
+		;;
+		-j|--java)
+			java="true"
+		;;
+		-p|--python)
+			python="true"
+		;;
+		-q|--quiet)
+			output=/dev/null
+		;;
+		*)
+			echoError "Unknown argument $1."
+			displayHelp
+			exit 1
+		esac
+		shift
+	done
+fi
+
+# Run sanity check.
+[ -n "$java" ] && ./java+gitGrep-sanityCheck.sh
+
+[ -n "$python" ] && ./sanityCheck
+
+#compile
+if [[ "$dry" ]]; then
+	echoMessage "Dry run finished."
+else
+	compile
+	echoMessage "Compilation finished."
+fi
-- 
GitLab