export type SyncIosVersioningMode = "check" | "write";
function normalizeTrailingNewline(value: string): string { return value.endsWith("\n") ? value : `${value}\n`;
}
export function normalizePinnedIosVersion(rawVersion: string): string { const trimmed = rawVersion.trim(); if (!trimmed) { thrownew Error(`Missing iOS version in ${IOS_VERSION_FILE}.`);
}
const match = PINNED_IOS_VERSION_PATTERN.exec(trimmed); if (!match) { thrownew Error(`Invalid iOS version '${rawVersion}'. Expected pinned CalVer like 2026.4.6.`);
}
return match[1] ?? trimmed;
}
export function normalizeGatewayVersionToPinnedIosVersion(rawVersion: string): string { const trimmed = rawVersion.trim().replace(/^v/u, ""); if (!trimmed) { thrownew Error("Missing root package.json version.");
}
const match = GATEWAY_VERSION_PATTERN.exec(trimmed); if (!match) { thrownew Error(
`Invalid gateway version '${rawVersion}'. Expected YYYY.M.D, YYYY.M.D-beta.N, or YYYY.M.D-N.`,
);
}
return match[1] ?? trimmed;
}
export function readRootPackageVersion(rootDir = path.resolve(".")): string { const packageJsonPath = path.join(rootDir, "package.json"); const parsed = JSON.parse(readFileSync(packageJsonPath, "utf8")) as { version?: unknown }; const version = typeof parsed.version === "string" ? parsed.version.trim() : ""; if (!version) { thrownew Error(`Missing package.json version in ${packageJsonPath}.`);
} return version;
}
let endIndex = lines.length; for (let index = startIndex + 1; index < lines.length; index += 1) { if (lines[index]?.startsWith("## ")) {
endIndex = index; break;
}
}
const body = lines
.slice(startIndex + 1, endIndex)
.join("\n")
.trim(); return body || null;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.