openmates 0.20.0-alpha.0 → 0.20.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-2PETDZ4J.js → chunk-SVQF3GDG.js} +57 -7
- package/dist/cli.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
|
@@ -30521,6 +30521,51 @@ function containsBoundedWebResult(value) {
|
|
|
30521
30521
|
return Object.values(record2).some(containsBoundedWebResult);
|
|
30522
30522
|
}
|
|
30523
30523
|
|
|
30524
|
+
// src/releaseChannel.ts
|
|
30525
|
+
var RELEASES_URL = "https://api.github.com/repos/glowingkitty/OpenMates/releases?per_page=100";
|
|
30526
|
+
var EXACT_RELEASE_TAG = /^v(\d+)\.(\d+)\.(\d+)$/;
|
|
30527
|
+
function selectLatestStableReleaseTag(payload) {
|
|
30528
|
+
if (!Array.isArray(payload)) throw new Error("GitHub returned invalid release metadata.");
|
|
30529
|
+
const candidates = payload.flatMap((item) => {
|
|
30530
|
+
if (!item || typeof item !== "object") return [];
|
|
30531
|
+
const release2 = item;
|
|
30532
|
+
if (release2.draft !== false || typeof release2.tag_name !== "string") return [];
|
|
30533
|
+
const match = EXACT_RELEASE_TAG.exec(release2.tag_name);
|
|
30534
|
+
return match ? [{ tag: release2.tag_name, version: match.slice(1).map((part) => Number(part)) }] : [];
|
|
30535
|
+
});
|
|
30536
|
+
candidates.sort((left, right) => {
|
|
30537
|
+
for (let index = 0; index < 3; index += 1) {
|
|
30538
|
+
const difference = right.version[index] - left.version[index];
|
|
30539
|
+
if (difference !== 0) return difference;
|
|
30540
|
+
}
|
|
30541
|
+
return 0;
|
|
30542
|
+
});
|
|
30543
|
+
if (!candidates[0]) {
|
|
30544
|
+
throw new Error("No verified stable OpenMates release is published on GitHub.");
|
|
30545
|
+
}
|
|
30546
|
+
return candidates[0].tag;
|
|
30547
|
+
}
|
|
30548
|
+
async function resolveStableImageTag(fetcher = fetch) {
|
|
30549
|
+
let response;
|
|
30550
|
+
try {
|
|
30551
|
+
response = await fetcher(RELEASES_URL, {
|
|
30552
|
+
headers: {
|
|
30553
|
+
Accept: "application/vnd.github+json",
|
|
30554
|
+
"User-Agent": "openmates-cli"
|
|
30555
|
+
},
|
|
30556
|
+
signal: AbortSignal.timeout(15e3)
|
|
30557
|
+
});
|
|
30558
|
+
} catch (error) {
|
|
30559
|
+
throw new Error(
|
|
30560
|
+
`Could not resolve the stable OpenMates release from GitHub: ${error instanceof Error ? error.message : String(error)}`
|
|
30561
|
+
);
|
|
30562
|
+
}
|
|
30563
|
+
if (!response.ok) {
|
|
30564
|
+
throw new Error(`Could not resolve the stable OpenMates release from GitHub (HTTP ${response.status}).`);
|
|
30565
|
+
}
|
|
30566
|
+
return selectLatestStableReleaseTag(await response.json());
|
|
30567
|
+
}
|
|
30568
|
+
|
|
30524
30569
|
// src/server.ts
|
|
30525
30570
|
var SOURCE_COMPOSE_FILE = join11("backend", "core", "docker-compose.yml");
|
|
30526
30571
|
var ROLE_IMAGE_COMPOSE_FILES = {
|
|
@@ -30555,7 +30600,7 @@ var ENV_BACKUP_PREFIX = ".env.openmates-backup-";
|
|
|
30555
30600
|
var ENV_BACKUP_RETENTION_COUNT = 5;
|
|
30556
30601
|
var BACKUP_FORMAT_VERSION = 2;
|
|
30557
30602
|
var IMAGE_CHANNEL_TAGS = {
|
|
30558
|
-
stable:
|
|
30603
|
+
stable: "stable",
|
|
30559
30604
|
main: MAIN_BRANCH,
|
|
30560
30605
|
dev: DEV_BRANCH
|
|
30561
30606
|
};
|
|
@@ -30998,7 +31043,8 @@ function getPackageVersion() {
|
|
|
30998
31043
|
}
|
|
30999
31044
|
}
|
|
31000
31045
|
function getDefaultImageTagForVersion(version) {
|
|
31001
|
-
|
|
31046
|
+
if (!version) return DEV_BRANCH;
|
|
31047
|
+
return /-(alpha|beta|rc)(\.|\d|$)/.test(version) ? `v${version}` : "stable";
|
|
31002
31048
|
}
|
|
31003
31049
|
function getDefaultImageTag() {
|
|
31004
31050
|
const version = getPackageVersion();
|
|
@@ -31008,13 +31054,14 @@ function defaultTemplateRefForVersion(version) {
|
|
|
31008
31054
|
return /-(alpha|beta|rc)(\.|\d|$)/.test(version) ? DEV_BRANCH : `v${version}`;
|
|
31009
31055
|
}
|
|
31010
31056
|
function templateRefForImageTag(imageTag, packageVersion = "") {
|
|
31057
|
+
if (imageTag === "stable") return MAIN_BRANCH;
|
|
31011
31058
|
const channelTag = IMAGE_CHANNEL_TAGS[imageTag];
|
|
31012
31059
|
if (channelTag) return channelTag;
|
|
31013
31060
|
if (imageTag.startsWith("v")) return defaultTemplateRefForVersion(imageTag.slice(1));
|
|
31014
31061
|
if (!imageTag && packageVersion) return defaultTemplateRefForVersion(packageVersion);
|
|
31015
31062
|
return DEV_BRANCH;
|
|
31016
31063
|
}
|
|
31017
|
-
function resolveTargetImageTag(flags, currentTag,
|
|
31064
|
+
function resolveTargetImageTag(flags, currentTag, _packageVersion) {
|
|
31018
31065
|
const imageTag = flags["image-tag"];
|
|
31019
31066
|
const channel = flags.channel;
|
|
31020
31067
|
if (imageTag === true) {
|
|
@@ -31041,7 +31088,7 @@ function resolveTargetImageTag(flags, currentTag, packageVersion) {
|
|
|
31041
31088
|
}
|
|
31042
31089
|
const installedChannel = IMAGE_CHANNEL_TAGS[currentTag];
|
|
31043
31090
|
if (installedChannel) return { tag: installedChannel, channel: installedChannel };
|
|
31044
|
-
return { tag:
|
|
31091
|
+
return { tag: "stable", channel: "stable" };
|
|
31045
31092
|
}
|
|
31046
31093
|
function randomHex(bytes) {
|
|
31047
31094
|
return randomBytes8(bytes).toString("hex");
|
|
@@ -32250,7 +32297,8 @@ async function serverInstall(flags) {
|
|
|
32250
32297
|
copyFileSync2(envSource, join11(installPath, ".env"));
|
|
32251
32298
|
console.error(`Copied ${envSource} to ${installPath}/.env`);
|
|
32252
32299
|
}
|
|
32253
|
-
const
|
|
32300
|
+
const requestedImageTag = typeof flags["image-tag"] === "string" ? flags["image-tag"] : getDefaultImageTag();
|
|
32301
|
+
const imageTag = requestedImageTag === "stable" ? await resolveStableImageTag() : requestedImageTag;
|
|
32254
32302
|
console.error(`Preparing OpenMates image-mode install at ${installPath}...`);
|
|
32255
32303
|
await writeImageModeRuntimeFiles(installPath, imageTag, role);
|
|
32256
32304
|
const overlay2 = writeDeploymentModeEnv(installPath, deploymentMode, requestedOverlayPath);
|
|
@@ -32271,6 +32319,7 @@ async function serverInstall(flags) {
|
|
|
32271
32319
|
deploymentMode,
|
|
32272
32320
|
openMatesCloudOverlayPath: overlay2.overlayPath ?? void 0,
|
|
32273
32321
|
imageTag,
|
|
32322
|
+
imageChannel: requestedImageTag === "stable" ? "stable" : void 0,
|
|
32274
32323
|
...cliUrls2
|
|
32275
32324
|
});
|
|
32276
32325
|
try {
|
|
@@ -32381,7 +32430,7 @@ CLI default API: ${cliUrls.apiUrl}`);
|
|
|
32381
32430
|
async function installContinuousUpdateService(flags) {
|
|
32382
32431
|
const config = loadServerConfig();
|
|
32383
32432
|
const role = getServerRole(flags, config);
|
|
32384
|
-
const channel = typeof flags.channel === "string" ? flags.channel : config?.imageChannel ?? "
|
|
32433
|
+
const channel = typeof flags.channel === "string" ? flags.channel : config?.imageChannel ?? "stable";
|
|
32385
32434
|
const window = typeof flags.window === "string" ? flags.window : "02:00-04:00 UTC";
|
|
32386
32435
|
const plan = planContinuousUpdateService({ role, channel, window });
|
|
32387
32436
|
const servicePath = join11("/etc", "systemd", "system", plan.serviceName);
|
|
@@ -32735,7 +32784,8 @@ async function serverUpdate(client, rest, flags) {
|
|
|
32735
32784
|
console.error("Updating OpenMates...");
|
|
32736
32785
|
if (installMode === "image") {
|
|
32737
32786
|
const currentTag = getImageTagFromEnv(installPath, config);
|
|
32738
|
-
const
|
|
32787
|
+
const requestedTarget = resolveTargetImageTag(flags, currentTag, getPackageVersion());
|
|
32788
|
+
const target = requestedTarget.channel === "stable" ? { ...requestedTarget, tag: await resolveStableImageTag() } : requestedTarget;
|
|
32739
32789
|
const templateRef = templateRefForImageTag(target.tag, getPackageVersion());
|
|
32740
32790
|
const sourceLinks = targetSourceLinks(target.tag, templateRef);
|
|
32741
32791
|
const safetyPlan = planUpdate({ role, selectedServices, dryRun, skipBackup: flags["skip-backup"] === true, continuous: false, missingRequiredSecrets: missingOrUnverifiedSecrets });
|
package/dist/cli.js
CHANGED
package/dist/index.js
CHANGED