This repo builds the Grill CLI and project setup tooling. The generated map-project agent notes live in templates/AGENTS.md; keep this root file focused on WurstSetup itself.
- Project config models come from
com.github.wurstscript:wurst-project-config; do not reintroduce local DAO copies. - Local helpers in
config/ProjectConfigModels.ktshould stay thin: typealiases plus immutable copy helpers for shared records. YamlHelper.dumpProjectConfigintentionally serializes a pruned YAML map instead of the shared records directly. This preserves the old user-facingwurst.buildbehavior by omitting null/default nested fields.wbschema.jsonshould stay lenient and aligned with the shared config parser, especially forscriptMode,wc3Patch, and nullable legacy fields.
CoreJassProvider.DEFAULT_PATCHisv2.0.- Core JASS is fetched from
wurstscript/jass-history. - Friendly patch targets must resolve through the shared parser /
Wc3PatchTargetstyle rules:- below
1.29=> pre-1.29 behavior and stdlib 1.29through1.31=> classic1.32+,1.36,2.0, andReforged-*=> Reforged
- below
- Do not add alias hacks for broken jass-history folder names. Fix
wurstscript/jass-historyinstead. - Bundled core JASS fallbacks are patch-specific. Do not silently use the old
reforgedbundle as thev2.0fallback. - Keep provenance in
_build/core-jass.properties; mismatched cachedcommon.j/blizzard.jshould be refreshed.
grill generateshould write a schema-valid minimalwurst.build.- Keep
dependencies,scriptMode, andwc3Patch. buildMapDatashould only seed known fields:name,fileName, andauthor. Do not emit nested default scaffolding likescenarioData,optionsFlags,players: [],forces: [], orloadingScreen: null.- Generate supports
--wc3-path <dir>. It should detect/show the Warcraft III client family and warn if it does not match the selected project patch target. - The VS Code setting
wurst.wc3pathshould only be written for a valid detected/selected WC3 folder.
- Grill installs itself to
~/.wurst/grill-cli/grill.jar. - The Gradle task
make_for_userdirmust keep that jar refreshed for local testing. remove wurstscriptmust not delete the whole~/.wurstfolder; it should remove compiler artifacts only and leave Grill/runtime state intact.- Tests should not mutate the real user install. Use the
wurst.install.dirsystem property override when testing installation/removal behavior.
- Build/typecheck should not require parsing the installed Warcraft executable when
wc3Patchis pinned. - Run/launch is different: the selected WC3 executable controls launch arguments. If the client family and project patch target differ, warn and allow choosing another WC3 folder.
- Keep compiler-facing patch behavior tested in the WurstScript repo as well; Grill and compiler can diverge if only one side is tested.
Run the full WurstSetup suite before publishing:
./gradlew testUseful focused checks:
./gradlew test --tests GenerateTests --tests YamlHelperTests --tests Wc3ClientDetectorTests
./gradlew test --tests CMDTests.testUnInstallCmd
./gradlew make_for_userdirgit diff --check should be clean apart from Windows CRLF warnings.