Newer
Older
#!/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
-m, --minify Minify output files
HelpText
}
#display an error message
function echoError() {
echo -e "\033[0;31m$*\033[0m"
function echoMessage() {
echo "$1" >"${output}"
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"
elif [ "$OSTYPE" = "msys" ]; then
TWEEGO_EXE="./devTools/tweeGo/tweego_win64"
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"
elif [ "$OSTYPE" = "msys" ]; then
TWEEGO_EXE="./devTools/tweeGo/tweego_win86"
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
;;
if [ "$(uname -m)" = "x86_64" ] || [ "$(uname -m)" = "amd64" ]; then
if [ "$(uname -s)" = "Darwin" ]; then
MINIFY_EXE="./devTools/minify/minify_darwin_amd64"
elif [ "$OSTYPE" = "msys" ]; then
MINIFY_EXE="./devTools/minify/minify_win_amd64.exe"
else
MINIFY_EXE="./devTools/minify/minify_linux_amd64"
fi
fi
# Find and insert current commit
if [[ "$ci" ]]; then
COMMIT=$CI_COMMIT_SHORT_SHA
elif [[ -d .git ]]; then
COMMIT=$(git rev-parse --short HEAD)
if [[ "$usehash" ]]; then
file="bin/FC_pregmod_${COMMIT}.html"
fi
if [[ "$minify" ]]; then
final_file=$file
file="bin/tmp.html"
fi
printf "App.Version.commitHash = '%s';\n" "${COMMIT}" > src/002-config/fc-version.js.commitHash.js
fi
devTools/concatFiles.sh js/ '*.js' bin/fc.js
$TWEEGO_EXE -o "$file" --module=bin/fc.js --module=bin/fc.css --head resources/raster/favicon/arcologyVector.html src/ || build_failed="true"
rm -f bin/fc.css
if [ "$build_failed" = "true" ]; then
if [[ "$minify" ]]; then
if [[ "$MINIFY_EXE" ]]; then
# SC license is inside an HTML comment, so keep them.
# eval depends on local variables, so don't modify them (Config, Engine, ...)
$MINIFY_EXE --html-keep-comments --js-keep-var-names "$file" > "$final_file"
rm -f "$file"
else
echoError "Minification only available on amd64 systems."
mv "$file" "$final_file"
fi
file=$final_file
fi
if [[ "$ci" || -d .git ]]; then
rm src/002-config/fc-version.js.commitHash.js
}
if [[ "$1" == "" ]]; then
#tip if no option
echoMessage "For more options see compile.sh -h."
else
#parse options
-d | --dry)
dry="true"
;;
-g | --git)
usehash="true"
;;
-h | --help)
displayHelp
exit 0
;;
-s | --sanity)
sanity="true"
;;
-q | --quiet)
output=/dev/null
;;
-t | --themes)
themes="true"
;;
-m | --minify)
minify="true"
;;
--ci)
ci="true"
;;
*)
echoError "Unknown argument $1."
displayHelp
exit 1
;;
esac
shift
done
fi
# Run sanity check.
#compile
if [[ "$dry" ]]; then
echoMessage "Dry run finished."
else
compile
# compile themes
if [[ "$themes" ]]; then
(
cd themes/ || exit
for D in *; do
if [ -d "${D}" ]; then
../devTools/concatFiles.sh "${D}"/ '*.css' ../bin/"${D}".css
fi
done
)
echoMessage "Themes compiled at $(date +%T)"