Files
openclaw/scripts/ios-version.ts
Nimrod Gutman 6681878339 feat(ios): pin calver release versioning (#63001)
* feat(ios): decouple app versioning from gateway

* feat(ios): pin calver release versioning

* refactor(ios): drop prerelease version helper fields

* docs(changelog): note pinned ios release versioning (#63001) (thanks @ngutman)
2026-04-08 11:25:35 +03:00

79 lines
1.9 KiB
TypeScript

import path from "node:path";
import { resolveIosVersion } from "./lib/ios-version.ts";
type CliOptions = {
field: string | null;
format: "json" | "shell";
rootDir: string;
};
function parseArgs(argv: string[]): CliOptions {
let field: string | null = null;
let format: "json" | "shell" = "json";
let rootDir = path.resolve(".");
for (let index = 0; index < argv.length; index += 1) {
const arg = argv[index];
switch (arg) {
case "--field": {
field = argv[index + 1] ?? null;
index += 1;
break;
}
case "--json": {
format = "json";
break;
}
case "--shell": {
format = "shell";
break;
}
case "--root": {
const value = argv[index + 1];
if (!value) {
throw new Error("Missing value for --root.");
}
rootDir = path.resolve(value);
index += 1;
break;
}
case "-h":
case "--help": {
console.log(
`Usage: node --import tsx scripts/ios-version.ts [--json|--shell] [--field name] [--root dir]\n`,
);
process.exit(0);
}
default: {
throw new Error(`Unknown argument: ${arg}`);
}
}
}
return { field, format, rootDir };
}
const options = parseArgs(process.argv.slice(2));
const version = resolveIosVersion(options.rootDir);
if (options.field) {
const value = version[options.field as keyof typeof version];
if (value === undefined) {
throw new Error(`Unknown iOS version field '${options.field}'.`);
}
process.stdout.write(`${String(value)}\n`);
process.exit(0);
}
if (options.format === "shell") {
process.stdout.write(
[
`OPENCLAW_IOS_VERSION=${version.canonicalVersion}`,
`OPENCLAW_MARKETING_VERSION=${version.marketingVersion}`,
`OPENCLAW_BUILD_VERSION=${version.buildVersion}`,
].join("\n") + "\n",
);
} else {
process.stdout.write(`${JSON.stringify(version, null, 2)}\n`);
}