mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-12 09:41:11 +00:00
* 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)
79 lines
1.9 KiB
TypeScript
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`);
|
|
}
|