sdk

Radroots SDK and bindings
git clone https://radroots.dev/git/sdk.git
Log | Files | Refs | README

radroots_sdk_artifact.mjs (2049B)


      1 #!/usr/bin/env node
      2 
      3 import { readFileSync } from "node:fs";
      4 import { dirname, resolve } from "node:path";
      5 import { fileURLToPath } from "node:url";
      6 
      7 import {
      8   artifactRoute,
      9   resolveCanonicalSourceRoot,
     10   run,
     11   sourceDateEpoch,
     12   validateConsumerRoot,
     13 } from "./radroots_sdk_artifact_lib.mjs";
     14 
     15 const consumerRoot = resolve(dirname(fileURLToPath(import.meta.url)), "..");
     16 const [mode, routeName] = process.argv.slice(2);
     17 if (mode !== "source-check" && !["check", "write"].includes(mode)) {
     18   throw new Error("usage: radroots_sdk_artifact.mjs source-check | <check|write> <typescript|wasm|swift|kotlin>");
     19 }
     20 
     21 validateConsumerRoot(consumerRoot);
     22 const sourceRoot = resolveCanonicalSourceRoot(process.env.RADROOTS_LIB_SOURCE_ROOT);
     23 const sourceLock = readFileSync(resolve(consumerRoot, "radroots.lib.source-lock.v1.toml"), "utf8");
     24 const revision = sourceLock.match(/^revision = "([0-9a-f]{40})"$/m)?.[1];
     25 if (!revision) {
     26   throw new Error("source lock must contain one full lowercase revision");
     27 }
     28 
     29 const commandEnv = { ...process.env };
     30 if (process.env.RADROOTS_OFFLINE === "1") {
     31   commandEnv.CARGO_NET_OFFLINE = "true";
     32 }
     33 
     34 run("cargo", ["extbuild", "doctor"], { cwd: sourceRoot, env: commandEnv });
     35 run(
     36   "cargo",
     37   [
     38     "extbuild",
     39     "run",
     40     "--",
     41     "cargo",
     42     "xtask",
     43     "source-lock",
     44     "--consumer-root",
     45     consumerRoot,
     46   ],
     47   { cwd: sourceRoot, env: commandEnv },
     48 );
     49 
     50 if (mode !== "source-check") {
     51   const route = artifactRoute(routeName);
     52   run(
     53     "cargo",
     54     [
     55       "extbuild",
     56       "run",
     57       "--",
     58       "cargo",
     59       "xtask",
     60       "artifact",
     61       "--product",
     62       "sdk",
     63       "--target",
     64       route.target,
     65       "--language",
     66       route.language,
     67       "--mode",
     68       mode,
     69       "--consumer-root",
     70       consumerRoot,
     71       "--source-root",
     72       sourceRoot,
     73       "--output",
     74       route.output,
     75       "--source-date-epoch",
     76       sourceDateEpoch(sourceRoot, revision, commandEnv),
     77       "--builder-id",
     78       "radroots_sdk_artifact_v1",
     79     ],
     80     { cwd: sourceRoot, env: commandEnv },
     81   );
     82 }