Skip to content
Snippets Groups Projects
compile.sh 3.42 KiB
Newer Older
  • Learn to ignore specific revisions
  • #!/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.
    
    Arkerthan's avatar
    Arkerthan committed
    [ -n "$java" ] && ./sanityCheck.sh java
    
    Arkerthan's avatar
    Arkerthan committed
    [ -n "$python" ] && ./sanityCheck.sh
    
    
    #compile
    if [[ "$dry" ]]; then
    	echoMessage "Dry run finished."
    else
    	compile
    	echoMessage "Compilation finished."
    fi