Phase 5: scaffold Crucible (sow-tools) — dispatcher + builder shims, container, PR-first CI, fail-closed (D11, D19).

This commit is contained in:
2026-06-11 20:36:13 +02:00
commit 0d6eb2aeaa
28 changed files with 987 additions and 0 deletions
+11
View File
@@ -0,0 +1,11 @@
// Command crucible-depot is the standalone depot builder (equivalent to
// `crucible depot`). A single-token binary keeps consumer wrapper scripts simple.
package main
import (
"os"
"gitea.westgate.pw/ShadowsOverWestgate/sow-tools/internal/dispatch"
)
func main() { os.Exit(dispatch.RunBuilder("depot", os.Args[1:])) }
+10
View File
@@ -0,0 +1,10 @@
// Command crucible-hak is the standalone HAK builder (equivalent to `crucible hak`).
package main
import (
"os"
"gitea.westgate.pw/ShadowsOverWestgate/sow-tools/internal/dispatch"
)
func main() { os.Exit(dispatch.RunBuilder("hak", os.Args[1:])) }
+11
View File
@@ -0,0 +1,11 @@
// Command crucible-module is the standalone module builder (equivalent to
// `crucible module`). sow-module resolves this binary to package its .mod.
package main
import (
"os"
"gitea.westgate.pw/ShadowsOverWestgate/sow-tools/internal/dispatch"
)
func main() { os.Exit(dispatch.RunBuilder("module", os.Args[1:])) }
+11
View File
@@ -0,0 +1,11 @@
// Command crucible-topdata is the standalone topdata builder (equivalent to
// `crucible topdata`). sow-topdata resolves this binary to compile 2da/tlk + wiki.
package main
import (
"os"
"gitea.westgate.pw/ShadowsOverWestgate/sow-tools/internal/dispatch"
)
func main() { os.Exit(dispatch.RunBuilder("topdata", os.Args[1:])) }
+10
View File
@@ -0,0 +1,10 @@
// Command crucible-wiki is the standalone wiki builder (equivalent to `crucible wiki`).
package main
import (
"os"
"gitea.westgate.pw/ShadowsOverWestgate/sow-tools/internal/dispatch"
)
func main() { os.Exit(dispatch.RunBuilder("wiki", os.Args[1:])) }
+10
View File
@@ -0,0 +1,10 @@
// Command crucible is the Crucible dispatcher: `crucible <builder> [args]`.
package main
import (
"os"
"gitea.westgate.pw/ShadowsOverWestgate/sow-tools/internal/dispatch"
)
func main() { os.Exit(dispatch.Main(os.Args[1:])) }