mirror of
https://github.com/astral-sh/setup-uv.git
synced 2025-12-19 11:04:08 +00:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
445689ea25 |
1
.github/workflows/test.yml
vendored
1
.github/workflows/test.yml
vendored
@@ -540,7 +540,6 @@ jobs:
|
|||||||
- name: Install from custom manifest file
|
- name: Install from custom manifest file
|
||||||
uses: ./
|
uses: ./
|
||||||
with:
|
with:
|
||||||
version: 0.7.12-alpha.1
|
|
||||||
manifest-file: "https://raw.githubusercontent.com/astral-sh/setup-uv/${{ github.ref }}/__tests__/download/custom-manifest.json"
|
manifest-file: "https://raw.githubusercontent.com/astral-sh/setup-uv/${{ github.ref }}/__tests__/download/custom-manifest.json"
|
||||||
- run: uv sync
|
- run: uv sync
|
||||||
working-directory: __tests__/fixtures/uv-project
|
working-directory: __tests__/fixtures/uv-project
|
||||||
|
|||||||
@@ -430,6 +430,11 @@ This is useful if you maintain your own uv builds or want to override the defaul
|
|||||||
manifest-file: "https://example.com/my-custom-manifest.json"
|
manifest-file: "https://example.com/my-custom-manifest.json"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> When you use a custom manifest file and do not set the `version` input, its default value is `latest`.
|
||||||
|
> This means the action will install the latest version available in the custom manifest file.
|
||||||
|
> This is different from the default behavior of installing the latest version from the official uv releases.
|
||||||
|
|
||||||
## How it works
|
## How it works
|
||||||
|
|
||||||
This action downloads uv from the uv repo's official
|
This action downloads uv from the uv repo's official
|
||||||
|
|||||||
26
dist/setup/index.js
generated
vendored
26
dist/setup/index.js
generated
vendored
@@ -124735,11 +124735,21 @@ async function downloadVersion(downloadUrl, artifactName, platform, arch, versio
|
|||||||
function getExtension(platform) {
|
function getExtension(platform) {
|
||||||
return platform === "pc-windows-msvc" ? ".zip" : ".tar.gz";
|
return platform === "pc-windows-msvc" ? ".zip" : ".tar.gz";
|
||||||
}
|
}
|
||||||
async function resolveVersion(versionInput, githubToken) {
|
async function resolveVersion(versionInput, manifestFile, githubToken) {
|
||||||
core.debug(`Resolving version: ${versionInput}`);
|
core.debug(`Resolving version: ${versionInput}`);
|
||||||
const version = versionInput === "latest"
|
let version;
|
||||||
? await getLatestVersion(githubToken)
|
if (manifestFile) {
|
||||||
: versionInput;
|
version =
|
||||||
|
versionInput === "latest"
|
||||||
|
? await (0, version_manifest_1.getLatestKnownVersion)(manifestFile)
|
||||||
|
: versionInput;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
version =
|
||||||
|
versionInput === "latest"
|
||||||
|
? await getLatestVersion(githubToken)
|
||||||
|
: versionInput;
|
||||||
|
}
|
||||||
if (tc.isExplicitVersion(version)) {
|
if (tc.isExplicitVersion(version)) {
|
||||||
core.debug(`Version ${version} is an explicit version.`);
|
core.debug(`Version ${version} is an explicit version.`);
|
||||||
return version;
|
return version;
|
||||||
@@ -125105,7 +125115,7 @@ function detectEmptyWorkdir() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
async function setupUv(platform, arch, checkSum, githubToken) {
|
async function setupUv(platform, arch, checkSum, githubToken) {
|
||||||
const resolvedVersion = await determineVersion();
|
const resolvedVersion = await determineVersion(inputs_1.manifestFile);
|
||||||
const toolCacheResult = (0, download_version_1.tryGetFromToolCache)(arch, resolvedVersion);
|
const toolCacheResult = (0, download_version_1.tryGetFromToolCache)(arch, resolvedVersion);
|
||||||
if (toolCacheResult.installedPath) {
|
if (toolCacheResult.installedPath) {
|
||||||
core.info(`Found uv in tool-cache for ${toolCacheResult.version}`);
|
core.info(`Found uv in tool-cache for ${toolCacheResult.version}`);
|
||||||
@@ -125127,16 +125137,16 @@ async function setupUv(platform, arch, checkSum, githubToken) {
|
|||||||
version: downloadVersionResult.version,
|
version: downloadVersionResult.version,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
async function determineVersion() {
|
async function determineVersion(manifestFile) {
|
||||||
if (inputs_1.version !== "") {
|
if (inputs_1.version !== "") {
|
||||||
return await (0, download_version_1.resolveVersion)(inputs_1.version, inputs_1.githubToken);
|
return await (0, download_version_1.resolveVersion)(inputs_1.version, manifestFile, inputs_1.githubToken);
|
||||||
}
|
}
|
||||||
const versionFromUvToml = (0, config_file_1.getUvVersionFromConfigFile)(`${inputs_1.workingDirectory}${path.sep}uv.toml`);
|
const versionFromUvToml = (0, config_file_1.getUvVersionFromConfigFile)(`${inputs_1.workingDirectory}${path.sep}uv.toml`);
|
||||||
const versionFromPyproject = (0, config_file_1.getUvVersionFromConfigFile)(`${inputs_1.workingDirectory}${path.sep}pyproject.toml`);
|
const versionFromPyproject = (0, config_file_1.getUvVersionFromConfigFile)(`${inputs_1.workingDirectory}${path.sep}pyproject.toml`);
|
||||||
if (versionFromUvToml === undefined && versionFromPyproject === undefined) {
|
if (versionFromUvToml === undefined && versionFromPyproject === undefined) {
|
||||||
core.info("Could not determine uv version from uv.toml or pyproject.toml. Falling back to latest.");
|
core.info("Could not determine uv version from uv.toml or pyproject.toml. Falling back to latest.");
|
||||||
}
|
}
|
||||||
return await (0, download_version_1.resolveVersion)(versionFromUvToml || versionFromPyproject || "latest", inputs_1.githubToken);
|
return await (0, download_version_1.resolveVersion)(versionFromUvToml || versionFromPyproject || "latest", manifestFile, inputs_1.githubToken);
|
||||||
}
|
}
|
||||||
function addUvToPathAndOutput(cachedPath) {
|
function addUvToPathAndOutput(cachedPath) {
|
||||||
core.setOutput("uv-path", `${cachedPath}${path.sep}uv`);
|
core.setOutput("uv-path", `${cachedPath}${path.sep}uv`);
|
||||||
|
|||||||
@@ -7,7 +7,10 @@ import { OWNER, REPO, TOOL_CACHE_NAME } from "../utils/constants";
|
|||||||
import type { Architecture, Platform } from "../utils/platforms";
|
import type { Architecture, Platform } from "../utils/platforms";
|
||||||
import { validateChecksum } from "./checksum/checksum";
|
import { validateChecksum } from "./checksum/checksum";
|
||||||
import { Octokit } from "../utils/octokit";
|
import { Octokit } from "../utils/octokit";
|
||||||
import { getDownloadUrl } from "./version-manifest";
|
import {
|
||||||
|
getDownloadUrl,
|
||||||
|
getLatestKnownVersion as getLatestVersionInManifest,
|
||||||
|
} from "./version-manifest";
|
||||||
|
|
||||||
export function tryGetFromToolCache(
|
export function tryGetFromToolCache(
|
||||||
arch: Architecture,
|
arch: Architecture,
|
||||||
@@ -127,13 +130,22 @@ function getExtension(platform: Platform): string {
|
|||||||
|
|
||||||
export async function resolveVersion(
|
export async function resolveVersion(
|
||||||
versionInput: string,
|
versionInput: string,
|
||||||
|
manifestFile: string | undefined,
|
||||||
githubToken: string,
|
githubToken: string,
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
core.debug(`Resolving version: ${versionInput}`);
|
core.debug(`Resolving version: ${versionInput}`);
|
||||||
const version =
|
let version: string;
|
||||||
versionInput === "latest"
|
if (manifestFile) {
|
||||||
? await getLatestVersion(githubToken)
|
version =
|
||||||
: versionInput;
|
versionInput === "latest"
|
||||||
|
? await getLatestVersionInManifest(manifestFile)
|
||||||
|
: versionInput;
|
||||||
|
} else {
|
||||||
|
version =
|
||||||
|
versionInput === "latest"
|
||||||
|
? await getLatestVersion(githubToken)
|
||||||
|
: versionInput;
|
||||||
|
}
|
||||||
if (tc.isExplicitVersion(version)) {
|
if (tc.isExplicitVersion(version)) {
|
||||||
core.debug(`Version ${version} is an explicit version.`);
|
core.debug(`Version ${version} is an explicit version.`);
|
||||||
return version;
|
return version;
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ async function setupUv(
|
|||||||
checkSum: string | undefined,
|
checkSum: string | undefined,
|
||||||
githubToken: string,
|
githubToken: string,
|
||||||
): Promise<{ uvDir: string; version: string }> {
|
): Promise<{ uvDir: string; version: string }> {
|
||||||
const resolvedVersion = await determineVersion();
|
const resolvedVersion = await determineVersion(manifestFile);
|
||||||
const toolCacheResult = tryGetFromToolCache(arch, resolvedVersion);
|
const toolCacheResult = tryGetFromToolCache(arch, resolvedVersion);
|
||||||
if (toolCacheResult.installedPath) {
|
if (toolCacheResult.installedPath) {
|
||||||
core.info(`Found uv in tool-cache for ${toolCacheResult.version}`);
|
core.info(`Found uv in tool-cache for ${toolCacheResult.version}`);
|
||||||
@@ -127,9 +127,11 @@ async function setupUv(
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
async function determineVersion(): Promise<string> {
|
async function determineVersion(
|
||||||
|
manifestFile: string | undefined,
|
||||||
|
): Promise<string> {
|
||||||
if (versionInput !== "") {
|
if (versionInput !== "") {
|
||||||
return await resolveVersion(versionInput, githubToken);
|
return await resolveVersion(versionInput, manifestFile, githubToken);
|
||||||
}
|
}
|
||||||
const versionFromUvToml = getUvVersionFromConfigFile(
|
const versionFromUvToml = getUvVersionFromConfigFile(
|
||||||
`${workingDirectory}${path.sep}uv.toml`,
|
`${workingDirectory}${path.sep}uv.toml`,
|
||||||
@@ -144,6 +146,7 @@ async function determineVersion(): Promise<string> {
|
|||||||
}
|
}
|
||||||
return await resolveVersion(
|
return await resolveVersion(
|
||||||
versionFromUvToml || versionFromPyproject || "latest",
|
versionFromUvToml || versionFromPyproject || "latest",
|
||||||
|
manifestFile,
|
||||||
githubToken,
|
githubToken,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user