mirror of
https://gitea.com/actions/setup-deno.git
synced 2025-12-14 20:36:42 +00:00
feat: add "lts" version option (#97)
(cherry picked from commit a1496dd8d9)
This commit is contained in:
@@ -9,12 +9,12 @@ const GIT_HASH_RE = /^[0-9a-fA-F]{40}$/;
|
||||
|
||||
export interface VersionRange {
|
||||
range: string;
|
||||
kind: "canary" | "rc" | "stable";
|
||||
kind: "canary" | "rc" | "stable" | "lts";
|
||||
}
|
||||
|
||||
export interface Version {
|
||||
version: string;
|
||||
kind: "canary" | "rc" | "stable";
|
||||
kind: "canary" | "rc" | "stable" | "lts";
|
||||
}
|
||||
|
||||
/** Parses the version from the user into a structure */
|
||||
@@ -36,6 +36,10 @@ export function parseVersionRange(
|
||||
return { range: "latest", kind: "stable" };
|
||||
}
|
||||
|
||||
if (version === "lts") {
|
||||
return { range: "latest", kind: "lts" };
|
||||
}
|
||||
|
||||
if (GIT_HASH_RE.test(version)) {
|
||||
return { range: version, kind: "canary" };
|
||||
}
|
||||
@@ -82,6 +86,8 @@ export function resolveVersion(
|
||||
} else if (kind === "rc") {
|
||||
// range is always "latest"
|
||||
return resolveReleaseCandidate();
|
||||
} else if (kind === "lts") {
|
||||
return resolveLTS();
|
||||
} else {
|
||||
return resolveRelease(range);
|
||||
}
|
||||
@@ -120,6 +126,22 @@ async function resolveReleaseCandidate(): Promise<Version | null> {
|
||||
return { version, kind: "rc" };
|
||||
}
|
||||
|
||||
async function resolveLTS(): Promise<Version | null> {
|
||||
const res = await fetchWithRetries(
|
||||
"https://dl.deno.land/release-lts-latest.txt",
|
||||
);
|
||||
if (res.status !== 200) {
|
||||
throw new Error(
|
||||
"Failed to fetch LTS version info from dl.deno.land. Please try again later.",
|
||||
);
|
||||
}
|
||||
const version = semver.clean((await res.text()).trim());
|
||||
if (version === null) {
|
||||
throw new Error("Failed to parse LTS version.");
|
||||
}
|
||||
return { version, kind: "lts" };
|
||||
}
|
||||
|
||||
async function resolveRelease(range: string): Promise<Version | null> {
|
||||
if (range === "latest") {
|
||||
const res = await fetchWithRetries(
|
||||
|
||||
Reference in New Issue
Block a user