Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 27 additions & 3 deletions .mise/tasks/build.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,31 @@
#!/usr/bin/env bun
//MISE description="Run all build tasks"
//MISE depends=["build:check-elm-docs", "build:cli", "build:cli2", "build:treeview", "build:morphir-ts", "build:dev-server", "build:components", "build:try-morphir"]
//MISE description="Run all build tasks (orchestrates elm work serially to avoid Windows races)"

import { log } from "./_lib.ts";
import { exec, log, ROOT_DIR } from "./_lib.ts";

// elm make is not concurrent-write-safe on Windows: multiple processes race on
// ~/.elm/<package>/artifacts.dat and per-project elm-stuff/, producing
// "PROBLEM BUILDING DEPENDENCIES" failures. Most build tasks here invoke elm
// directly (build:cli, build:cli2, build:dev-server, build:try-morphir,
// build:check-elm-docs) or indirectly via node-elm-compiler in cli/morphir-elm.js
// (build:morphir-ts), so we run everything serially.
//
// mise reads `//MISE depends=` headers but its scheduler parallelizes any tasks
// whose deps are satisfied rather than enforcing strict ordering, so we orchestrate
// explicitly here. `--skip-deps` prevents the subtasks from re-running their own
// declared deps (which would otherwise repeatedly trigger build:cli, etc.). The
// `sources` and `outputs` declarations on each subtask let mise skip re-running
// a task whose inputs haven't changed.
const run = (task: string) =>
exec("mise", ["run", "--skip-deps", task], { cwd: ROOT_DIR });

await run("build:check-elm-docs");
await run("build:cli");
await run("build:cli2");
await run("build:dev-server");
await run("build:try-morphir");
await run("build:components"); // concat: depends on dev-server output
await run("build:morphir-ts"); // invokes elm via cli/morphir-elm.js
await run("build:treeview"); // webpack only, no elm

log("build", "All build tasks completed");
2 changes: 2 additions & 0 deletions .mise/tasks/build/check-elm-docs.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
#!/usr/bin/env bun
//MISE description="Check Elm documentation compiles"
//MISE sources=["src/**/*.elm", "elm.json"]
//MISE outputs=["docs.json"]

import { elmMake, log } from "../_lib.ts";

Expand Down
2 changes: 2 additions & 0 deletions .mise/tasks/build/cli.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
#!/usr/bin/env bun
//MISE description="Build CLI (Elm compilation)"
//MISE depends=["build:check-elm-docs"]
//MISE sources=["src/**/*.elm", "cli/src/**/*.elm", "cli/elm.json"]
//MISE outputs=["cli/Morphir.Elm.CLI.js", "cli/Morphir.Elm.DevCLI.js"]

import { elmMake, log, PATHS } from "../_lib.ts";

Expand Down
2 changes: 2 additions & 0 deletions .mise/tasks/build/cli2.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
#!/usr/bin/env bun
//MISE description="Build CLI2 (TypeScript + Elm in parallel)"
//MISE depends=["build:cli"]
//MISE sources=["src/**/*.elm", "cli2/src/**/*.elm", "cli2/elm.json", "cli2/*.ts"]
//MISE outputs=["cli2/Morphir.Elm.CLI.cjs", "cli2/lib/**/*.js"]

import { elmMake, log, PATHS, join } from "../_lib.ts";
import { mkdir, rm } from "fs/promises";
Expand Down
35 changes: 17 additions & 18 deletions .mise/tasks/build/dev-server.ts
Original file line number Diff line number Diff line change
@@ -1,28 +1,27 @@
#!/usr/bin/env bun
//MISE description="Build development server Elm components"
//MISE depends=["build:cli"]
//MISE sources=["src/**/*.elm", "cli/src/**/*.elm", "cli/elm.json"]
//MISE outputs=["cli/web/index.js", "cli/web/insight.js", "cli/web/insightapp.js"]

import { elmMake, log, PATHS } from "../_lib.ts";

log("build:dev-server", "Building dev server Elm components...");

// Build all dev server components in parallel
await Promise.all([
// Main dev server app
elmMake(["src/Morphir/Web/DevelopApp.elm"], {
cwd: PATHS.cli,
output: "web/index.js",
}),
// Insight API
elmMake(["src/Morphir/Web/Insight.elm"], {
cwd: PATHS.cli,
output: "web/insight.js",
}),
// Dev server API variant
elmMake(["src/Morphir/Web/DevelopApp.elm"], {
cwd: PATHS.cli,
output: "web/insightapp.js",
}),
]);
// Sequential: concurrent elm make calls against the same elm.json race on
// cli/elm-stuff and ~/.elm/<package>/artifacts.dat, producing
// "PROBLEM BUILDING DEPENDENCIES" failures on Windows.
await elmMake(["src/Morphir/Web/DevelopApp.elm"], {
cwd: PATHS.cli,
output: "web/index.js",
});
await elmMake(["src/Morphir/Web/Insight.elm"], {
cwd: PATHS.cli,
output: "web/insight.js",
});
await elmMake(["src/Morphir/Web/DevelopApp.elm"], {
cwd: PATHS.cli,
output: "web/insightapp.js",
});

log("build:dev-server", "Done");
2 changes: 2 additions & 0 deletions .mise/tasks/build/morphir-ts.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
#!/usr/bin/env bun
//MISE description="Build Morphir TypeScript library"
//MISE depends=["build:cli", "build:cli2"]
//MISE sources=["src/**/*.elm", "morphir.json", "morphir-ts/tsconfig.json", "morphir-ts/src/sdk/**/*", "cli/Morphir.Elm.CLI.js", "cli/Morphir.Elm.DevCLI.js", "cli2/Morphir.Elm.CLI.cjs"]
//MISE outputs=["morphir-ir.json", "morphir-ts/dist/**/*.js", "morphir-ts/src/generated/**/*.ts"]

import { del, morphirMake, morphirGen, exec, log, PATHS, ROOT_DIR, copyGlob, join } from "../_lib.ts";

Expand Down
2 changes: 2 additions & 0 deletions .mise/tasks/build/treeview.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
#!/usr/bin/env bun
//MISE description="Build treeview webpack bundle"
//MISE depends=["build:check-elm-docs"]
//MISE sources=["cli/treeview/src/*", "cli/treeview/webpack.config.js", "cli/treeview/tsconfig.json"]
//MISE outputs=["cli/treeview/dist/bundle.js", "cli/treeview/dist/index.html"]

import { exec, log, PATHS, ROOT_DIR } from "../_lib.ts";

Expand Down
2 changes: 2 additions & 0 deletions .mise/tasks/build/try-morphir.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
#!/usr/bin/env bun
//MISE description="Build Try Morphir web app"
//MISE depends=["build:cli"]
//MISE sources=["src/**/*.elm", "cli/src/**/*.elm", "cli/elm.json"]
//MISE outputs=["cli/web/try-morphir.html"]

import { elmMake, log, PATHS } from "../_lib.ts";

Expand Down
Loading