@heyamiko/amiko-cli 0.9.0-beta.5 → 0.9.0-beta.6
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/index.js +77 -8
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -19570,6 +19570,71 @@ function detectPackageManager() {
|
|
|
19570
19570
|
return "npm";
|
|
19571
19571
|
}
|
|
19572
19572
|
}
|
|
19573
|
+
function isPrerelease(v) {
|
|
19574
|
+
return v.includes("-");
|
|
19575
|
+
}
|
|
19576
|
+
function compareSemver(a, b) {
|
|
19577
|
+
const [aMain, aPre] = a.split("-", 2);
|
|
19578
|
+
const [bMain, bPre] = b.split("-", 2);
|
|
19579
|
+
const an = aMain.split(".").map(Number);
|
|
19580
|
+
const bn = bMain.split(".").map(Number);
|
|
19581
|
+
for (let i = 0;i < 3; i++) {
|
|
19582
|
+
if ((an[i] ?? 0) !== (bn[i] ?? 0))
|
|
19583
|
+
return (an[i] ?? 0) > (bn[i] ?? 0) ? 1 : -1;
|
|
19584
|
+
}
|
|
19585
|
+
if (!aPre && !bPre)
|
|
19586
|
+
return 0;
|
|
19587
|
+
if (!aPre)
|
|
19588
|
+
return 1;
|
|
19589
|
+
if (!bPre)
|
|
19590
|
+
return -1;
|
|
19591
|
+
const ap = aPre.split(".");
|
|
19592
|
+
const bp = bPre.split(".");
|
|
19593
|
+
for (let i = 0;i < Math.max(ap.length, bp.length); i++) {
|
|
19594
|
+
const x = ap[i];
|
|
19595
|
+
const y = bp[i];
|
|
19596
|
+
if (x === undefined)
|
|
19597
|
+
return -1;
|
|
19598
|
+
if (y === undefined)
|
|
19599
|
+
return 1;
|
|
19600
|
+
const xn = /^\d+$/.test(x) ? Number(x) : NaN;
|
|
19601
|
+
const yn = /^\d+$/.test(y) ? Number(y) : NaN;
|
|
19602
|
+
if (!isNaN(xn) && !isNaN(yn)) {
|
|
19603
|
+
if (xn !== yn)
|
|
19604
|
+
return xn > yn ? 1 : -1;
|
|
19605
|
+
} else if (!isNaN(xn)) {
|
|
19606
|
+
return -1;
|
|
19607
|
+
} else if (!isNaN(yn)) {
|
|
19608
|
+
return 1;
|
|
19609
|
+
} else if (x !== y) {
|
|
19610
|
+
return x > y ? 1 : -1;
|
|
19611
|
+
}
|
|
19612
|
+
}
|
|
19613
|
+
return 0;
|
|
19614
|
+
}
|
|
19615
|
+
async function fetchDistTags(pkg) {
|
|
19616
|
+
const url2 = `https://registry.npmjs.org/-/package/${encodeURIComponent(pkg)}/dist-tags`;
|
|
19617
|
+
const res = await fetch(url2);
|
|
19618
|
+
if (!res.ok)
|
|
19619
|
+
throw new Error(`registry responded ${res.status}`);
|
|
19620
|
+
return await res.json();
|
|
19621
|
+
}
|
|
19622
|
+
async function resolveTargetVersion(pkg, currentVersion) {
|
|
19623
|
+
if (!isPrerelease(currentVersion)) {
|
|
19624
|
+
return { version: "latest", channel: "latest" };
|
|
19625
|
+
}
|
|
19626
|
+
const tags = await fetchDistTags(pkg);
|
|
19627
|
+
const latest = tags.latest;
|
|
19628
|
+
const beta = tags.beta;
|
|
19629
|
+
if (latest && beta) {
|
|
19630
|
+
return compareSemver(latest, beta) >= 0 ? { version: latest, channel: "latest" } : { version: beta, channel: "beta" };
|
|
19631
|
+
}
|
|
19632
|
+
if (beta)
|
|
19633
|
+
return { version: beta, channel: "beta" };
|
|
19634
|
+
if (latest)
|
|
19635
|
+
return { version: latest, channel: "latest" };
|
|
19636
|
+
return { version: "latest", channel: "latest" };
|
|
19637
|
+
}
|
|
19573
19638
|
var DATA_CLI = "/data/.amiko-cli";
|
|
19574
19639
|
var NPM_GLOBAL_CANDIDATES = [
|
|
19575
19640
|
"/usr/local/lib/node_modules/@heyamiko/amiko-cli",
|
|
@@ -19615,17 +19680,21 @@ function registerUpdateCommand(program2) {
|
|
|
19615
19680
|
console.log(heading("Update"));
|
|
19616
19681
|
console.log(label("Current", `v${currentVersion}`));
|
|
19617
19682
|
console.log(label("Package manager", pm));
|
|
19683
|
+
let target;
|
|
19684
|
+
try {
|
|
19685
|
+
target = await resolveTargetVersion(pkg, currentVersion);
|
|
19686
|
+
} catch {
|
|
19687
|
+
target = { version: "latest", channel: "latest" };
|
|
19688
|
+
}
|
|
19689
|
+
const installSpec = `${pkg}@${target.version}`;
|
|
19690
|
+
console.log(label("Target", target.version === "latest" ? "latest" : `${target.version} (${target.channel})`));
|
|
19618
19691
|
console.log("");
|
|
19619
|
-
const spinner = ora(
|
|
19692
|
+
const spinner = ora(`Installing ${installSpec}...`).start();
|
|
19620
19693
|
try {
|
|
19621
19694
|
if (pm === "bun") {
|
|
19622
|
-
execFileSync2("bun", ["install", "-g",
|
|
19623
|
-
stdio: "pipe"
|
|
19624
|
-
});
|
|
19695
|
+
execFileSync2("bun", ["install", "-g", installSpec], { stdio: "pipe" });
|
|
19625
19696
|
} else {
|
|
19626
|
-
execFileSync2("npm", ["install", "-g",
|
|
19627
|
-
stdio: "pipe"
|
|
19628
|
-
});
|
|
19697
|
+
execFileSync2("npm", ["install", "-g", installSpec], { stdio: "pipe" });
|
|
19629
19698
|
}
|
|
19630
19699
|
spinner.stop();
|
|
19631
19700
|
let syncedTwin = false;
|
|
@@ -19655,7 +19724,7 @@ function registerUpdateCommand(program2) {
|
|
|
19655
19724
|
console.error(error("Auto-update failed."));
|
|
19656
19725
|
console.log("");
|
|
19657
19726
|
console.log(dim("Try manually:"));
|
|
19658
|
-
console.log(dim(` ${pm} install -g ${
|
|
19727
|
+
console.log(dim(` ${pm} install -g ${installSpec}`));
|
|
19659
19728
|
process.exit(1);
|
|
19660
19729
|
}
|
|
19661
19730
|
});
|