fix: module 10 review round 1 (module-local SpellGrid cards, cast target check, CLI without panic hook)
- SpellGrid cards move to course/10-spellgrid/cards; start-module and verify-references stage course/cards plus module-local cards up to the module, so M5-M9 workspaces get exactly the pre-M10 card set. - cast() rejects a chosen-target spell without a target (checkCast/checkPlay); new test_10_targeted_spell_needs_target. - Rust CLI pre-validates instead of swapping the global panic hook. - Catalog: CRIER noun; DEATHRATTLE/BATTLECRY note on lexicon vs catalog role. - Lesson: design note on mid-movement reparse. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
a0cf9be214
commit
6f576940b7
@@ -2,7 +2,7 @@
|
||||
// Copies module NN's tests for the learner's track into <workspace>/tests/.
|
||||
import { cpSync, existsSync, mkdirSync, readFileSync } from "node:fs";
|
||||
import { basename, join } from "node:path";
|
||||
import { moduleDirs, courseRoot, testFiles, fail } from "./lib.mjs";
|
||||
import { cardDirs, moduleDirs, courseRoot, testFiles, fail } from "./lib.mjs";
|
||||
|
||||
const [num, ws] = process.argv.slice(2);
|
||||
if (!/^\d\d$/.test(num || "") || !ws) fail("usage: start-module.mjs <NN> <workspaceDir>");
|
||||
@@ -32,13 +32,12 @@ mkdirSync(join(ws, "tests"), { recursive: true });
|
||||
for (const f of files) cpSync(f, join(ws, "tests", basename(f)));
|
||||
console.log(`Copied ${files.length} test file(s) for module ${num} into ${join(ws, "tests")}`);
|
||||
|
||||
// The course's card data (read by your content from Module 5). Refreshed on every start;
|
||||
// card files you add yourself are kept.
|
||||
const cards = join(courseRoot(), "cards");
|
||||
if (existsSync(cards)) {
|
||||
cpSync(cards, join(ws, "cards"), { recursive: true });
|
||||
console.log(`Copied the course card data into ${join(ws, "cards")}`);
|
||||
}
|
||||
// The course's card data (read by your content from Module 5): course/cards, plus the cards
|
||||
// of each module up to this one that has its own (Module 10's SpellGrid cards). Refreshed on
|
||||
// every start; card files you add yourself are kept.
|
||||
const cardSources = cardDirs(num);
|
||||
for (const cards of cardSources) cpSync(cards, join(ws, "cards"), { recursive: true });
|
||||
if (cardSources.length) console.log(`Copied the course card data into ${join(ws, "cards")}`);
|
||||
|
||||
// The module's puzzle levels (Module 10's tests load them from levels/).
|
||||
const levels = join(mod.path, "levels");
|
||||
|
||||
Reference in New Issue
Block a user