mirror of
https://github.com/astral-sh/setup-uv.git
synced 2025-06-09 09:21:10 +00:00
61 lines
1.8 KiB
TypeScript
61 lines
1.8 KiB
TypeScript
![]() |
import * as semver from "semver";
|
||
|
import * as core from "@actions/core";
|
||
|
import { Octokit } from "./utils/octokit";
|
||
|
|
||
|
import { OWNER, REPO } from "./utils/constants";
|
||
|
|
||
|
import { updateChecksums } from "./download/checksum/update-known-checksums";
|
||
|
import {
|
||
|
updateVersionManifest,
|
||
|
getLatestKnownVersion,
|
||
|
} from "./download/version-manifest";
|
||
|
|
||
|
async function run(): Promise<void> {
|
||
|
const checksumFilePath = process.argv.slice(2)[0];
|
||
|
const versionsManifestFilePath = process.argv.slice(2)[1];
|
||
|
const githubToken = process.argv.slice(2)[2];
|
||
|
|
||
|
const octokit = new Octokit({
|
||
|
auth: githubToken,
|
||
|
});
|
||
|
|
||
|
const { data: latestRelease } = await octokit.rest.repos.getLatestRelease({
|
||
|
owner: OWNER,
|
||
|
repo: REPO,
|
||
|
});
|
||
|
|
||
|
const latestKnownVersion = await getLatestKnownVersion(
|
||
|
versionsManifestFilePath,
|
||
|
);
|
||
|
|
||
|
if (semver.lte(latestRelease.tag_name, latestKnownVersion)) {
|
||
|
core.info(
|
||
|
`Latest release (${latestRelease.tag_name}) is not newer than the latest known version (${latestKnownVersion}). Skipping update.`,
|
||
|
);
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
const releases = await octokit.paginate(octokit.rest.repos.listReleases, {
|
||
|
owner: OWNER,
|
||
|
repo: REPO,
|
||
|
});
|
||
|
const checksumDownloadUrls: string[] = releases.flatMap((release) =>
|
||
|
release.assets
|
||
|
.filter((asset) => asset.name.endsWith(".sha256"))
|
||
|
.map((asset) => asset.browser_download_url),
|
||
|
);
|
||
|
await updateChecksums(checksumFilePath, checksumDownloadUrls);
|
||
|
|
||
|
const artifactDownloadUrls: string[] = releases.flatMap((release) =>
|
||
|
release.assets
|
||
|
.filter((asset) => !asset.name.endsWith(".sha256"))
|
||
|
.map((asset) => asset.browser_download_url),
|
||
|
);
|
||
|
|
||
|
await updateVersionManifest(versionsManifestFilePath, artifactDownloadUrls);
|
||
|
|
||
|
core.setOutput("latest-version", latestRelease.tag_name);
|
||
|
}
|
||
|
|
||
|
run();
|