summarylogtreecommitdiffstats
path: root/openra-sa
diff options
context:
space:
mode:
authorBrenton Horne2023-01-10 23:06:06 +1000
committerBrenton Horne2023-01-10 23:06:06 +1000
commit72f697e15af59c0756a47aecb4d1e2874d565d0e (patch)
tree08dbd96c228be885e72c3b23c68b52809b4380cf /openra-sa
downloadaur-openra-sa-git.tar.gz
Initial commit
Diffstat (limited to 'openra-sa')
-rwxr-xr-xopenra-sa52
1 files changed, 52 insertions, 0 deletions
diff --git a/openra-sa b/openra-sa
new file mode 100755
index 000000000000..b7e79307d7ef
--- /dev/null
+++ b/openra-sa
@@ -0,0 +1,52 @@
+#!/bin/sh
+
+set -e
+command -v mono >/dev/null 2>&1 || { echo >&2 "The OpenRA mod SDK requires mono."; exit 1; }
+if command -v python3 >/dev/null 2>&1; then
+ PYTHON="python3"
+else
+ command -v python >/dev/null 2>&1 || { echo >&2 "The OpenRA mod SDK requires python."; exit 1; }
+ PYTHON="python"
+fi
+
+require_variables() {
+ missing=""
+ for i in "$@"; do
+ eval check="\$$i"
+ [ -z "${check}" ] && missing="${missing} ${i}\n"
+ done
+ if [ ! -z "${missing}" ]; then
+ echo "Required mod.config variables are missing:\n${missing}Repair your mod.config (or user.config) and try again."
+ exit 1
+ fi
+}
+
+TEMPLATE_LAUNCHER=$(${PYTHON} -c "import os; print(os.path.realpath('$0'))")
+PRELIM_MOD_ID=$(echo $TEMPLATE_LAUNCHER | cut -d '/' -f 4)
+TEMPLATE_ROOT=/usr/lib/$PRELIM_MOD_ID
+MOD_SEARCH_PATHS="${TEMPLATE_ROOT}/mods,./mods"
+
+# shellcheck source=mod.config
+. "${TEMPLATE_ROOT}/mod.config"
+
+if [ -f "${TEMPLATE_ROOT}/user.config" ]; then
+ # shellcheck source=user.config
+ . "${TEMPLATE_ROOT}/user.config"
+fi
+
+require_variables "MOD_ID" "ENGINE_VERSION" "ENGINE_DIRECTORY"
+cd "${TEMPLATE_ROOT}"
+if [ ! -f "${ENGINE_DIRECTORY}/bin/OpenRA.dll" ] || [ "$(cat "${ENGINE_DIRECTORY}/VERSION")" != "${ENGINE_VERSION}" ]; then
+ echo "Required engine files not found."
+ echo "Run \`make\` in the mod directory to fetch and build the required files, then try again.";
+ exit 1
+fi
+
+if command -v mono >/dev/null 2>&1 && [ "$(grep -c .NETCoreApp,Version= ${ENGINE_DIRECTORY}/bin/OpenRA.dll)" = "0" ]; then
+ RUNTIME_LAUNCHER="mono --debug"
+else
+ RUNTIME_LAUNCHER="dotnet"
+fi
+
+cd "${ENGINE_DIRECTORY}"
+${RUNTIME_LAUNCHER} bin/OpenRA.dll Engine.EngineDir=".." Engine.LaunchPath="${TEMPLATE_LAUNCHER}" "Engine.ModSearchPaths=${MOD_SEARCH_PATHS}" Game.Mod="${MOD_ID}" "$@"