Files
institution/Tools/package.sh
T
flan 6fd3c3eb9b Vendor Justice's crime ThoughtDefs + updated DLL into the drop-in
package.sh now merges Justice's Defs (the crime relationship thoughts) into the
aggregate's Defs tree alongside Contraband's, so the shipped one-mod Institution
carries them. Re-vendors the Justice DLL with the consequences/relationship code.
2026-07-15 17:06:54 +00:00

54 lines
2.5 KiB
Bash
Executable File

#!/usr/bin/env bash
# Assemble the shippable, drop-in "Institution" mod into this repo.
#
# The Institution suite's code lives in SEPARATE sibling repos (rimworld-core, -contraband, -justice,
# -gangs) as independent projects/DLLs -- that is what keeps it modular and splittable. For DISTRIBUTION
# they are vendored into ONE mod folder (this repo) with one About.xml and a settings shim that toggles
# each layer. This script rebuilds the sibling DLLs clean (no self-test) and copies them + Contraband's
# Defs in here, so the repo is a complete installable mod.
#
# To split back into separate mods later: stop running this, and ship each sibling repo as its own mod
# (their About.xml files still exist). Nothing in the code changes.
#
# Usage: Tools/package.sh (assumes siblings at ../rimworld-<name>)
set -euo pipefail
HERE="$(cd "$(dirname "$0")/.." && pwd)"
SIB="$(dirname "$HERE")"
CORE="$SIB/rimworld-core"
CB="$SIB/rimworld-contraband"
JUST="$SIB/rimworld-justice"
GANGS="$SIB/rimworld-gangs"
command -v dotnet >/dev/null || { echo "dotnet not on PATH" >&2; exit 1; }
echo "==> building the engine + feature DLLs (clean, no self-test)"
dotnet build "$CORE/Source/Core/Core.csproj" -c Release -v q --nologo
dotnet build "$JUST/Source/Justice/Justice.csproj" -c Release -v q --nologo
dotnet build "$CB/Source/Contraband/Contraband.csproj" -c Release -v q --nologo
dotnet build "$GANGS/Source/Gangs/Gangs.csproj" -c Release -v q --nologo
echo "==> vendoring DLLs into Assemblies/"
mkdir -p "$HERE/Assemblies"
rm -f "$HERE/Assemblies/"*.dll # clear old layout
dotnet build "$HERE/Source/Institution/Institution.csproj" -c Release -v q --nologo # (re-)emit Institution.dll here
cp "$CORE/Assemblies/InstitutionCore.dll" "$HERE/Assemblies/"
cp "$CB/Assemblies/Contraband.dll" "$HERE/Assemblies/"
cp "$JUST/Assemblies/InstitutionJustice.dll" "$HERE/Assemblies/"
cp "$GANGS/Assemblies/InstitutionGangs.dll" "$HERE/Assemblies/"
echo "==> vendoring the feature content"
for d in Defs Patches Languages Textures; do
rm -rf "$HERE/$d"
[[ -e "$CB/$d" ]] && cp -r "$CB/$d" "$HERE/$d"
done
# Justice ships defs of its own (crime thoughts, etc.); merge them into the same Defs/ tree.
if [[ -e "$JUST/Defs" ]]; then
mkdir -p "$HERE/Defs"
cp -r "$JUST/Defs/." "$HERE/Defs/"
fi
echo "==> done. Assemblies:"
ls -1 "$HERE/Assemblies/" | sed 's/^/ /'
echo "The repo is now a complete drop-in Institution mod (Core bundled). Requires only Harmony."