diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3833061..9506f07 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -566,6 +566,24 @@ jobs: exit 1 fi + test-absolute-path: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Create requirements.txt + run: echo "uv==0.6.17" > /tmp/setup-uv-requirements.txt + - name: Install from requirements file + id: setup-uv + uses: ./ + with: + version-file: "/tmp/setup-uv-requirements.txt" + - name: Correct version gets installed + run: | + if [ "$(uv --version)" != "uv 0.6.17" ]; then + echo "Wrong uv version: $(uv --version)" + exit 1 + fi + all-tests-passed: runs-on: ubuntu-latest needs: @@ -600,6 +618,7 @@ jobs: - cleanup-tilde-expansion-tests - test-no-python-version - test-custom-manifest-file + - test-absolute-path if: always() steps: - name: All tests passed diff --git a/dist/save-cache/index.js b/dist/save-cache/index.js index 2dd3804..242308a 100644 --- a/dist/save-cache/index.js +++ b/dist/save-cache/index.js @@ -89010,7 +89010,7 @@ exports.checkSum = core.getInput("checksum"); exports.enableCache = getEnableCache(); exports.cacheSuffix = core.getInput("cache-suffix") || ""; exports.cacheLocalPath = getCacheLocalPath(); -exports.cacheDependencyGlob = core.getInput("cache-dependency-glob"); +exports.cacheDependencyGlob = getCacheDependencyGlob(); exports.pruneCache = core.getInput("prune-cache") === "true"; exports.ignoreNothingToCache = core.getInput("ignore-nothing-to-cache") === "true"; exports.ignoreEmptyWorkdir = core.getInput("ignore-empty-workdir") === "true"; @@ -89029,7 +89029,8 @@ function getEnableCache() { function getToolBinDir() { const toolBinDirInput = core.getInput("tool-bin-dir"); if (toolBinDirInput !== "") { - return expandTilde(toolBinDirInput); + const tildeExpanded = expandTilde(toolBinDirInput); + return resolveRelativePath(tildeExpanded); } if (process.platform === "win32") { if (process.env.RUNNER_TEMP !== undefined) { @@ -89042,7 +89043,8 @@ function getToolBinDir() { function getToolDir() { const toolDirInput = core.getInput("tool-dir"); if (toolDirInput !== "") { - return expandTilde(toolDirInput); + const tildeExpanded = expandTilde(toolDirInput); + return resolveRelativePath(tildeExpanded); } if (process.platform === "win32") { if (process.env.RUNNER_TEMP !== undefined) { @@ -89055,7 +89057,8 @@ function getToolDir() { function getCacheLocalPath() { const cacheLocalPathInput = core.getInput("cache-local-path"); if (cacheLocalPathInput !== "") { - return expandTilde(cacheLocalPathInput); + const tildeExpanded = expandTilde(cacheLocalPathInput); + return resolveRelativePath(tildeExpanded); } if (process.env.RUNNER_ENVIRONMENT === "github-hosted") { if (process.env.RUNNER_TEMP !== undefined) { @@ -89068,12 +89071,32 @@ function getCacheLocalPath() { } return `${process.env.HOME}${node_path_1.default.sep}.cache${node_path_1.default.sep}uv`; } +function getCacheDependencyGlob() { + const cacheDependencyGlobInput = core.getInput("cache-dependency-glob"); + if (cacheDependencyGlobInput !== "") { + return cacheDependencyGlobInput + .split("\n") + .map((part) => part.trim()) + .map((part) => expandTilde(part)) + .map((part) => resolveRelativePath(part)) + .join("\n"); + } + return cacheDependencyGlobInput; +} function expandTilde(input) { if (input.startsWith("~")) { return `${process.env.HOME}${input.substring(1)}`; } return input; } +function resolveRelativePath(inputPath) { + if (node_path_1.default.isAbsolute(inputPath)) { + return inputPath; + } + const absolutePath = `${exports.workingDirectory}${node_path_1.default.sep}${inputPath}`; + core.debug(`Resolving relative path ${inputPath} to ${absolutePath}`); + return absolutePath; +} function getManifestFile() { const manifestFileInput = core.getInput("manifest-file"); if (manifestFileInput !== "") { diff --git a/dist/setup/index.js b/dist/setup/index.js index a979cd9..be2d838 100644 --- a/dist/setup/index.js +++ b/dist/setup/index.js @@ -125534,7 +125534,7 @@ exports.checkSum = core.getInput("checksum"); exports.enableCache = getEnableCache(); exports.cacheSuffix = core.getInput("cache-suffix") || ""; exports.cacheLocalPath = getCacheLocalPath(); -exports.cacheDependencyGlob = core.getInput("cache-dependency-glob"); +exports.cacheDependencyGlob = getCacheDependencyGlob(); exports.pruneCache = core.getInput("prune-cache") === "true"; exports.ignoreNothingToCache = core.getInput("ignore-nothing-to-cache") === "true"; exports.ignoreEmptyWorkdir = core.getInput("ignore-empty-workdir") === "true"; @@ -125553,7 +125553,8 @@ function getEnableCache() { function getToolBinDir() { const toolBinDirInput = core.getInput("tool-bin-dir"); if (toolBinDirInput !== "") { - return expandTilde(toolBinDirInput); + const tildeExpanded = expandTilde(toolBinDirInput); + return resolveRelativePath(tildeExpanded); } if (process.platform === "win32") { if (process.env.RUNNER_TEMP !== undefined) { @@ -125566,7 +125567,8 @@ function getToolBinDir() { function getToolDir() { const toolDirInput = core.getInput("tool-dir"); if (toolDirInput !== "") { - return expandTilde(toolDirInput); + const tildeExpanded = expandTilde(toolDirInput); + return resolveRelativePath(tildeExpanded); } if (process.platform === "win32") { if (process.env.RUNNER_TEMP !== undefined) { @@ -125579,7 +125581,8 @@ function getToolDir() { function getCacheLocalPath() { const cacheLocalPathInput = core.getInput("cache-local-path"); if (cacheLocalPathInput !== "") { - return expandTilde(cacheLocalPathInput); + const tildeExpanded = expandTilde(cacheLocalPathInput); + return resolveRelativePath(tildeExpanded); } if (process.env.RUNNER_ENVIRONMENT === "github-hosted") { if (process.env.RUNNER_TEMP !== undefined) { @@ -125592,12 +125595,32 @@ function getCacheLocalPath() { } return `${process.env.HOME}${node_path_1.default.sep}.cache${node_path_1.default.sep}uv`; } +function getCacheDependencyGlob() { + const cacheDependencyGlobInput = core.getInput("cache-dependency-glob"); + if (cacheDependencyGlobInput !== "") { + return cacheDependencyGlobInput + .split("\n") + .map((part) => part.trim()) + .map((part) => expandTilde(part)) + .map((part) => resolveRelativePath(part)) + .join("\n"); + } + return cacheDependencyGlobInput; +} function expandTilde(input) { if (input.startsWith("~")) { return `${process.env.HOME}${input.substring(1)}`; } return input; } +function resolveRelativePath(inputPath) { + if (node_path_1.default.isAbsolute(inputPath)) { + return inputPath; + } + const absolutePath = `${exports.workingDirectory}${node_path_1.default.sep}${inputPath}`; + core.debug(`Resolving relative path ${inputPath} to ${absolutePath}`); + return absolutePath; +} function getManifestFile() { const manifestFileInput = core.getInput("manifest-file"); if (manifestFileInput !== "") { diff --git a/src/utils/inputs.ts b/src/utils/inputs.ts index 9b7741e..a164221 100644 --- a/src/utils/inputs.ts +++ b/src/utils/inputs.ts @@ -1,6 +1,5 @@ import * as core from "@actions/core"; import path from "node:path"; -import { getManifestFromRepo } from "@actions/tool-cache"; export const version = core.getInput("version"); export const versionFile = core.getInput("version-file"); @@ -11,7 +10,7 @@ export const checkSum = core.getInput("checksum"); export const enableCache = getEnableCache(); export const cacheSuffix = core.getInput("cache-suffix") || ""; export const cacheLocalPath = getCacheLocalPath(); -export const cacheDependencyGlob = core.getInput("cache-dependency-glob"); +export const cacheDependencyGlob = getCacheDependencyGlob(); export const pruneCache = core.getInput("prune-cache") === "true"; export const ignoreNothingToCache = core.getInput("ignore-nothing-to-cache") === "true"; @@ -34,7 +33,8 @@ function getEnableCache(): boolean { function getToolBinDir(): string | undefined { const toolBinDirInput = core.getInput("tool-bin-dir"); if (toolBinDirInput !== "") { - return expandTilde(toolBinDirInput); + const tildeExpanded = expandTilde(toolBinDirInput); + return resolveRelativePath(tildeExpanded); } if (process.platform === "win32") { if (process.env.RUNNER_TEMP !== undefined) { @@ -50,7 +50,8 @@ function getToolBinDir(): string | undefined { function getToolDir(): string | undefined { const toolDirInput = core.getInput("tool-dir"); if (toolDirInput !== "") { - return expandTilde(toolDirInput); + const tildeExpanded = expandTilde(toolDirInput); + return resolveRelativePath(tildeExpanded); } if (process.platform === "win32") { if (process.env.RUNNER_TEMP !== undefined) { @@ -66,7 +67,8 @@ function getToolDir(): string | undefined { function getCacheLocalPath(): string { const cacheLocalPathInput = core.getInput("cache-local-path"); if (cacheLocalPathInput !== "") { - return expandTilde(cacheLocalPathInput); + const tildeExpanded = expandTilde(cacheLocalPathInput); + return resolveRelativePath(tildeExpanded); } if (process.env.RUNNER_ENVIRONMENT === "github-hosted") { if (process.env.RUNNER_TEMP !== undefined) { @@ -82,6 +84,19 @@ function getCacheLocalPath(): string { return `${process.env.HOME}${path.sep}.cache${path.sep}uv`; } +function getCacheDependencyGlob(): string { + const cacheDependencyGlobInput = core.getInput("cache-dependency-glob"); + if (cacheDependencyGlobInput !== "") { + return cacheDependencyGlobInput + .split("\n") + .map((part) => part.trim()) + .map((part) => expandTilde(part)) + .map((part) => resolveRelativePath(part)) + .join("\n"); + } + return cacheDependencyGlobInput; +} + function expandTilde(input: string): string { if (input.startsWith("~")) { return `${process.env.HOME}${input.substring(1)}`; @@ -89,6 +104,15 @@ function expandTilde(input: string): string { return input; } +function resolveRelativePath(inputPath: string): string { + if (path.isAbsolute(inputPath)) { + return inputPath; + } + const absolutePath = `${workingDirectory}${path.sep}${inputPath}`; + core.debug(`Resolving relative path ${inputPath} to ${absolutePath}`); + return absolutePath; +} + function getManifestFile(): string | undefined { const manifestFileInput = core.getInput("manifest-file"); if (manifestFileInput !== "") {