mirror of
https://github.com/astral-sh/setup-uv.git
synced 2026-05-02 23:45:37 +00:00
Some checks failed
test / test-default-version (ubuntu-latest) (push) Successful in 24s
CodeQL / Analyze (TypeScript) (push) Failing after 38s
test / test-activate-environment (ubuntu-latest) (push) Successful in 1m1s
test / lint (push) Failing after 1m25s
test / test-pyproject-file-version (push) Failing after 2m0s
test / test-cache-local (map[expected-cache-dir:/home/runner/work/_temp/setup-uv-cache os:ubuntu-latest]) (push) Failing after 24s
test / test-no-python-version (push) Failing after 2m18s
test / test-custom-manifest-file (push) Failing after 13m51s
test / test-setup-cache-dependency-glob (push) Failing after 13m54s
test / test-setup-cache-requirements-txt (push) Failing after 13m55s
test / test-setup-cache (true, ubuntu-latest) (push) Failing after 13m56s
test / test-setup-cache (false, ubuntu-latest) (push) Failing after 13m56s
test / test-setup-cache (auto, ubuntu-latest) (push) Failing after 13m58s
test / test-musl (push) Failing after 13m58s
test / test-python-version (ubuntu-latest) (push) Failing after 14m0s
test / test-tool-install (ubuntu-latest) (push) Failing after 14m1s
test / test-uvx (push) Failing after 14m1s
test / test-with-explicit-token (push) Failing after 14m3s
test / test-checksum (map[checksum:4d9279ad5ca596b1e2d703901d508430eb07564dc4d8837de9e2fca9c90f8ecd os:ubuntu-latest]) (push) Failing after 14m5s
test / test-uv-file-version (push) Failing after 14m6s
test / test-malformed-pyproject-file-fallback (push) Failing after 14m6s
test / test-pep440-version (push) Failing after 14m8s
test / test-semver-range (ubuntu-latest) (push) Failing after 14m9s
test / test-specific-version (>=0.3.0) (push) Failing after 14m10s
test / test-specific-version (0.3.x) (push) Failing after 14m10s
test / test-specific-version (0.3.2) (push) Failing after 14m11s
test / test-specific-version (0.3.0) (push) Failing after 14m14s
test / test-specific-version (0.3) (push) Failing after 14m15s
Release Drafter / ✏️ Draft release (push) Has been cancelled
test / test-default-version (macos-14) (push) Has been cancelled
test / test-default-version (macos-latest) (push) Has been cancelled
test / test-default-version (windows-latest) (push) Has been cancelled
test / test-semver-range (selfhosted-ubuntu-arm64) (push) Has been cancelled
test / test-checksum (map[checksum:a70cbfbf3bb5c08b2f84963b4f12c94e08fbb2468ba418a3bfe1066fbe9e7218 os:macos-latest]) (push) Has been cancelled
test / test-tool-install (macos-14) (push) Has been cancelled
test / test-tool-install (macos-latest) (push) Has been cancelled
test / test-tool-install (windows-latest) (push) Has been cancelled
test / test-tilde-expansion-tool-dirs (push) Has been cancelled
test / test-python-version (macos-latest) (push) Has been cancelled
test / test-python-version (windows-latest) (push) Has been cancelled
test / test-activate-environment (macos-latest) (push) Has been cancelled
test / test-activate-environment (windows-latest) (push) Has been cancelled
test / test-setup-cache (auto, selfhosted-ubuntu-arm64) (push) Has been cancelled
test / test-setup-cache (auto, windows-latest) (push) Has been cancelled
test / test-setup-cache (false, selfhosted-ubuntu-arm64) (push) Has been cancelled
test / test-setup-cache (false, windows-latest) (push) Has been cancelled
test / test-setup-cache (true, selfhosted-ubuntu-arm64) (push) Has been cancelled
test / test-setup-cache (true, windows-latest) (push) Has been cancelled
test / test-cache-local (map[expected-cache-dir:/home/ubuntu/.cache/uv os:selfhosted-ubuntu-arm64]) (push) Has been cancelled
test / test-cache-local (map[expected-cache-dir:C:\a\_temp\setup-uv-cache os:windows-latest]) (push) Has been cancelled
test / test-setup-cache-local (push) Has been cancelled
test / test-tilde-expansion-cache-local-path (push) Has been cancelled
test / test-tilde-expansion-cache-dependency-glob (push) Has been cancelled
test / test-restore-cache (auto, selfhosted-ubuntu-arm64) (push) Has been cancelled
test / test-restore-cache (auto, ubuntu-latest) (push) Has been cancelled
test / test-restore-cache (auto, windows-latest) (push) Has been cancelled
test / test-restore-cache (false, selfhosted-ubuntu-arm64) (push) Has been cancelled
test / test-restore-cache (false, ubuntu-latest) (push) Has been cancelled
test / test-restore-cache (false, windows-latest) (push) Has been cancelled
test / test-restore-cache (true, selfhosted-ubuntu-arm64) (push) Has been cancelled
test / test-restore-cache (true, ubuntu-latest) (push) Has been cancelled
test / test-restore-cache (true, windows-latest) (push) Has been cancelled
test / test-restore-cache-requirements-txt (push) Has been cancelled
test / test-restore-cache-dependency-glob (push) Has been cancelled
test / test-restore-cache-local (push) Has been cancelled
test / cleanup-tilde-expansion-tests (push) Has been cancelled
test / all-tests-passed (push) Has been cancelled
Update known versions / build (push) Has been cancelled
Fixes: #455
92 lines
2.6 KiB
TypeScript
92 lines
2.6 KiB
TypeScript
import { promises as fs } from "node:fs";
|
|
import * as core from "@actions/core";
|
|
import * as semver from "semver";
|
|
import { fetch } from "../utils/fetch";
|
|
import { join } from "node:path";
|
|
|
|
const localManifestFile = join(__dirname, "..", "..", "version-manifest.json");
|
|
|
|
interface ManifestEntry {
|
|
version: string;
|
|
artifactName: string;
|
|
arch: string;
|
|
platform: string;
|
|
downloadUrl: string;
|
|
}
|
|
|
|
export async function getLatestKnownVersion(
|
|
manifestUrl: string | undefined,
|
|
): Promise<string> {
|
|
const manifestEntries = await getManifestEntries(manifestUrl);
|
|
return manifestEntries.reduce((a, b) =>
|
|
semver.gt(a.version, b.version) ? a : b,
|
|
).version;
|
|
}
|
|
|
|
export async function getDownloadUrl(
|
|
manifestUrl: string | undefined,
|
|
version: string,
|
|
arch: string,
|
|
platform: string,
|
|
): Promise<string | undefined> {
|
|
const manifestEntries = await getManifestEntries(manifestUrl);
|
|
const entry = manifestEntries.find(
|
|
(entry) =>
|
|
entry.version === version &&
|
|
entry.arch === arch &&
|
|
entry.platform === platform,
|
|
);
|
|
return entry ? entry.downloadUrl : undefined;
|
|
}
|
|
|
|
async function getManifestEntries(
|
|
manifestUrl: string | undefined,
|
|
): Promise<ManifestEntry[]> {
|
|
let data: string;
|
|
if (manifestUrl !== undefined) {
|
|
core.info(`Fetching manifest-file from: ${manifestUrl}`);
|
|
const response = await fetch(manifestUrl, {});
|
|
if (!response.ok) {
|
|
throw new Error(
|
|
`Failed to fetch manifest-file: ${response.status} ${response.statusText}`,
|
|
);
|
|
}
|
|
data = await response.text();
|
|
} else {
|
|
core.info("manifest-file not provided, reading from local file.");
|
|
const fileContent = await fs.readFile(localManifestFile);
|
|
data = fileContent.toString();
|
|
}
|
|
|
|
return JSON.parse(data);
|
|
}
|
|
|
|
export async function updateVersionManifest(
|
|
manifestUrl: string,
|
|
downloadUrls: string[],
|
|
): Promise<void> {
|
|
const manifest: ManifestEntry[] = [];
|
|
|
|
for (const downloadUrl of downloadUrls) {
|
|
const urlParts = downloadUrl.split("/");
|
|
const version = urlParts[urlParts.length - 2];
|
|
const artifactName = urlParts[urlParts.length - 1];
|
|
if (!artifactName.startsWith("uv-")) {
|
|
continue;
|
|
}
|
|
if (artifactName.startsWith("uv-installer")) {
|
|
continue;
|
|
}
|
|
const artifactParts = artifactName.split(".")[0].split("-");
|
|
manifest.push({
|
|
version: version,
|
|
artifactName: artifactName,
|
|
arch: artifactParts[1],
|
|
platform: artifactName.split(`uv-${artifactParts[1]}-`)[1].split(".")[0],
|
|
downloadUrl: downloadUrl,
|
|
});
|
|
}
|
|
core.debug(`Updating manifest-file: ${JSON.stringify(manifest)}`);
|
|
await fs.writeFile(manifestUrl, JSON.stringify(manifest));
|
|
}
|