5
0
mirror of https://github.com/astral-sh/setup-uv.git synced 2025-12-15 11:07:14 +00:00

Compare commits

...

20 Commits

Author SHA1 Message Date
github-actions[bot]
023eb7875f chore: update known checksums for 0.4.17 (#104)
chore: update known checksums for 0.4.17

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2024-09-27 20:26:47 +02:00
dependabot[bot]
315da29189 Bump @types/node from 22.7.0 to 22.7.3 (#103)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 22.7.0 to 22.7.3.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=22.7.0&new-version=22.7.3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-27 13:05:44 +02:00
dependabot[bot]
4cda7d7332 Bump @types/node from 22.6.1 to 22.7.0 (#101)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 22.6.1 to 22.7.0.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=22.6.1&new-version=22.7.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-25 13:02:33 +02:00
github-actions[bot]
8114e5e81b chore: update known checksums for 0.4.16 (#100)
chore: update known checksums for 0.4.16

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2024-09-25 07:25:31 +00:00
dependabot[bot]
7ee921e18a Bump @types/node from 22.5.5 to 22.6.1 (#98)
Bumps
[@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node)
from 22.5.5 to 22.6.1.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@types/node&package-manager=npm_and_yarn&previous-version=22.5.5&new-version=22.6.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-25 09:02:25 +02:00
Kevin Stillhammer
8c3a35e468 Only log checksum is valid when it really is (#97) 2024-09-21 19:10:22 +00:00
Kevin Stillhammer
abac0ce7b0 Use runner label selfhosted-ubuntu-arm64 (#96)
Replaces oracle-aarch64 to better express what the runner is used for
2024-09-21 20:19:02 +02:00
github-actions[bot]
03e245b158 chore: update known checksums for 0.4.15 (#95)
chore: update known checksums for 0.4.15

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2024-09-21 17:07:50 +02:00
Kevin Stillhammer
aeb46491c7 Set tool(-bin) dir and add to PATH (#87)
Fixes: #83
Fixes: #60
2024-09-21 10:14:36 +02:00
github-actions[bot]
dbb680fbd2 chore: update known checksums for 0.4.14 (#94)
chore: update known checksums for 0.4.14

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2024-09-20 21:53:28 +00:00
github-actions[bot]
8de9ba90a2 chore: update known checksums for 0.4.13 (#93)
chore: update known checksums for 0.4.13

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2024-09-19 21:30:53 +00:00
dependabot[bot]
118bd876d2 Bump peter-evans/create-pull-request from 7.0.3 to 7.0.5 (#91)
Bumps
[peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request)
from 7.0.3 to 7.0.5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/peter-evans/create-pull-request/releases">peter-evans/create-pull-request's
releases</a>.</em></p>
<blockquote>
<h2>Create Pull Request v7.0.5</h2>
<p>⚙️ Fixes an issue with commit signing to allow it to support
symlinks</p>
<h2>What's Changed</h2>
<ul>
<li>fix: support symlinks when commit signing by <a
href="https://github.com/peter-evans"><code>@​peter-evans</code></a> in
<a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/3359">peter-evans/create-pull-request#3359</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/peter-evans/create-pull-request/compare/v7.0.4...v7.0.5">https://github.com/peter-evans/create-pull-request/compare/v7.0.4...v7.0.5</a></p>
<h2>Create Pull Request v7.0.4</h2>
<p>⚙️ Fixes an issue with commit signing to allow it to support
submodules</p>
<h2>What's Changed</h2>
<ul>
<li>docs: correct suggestion for bot setup by <a
href="https://github.com/henryiii"><code>@​henryiii</code></a> in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/3342">peter-evans/create-pull-request#3342</a></li>
<li>build(deps-dev): bump <code>@​types/jest</code> from 29.5.12 to
29.5.13 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/3343">peter-evans/create-pull-request#3343</a></li>
<li>build(deps-dev): bump eslint from 8.57.0 to 8.57.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/3344">peter-evans/create-pull-request#3344</a></li>
<li>fix: support submodules when commit signing by <a
href="https://github.com/peter-evans"><code>@​peter-evans</code></a> in
<a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/3354">peter-evans/create-pull-request#3354</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/henryiii"><code>@​henryiii</code></a>
made their first contribution in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/3342">peter-evans/create-pull-request#3342</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/peter-evans/create-pull-request/compare/v7.0.3...v7.0.4">https://github.com/peter-evans/create-pull-request/compare/v7.0.3...v7.0.4</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="5e914681df"><code>5e91468</code></a>
fix: support symlinks when commit signing (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/3359">#3359</a>)</li>
<li><a
href="2f38cd26bf"><code>2f38cd2</code></a>
fix: support submodules when commit signing (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/3354">#3354</a>)</li>
<li><a
href="7a8aeac749"><code>7a8aeac</code></a>
build(deps-dev): bump eslint from 8.57.0 to 8.57.1 (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/3344">#3344</a>)</li>
<li><a
href="d39d596a77"><code>d39d596</code></a>
build(deps-dev): bump <code>@​types/jest</code> from 29.5.12 to 29.5.13
(<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/3343">#3343</a>)</li>
<li><a
href="f6f978fd3d"><code>f6f978f</code></a>
docs: correct suggestion for bot setup (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/3342">#3342</a>)</li>
<li>See full diff in <a
href="6cd32fd936...5e914681df">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=peter-evans/create-pull-request&package-manager=github_actions&previous-version=7.0.3&new-version=7.0.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-19 18:40:01 +02:00
Bartosz Sławecki
adcf5c892e Fix a typo SHA265 → SHA256 (#90)
:)
2024-09-19 09:10:29 +00:00
github-actions[bot]
0c326cbd51 chore: update known checksums for 0.4.12 (#86)
chore: update known checksums for 0.4.12

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2024-09-18 18:53:44 +02:00
Kevin Stillhammer
8205eab75b Update version in README from v2 to v3 (#85) 2024-09-18 09:34:56 +00:00
Kevin Stillhammer
ce0062aac7 Add support for semver version ranges (#82)
Closes: #38
2024-09-18 09:29:09 +00:00
github-actions[bot]
8e09161b4b chore: update known checksums for 0.4.11 (#84)
chore: update known checksums for 0.4.11

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2024-09-18 07:23:29 +00:00
dependabot[bot]
bf2778f5d6 Bump eslint from 8.57.0 to 8.57.1 (#81) 2024-09-17 23:20:41 -04:00
Charlie Marsh
223591d242 Tweak the action branding (#49) 2024-09-17 23:20:15 -04:00
Kevin Stillhammer
79fb68ebfe Fix prettier destroying markdown NOTE (#80) 2024-09-17 08:27:37 +02:00
14 changed files with 4941 additions and 117 deletions

View File

@@ -89,7 +89,7 @@ jobs:
CACHE_HIT: ${{ steps.restore.outputs.cache-hit }}
test-setup-cache-local:
runs-on: oracle-aarch64
runs-on: selfhosted-ubuntu-arm64
steps:
- uses: actions/checkout@v4
- name: Setup with cache
@@ -101,7 +101,7 @@ jobs:
- run: uv sync
working-directory: __tests__/fixtures/uv-project
test-restore-cache-local:
runs-on: oracle-aarch64
runs-on: selfhosted-ubuntu-arm64
needs: test-setup-cache-local
steps:
- uses: actions/checkout@v4

View File

@@ -28,7 +28,7 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, macos-14, oracle-aarch64]
os: [ubuntu-latest, macos-latest, macos-14, selfhosted-ubuntu-arm64]
steps:
- uses: actions/checkout@v4
- name: Install default version
@@ -39,8 +39,8 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, macos-14, oracle-aarch64]
uv-version: ["latest", "0.3.0", "0.3.2"]
os: [ubuntu-latest, macos-latest, macos-14, selfhosted-ubuntu-arm64]
uv-version: ["latest", "0.3.0", "0.3.2", "0.3", "0.3.x", ">=0.3.0"]
steps:
- uses: actions/checkout@v4
- name: Install version ${{ matrix.uv-version }}
@@ -49,18 +49,37 @@ jobs:
version: ${{ matrix.uv-version }}
- run: uv sync
working-directory: __tests__/fixtures/uv-project
test-semver-range:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, selfhosted-ubuntu-arm64]
steps:
- uses: actions/checkout@v4
- name: Install version 0.3
id: setup-uv
uses: ./
with:
version: "0.3"
- name: Correct version gets installed
run: |
if [ "$UV_VERSION" != "0.3.5" ]; then
exit 1
fi
env:
UV_VERSION: ${{ steps.setup-uv.outputs.uv-version }}
test-checksum:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, oracle-aarch64]
os: [ubuntu-latest, selfhosted-ubuntu-arm64]
checksum:
["4d9279ad5ca596b1e2d703901d508430eb07564dc4d8837de9e2fca9c90f8ecd"]
exclude:
- os: oracle-aarch64
- os: selfhosted-ubuntu-arm64
checksum: "4d9279ad5ca596b1e2d703901d508430eb07564dc4d8837de9e2fca9c90f8ecd"
include:
- os: oracle-aarch64
- os: selfhosted-ubuntu-arm64
checksum: "e11b01402ab645392c7ad6044db63d37e4fd1e745e015306993b07695ea5f9f8"
steps:
- uses: actions/checkout@v4
@@ -86,3 +105,21 @@ jobs:
- name: Install default version
uses: ./
- run: uvx ruff --version
test-tool-install:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
[
ubuntu-latest,
macos-latest,
macos-14,
windows-latest,
selfhosted-ubuntu-arm64,
]
steps:
- uses: actions/checkout@v4
- name: Install default version
uses: ./
- run: uv tool install ruff
- run: ruff --version

View File

@@ -17,7 +17,7 @@ jobs:
src/download/checksum/known-checksums.ts ${{ secrets.GITHUB_TOKEN }}
- run: npm install && npm run all
- name: Create Pull Request
uses: peter-evans/create-pull-request@6cd32fd93684475c31847837f87bb135d40a2b79 # v7.0.3
uses: peter-evans/create-pull-request@5e914681df9dc83aa4e4905692ca88beb2f9e91f # v7.0.5
with:
commit-message: "chore: update known checksums"
title:

View File

@@ -13,11 +13,14 @@ Set up your GitHub Actions workflow with a specific version of [uv](https://docs
- [Usage](#usage)
- [Install the latest version (default)](#install-the-latest-version-default)
- [Install a specific version](#install-a-specific-version)
- [Install a version by supplying a semver range](#install-a-version-by-supplying-a-semver-range)
- [Validate checksum](#validate-checksum)
- [Enable Caching](#enable-caching)
- [Cache dependency glob](#cache-dependency-glob)
- [Local cache path](#local-cache-path)
- [GitHub authentication token](#github-authentication-token)
- [UV_TOOL_DIR](#uv_tool_dir)
- [UV_TOOL_BIN_DIR](#uv_tool_bin_dir)
- [How it works](#how-it-works)
- [FAQ](#faq)
@@ -27,7 +30,7 @@ Set up your GitHub Actions workflow with a specific version of [uv](https://docs
```yaml
- name: Install the latest version of uv
uses: astral-sh/setup-uv@v2
uses: astral-sh/setup-uv@v3
with:
version: "latest"
```
@@ -45,20 +48,39 @@ For an example workflow, see
```yaml
- name: Install a specific version of uv
uses: astral-sh/setup-uv@v2
uses: astral-sh/setup-uv@v3
with:
version: "0.4.4"
```
### Install a version by supplying a semver range
You can also specify a [semver range](https://github.com/npm/node-semver?tab=readme-ov-file#ranges)
to install the latest version that satisfies the range.
```yaml
- name: Install a semver range of uv
uses: astral-sh/setup-uv@v3
with:
version: ">=0.3.0"
```
```yaml
- name: Pinning a minor version of uv
uses: astral-sh/setup-uv@v3
with:
version: "0.3.x"
```
### Validate checksum
You can also specify a checksum to validate the downloaded file. Checksums up to the default version
are automatically verified by this action. The sha265 hashes can be found on the
are automatically verified by this action. The sha256 hashes can be found on the
[releases page](https://github.com/astral-sh/uv/releases) of the uv repo.
```yaml
- name: Install a specific version and validate the checksum
uses: astral-sh/setup-uv@v2
uses: astral-sh/setup-uv@v3
with:
version: "0.3.1"
checksum: "e11b01402ab645392c7ad6044db63d37e4fd1e745e015306993b07695ea5f9f8"
@@ -79,7 +101,7 @@ You can optionally define a custom cache key suffix.
```yaml
- name: Enable caching and define a custom cache key suffix
id: setup-uv
uses: astral-sh/setup-uv@v2
uses: astral-sh/setup-uv@v3
with:
enable-cache: true
cache-suffix: "optional-suffix"
@@ -100,11 +122,13 @@ If you want to control when the cache is invalidated, specify a glob pattern wit
`cache-dependency-glob` input. The cache will be invalidated if any file matching the glob pattern
changes. The glob matches files relative to the repository root.
> [!NOTE] The default is `**/uv.lock`.
> [!NOTE]
>
> The default is `**/uv.lock`.
```yaml
- name: Define a cache dependency glob
uses: astral-sh/setup-uv@v2
uses: astral-sh/setup-uv@v3
with:
enable-cache: true
cache-dependency-glob: "**/requirements*.txt"
@@ -112,7 +136,7 @@ changes. The glob matches files relative to the repository root.
```yaml
- name: Define a list of cache dependency globs
uses: astral-sh/setup-uv@v2
uses: astral-sh/setup-uv@v3
with:
enable-cache: true
cache-dependency-glob: |
@@ -122,7 +146,7 @@ changes. The glob matches files relative to the repository root.
```yaml
- name: Never invalidate the cache
uses: astral-sh/setup-uv@v2
uses: astral-sh/setup-uv@v3
with:
enable-cache: true
cache-dependency-glob: ""
@@ -130,12 +154,14 @@ changes. The glob matches files relative to the repository root.
### Local cache path
This action controls where uv stores its cache on the runner's filesystem. You can change the
default (`/tmp/setup-uv-cache`) by specifying the path with the `cache-local-path` input.
This action controls where uv stores its cache on the runner's filesystem by setting `UV_CACHE_DIR`.
It defaults to `setup-uv-cache` in the `TMP` dir, `D:\a\_temp\uv-tool-dir` on Windows and
`/tmp/setup-uv-cache` on Linux/macOS. You can change the default by specifying the path with the
`cache-local-path` input.
```yaml
- name: Define a custom uv cache path
uses: astral-sh/setup-uv@v2
uses: astral-sh/setup-uv@v3
with:
cache-local-path: "/path/to/cache"
```
@@ -152,11 +178,48 @@ are not sufficient, you can provide a custom GitHub token with the necessary per
```yaml
- name: Install the latest version of uv with a custom GitHub token
uses: astral-sh/setup-uv@v2
uses: astral-sh/setup-uv@v3
with:
github-token: ${{ secrets.CUSTOM_GITHUB_TOKEN }}
```
### UV_TOOL_DIR
On Windows `UV_TOOL_DIR` is set to `uv-tool-dir` in the `TMP` dir (e.g. `D:\a\_temp\uv-tool-dir`).
On GitHub hosted runners this is on the much faster `D:` drive.
On all other platforms the tool environments are placed in the
[default location](https://docs.astral.sh/uv/concepts/tools/#tools-directory).
If you want to change this behaviour (especially on self-hosted runners) you can use the `tool-dir`
input:
```yaml
- name: Install the latest version of uv with a custom tool dir
uses: astral-sh/setup-uv@v3
with:
tool-dir: "/path/to/tool/dir"
```
### UV_TOOL_BIN_DIR
On Windows `UV_TOOL_BIN_DIR` is set to `uv-tool-bin-dir` in the `TMP` dir (e.g.
`D:\a\_temp\uv-tool-bin-dir`). On GitHub hosted runners this is on the much faster `D:` drive. This
path is also automatically added to the PATH.
On all other platforms the tool binaries get installed to the
[default location](https://docs.astral.sh/uv/concepts/tools/#the-bin-directory).
If you want to change this behaviour (especially on self-hosted runners) you can use the
`tool-bin-dir` input:
```yaml
- name: Install the latest version of uv with a custom tool bin dir
uses: astral-sh/setup-uv@v3
with:
tool-bin-dir: "/path/to/tool-bin/dir"
```
## How it works
This action downloads uv from the uv repo's official
@@ -181,7 +244,7 @@ For example:
- name: Checkout the repository
uses: actions/checkout@main
- name: Install the latest version of uv
uses: astral-sh/setup-uv@v2
uses: astral-sh/setup-uv@v3
with:
enable-cache: true
- name: Test
@@ -193,7 +256,7 @@ To install a specific version of Python, use
```yaml
- name: Install the latest version of uv
uses: astral-sh/setup-uv@v2
uses: astral-sh/setup-uv@v3
with:
enable-cache: true
- name: Install Python 3.12
@@ -212,7 +275,7 @@ output:
uses: actions/checkout@main
- name: Install the default version of uv
id: setup-uv
uses: astral-sh/setup-uv@v2
uses: astral-sh/setup-uv@v3
- name: Print the installed version
run: echo "Installed uv version is ${{ steps.setup-uv.outputs.uv-version }}"
```

View File

@@ -1,6 +1,7 @@
name: "Python setup uv"
description: "Set up your GitHub Actions workflow with a specific version of uv"
author: "eifinger"
name: "astral-sh/setup-uv"
description:
"Set up your GitHub Actions workflow with a specific version of uv."
author: "astral-sh"
inputs:
version:
description: "The version of uv to install"
@@ -28,6 +29,12 @@ inputs:
cache-local-path:
description: "Local path to store the cache."
default: ""
tool-dir:
description: "Custom path to set UV_TOOL_DIR to."
required: false
tool-bin-dir:
description: "Custom path to set UV_TOOL_BIN_DIR to."
required: false
outputs:
uv-version:
description: "The installed uv version. Useful when using latest."
@@ -40,4 +47,4 @@ runs:
post-if: success()
branding:
icon: "package"
color: "blue"
color: "black"

37
dist/save-cache/index.js generated vendored
View File

@@ -83008,7 +83008,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.cacheDependencyGlob = exports.githubToken = exports.cacheLocalPath = exports.cacheSuffix = exports.enableCache = exports.checkSum = exports.version = void 0;
exports.githubToken = exports.toolDir = exports.toolBinDir = exports.cacheDependencyGlob = exports.cacheLocalPath = exports.cacheSuffix = exports.enableCache = exports.checkSum = exports.version = void 0;
const core = __importStar(__nccwpck_require__(2186));
const path_1 = __importDefault(__nccwpck_require__(1017));
exports.version = core.getInput("version");
@@ -83016,8 +83016,36 @@ exports.checkSum = core.getInput("checksum");
exports.enableCache = core.getInput("enable-cache") === "true";
exports.cacheSuffix = core.getInput("cache-suffix") || "";
exports.cacheLocalPath = getCacheLocalPath();
exports.githubToken = core.getInput("github-token");
exports.cacheDependencyGlob = core.getInput("cache-dependency-glob");
exports.toolBinDir = getToolBinDir();
exports.toolDir = getToolDir();
exports.githubToken = core.getInput("github-token");
function getToolBinDir() {
const toolBinDirInput = core.getInput("tool-bin-dir");
if (toolBinDirInput !== "") {
return toolBinDirInput;
}
if (process.platform === "win32") {
if (process.env.RUNNER_TEMP !== undefined) {
return `${process.env.RUNNER_TEMP}${path_1.default.sep}uv-tool-bin-dir`;
}
throw Error("Could not determine UV_TOOL_BIN_DIR. Please make sure RUNNER_TEMP is set or provide the tool-bin-dir input");
}
return undefined;
}
function getToolDir() {
const toolDirInput = core.getInput("tool-dir");
if (toolDirInput !== "") {
return toolDirInput;
}
if (process.platform === "win32") {
if (process.env.RUNNER_TEMP !== undefined) {
return `${process.env.RUNNER_TEMP}${path_1.default.sep}uv-tool-dir`;
}
throw Error("Could not determine UV_TOOL_DIR. Please make sure RUNNER_TEMP is set or provide the tool-dir input");
}
return undefined;
}
function getCacheLocalPath() {
const cacheLocalPathInput = core.getInput("cache-local-path");
if (cacheLocalPathInput !== "") {
@@ -83026,10 +83054,7 @@ function getCacheLocalPath() {
if (process.env.RUNNER_TEMP !== undefined) {
return `${process.env.RUNNER_TEMP}${path_1.default.sep}setup-uv-cache`;
}
if (process.platform === "win32") {
return "D:\\a\\_temp\\setup-uv-cache";
}
return "/tmp/setup-uv-cache";
throw Error("Could not determine UV_CACHE_DIR. Please make sure RUNNER_TEMP is set or provide the cache-local-path input");
}

4364
dist/setup/index.js generated vendored

File diff suppressed because it is too large Load Diff

66
package-lock.json generated
View File

@@ -19,12 +19,12 @@
"@octokit/rest": "^21.0.2"
},
"devDependencies": {
"@types/node": "^22.5.5",
"@types/node": "^22.7.3",
"@types/semver": "^7.5.8",
"@typescript-eslint/eslint-plugin": "^7.15.0",
"@typescript-eslint/parser": "^7.18.0",
"@vercel/ncc": "^0.38.1",
"eslint": "^8.57.0",
"eslint": "^8.57.1",
"eslint-plugin-github": "^5.0.2",
"eslint-plugin-import": "^2.30.0",
"eslint-plugin-jest": "^28.8.3",
@@ -1062,9 +1062,9 @@
}
},
"node_modules/@eslint/js": {
"version": "8.57.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz",
"integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==",
"version": "8.57.1",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
"integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -1085,12 +1085,13 @@
"dev": true
},
"node_modules/@humanwhocodes/config-array": {
"version": "0.11.14",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
"integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
"version": "0.13.0",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
"integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
"deprecated": "Use @eslint/config-array instead",
"dev": true,
"dependencies": {
"@humanwhocodes/object-schema": "^2.0.2",
"@humanwhocodes/object-schema": "^2.0.3",
"debug": "^4.3.1",
"minimatch": "^3.0.5"
},
@@ -1115,6 +1116,7 @@
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz",
"integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==",
"deprecated": "Use @eslint/object-schema instead",
"dev": true
},
"node_modules/@istanbuljs/load-nyc-config": {
@@ -2099,9 +2101,9 @@
"dev": true
},
"node_modules/@types/node": {
"version": "22.5.5",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.5.tgz",
"integrity": "sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==",
"version": "22.7.3",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.3.tgz",
"integrity": "sha512-qXKfhXXqGTyBskvWEzJZPUxSslAiLaB6JGP1ic/XTH9ctGgzdgYguuLP1C601aRTSDNlLb0jbKqXjZ48GNraSA==",
"dependencies": {
"undici-types": "~6.19.2"
}
@@ -3621,16 +3623,16 @@
}
},
"node_modules/eslint": {
"version": "8.57.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz",
"integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
"version": "8.57.1",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
"integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.6.1",
"@eslint/eslintrc": "^2.1.4",
"@eslint/js": "8.57.0",
"@humanwhocodes/config-array": "^0.11.14",
"@eslint/js": "8.57.1",
"@humanwhocodes/config-array": "^0.13.0",
"@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8",
"@ungap/structured-clone": "^1.2.0",
@@ -8943,9 +8945,9 @@
}
},
"@eslint/js": {
"version": "8.57.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz",
"integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==",
"version": "8.57.1",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz",
"integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==",
"dev": true
},
"@fastify/busboy": {
@@ -8960,12 +8962,12 @@
"dev": true
},
"@humanwhocodes/config-array": {
"version": "0.11.14",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz",
"integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==",
"version": "0.13.0",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
"integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==",
"dev": true,
"requires": {
"@humanwhocodes/object-schema": "^2.0.2",
"@humanwhocodes/object-schema": "^2.0.3",
"debug": "^4.3.1",
"minimatch": "^3.0.5"
}
@@ -9785,9 +9787,9 @@
"dev": true
},
"@types/node": {
"version": "22.5.5",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.5.tgz",
"integrity": "sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==",
"version": "22.7.3",
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.3.tgz",
"integrity": "sha512-qXKfhXXqGTyBskvWEzJZPUxSslAiLaB6JGP1ic/XTH9ctGgzdgYguuLP1C601aRTSDNlLb0jbKqXjZ48GNraSA==",
"requires": {
"undici-types": "~6.19.2"
}
@@ -10856,16 +10858,16 @@
"dev": true
},
"eslint": {
"version": "8.57.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz",
"integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==",
"version": "8.57.1",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz",
"integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==",
"dev": true,
"requires": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.6.1",
"@eslint/eslintrc": "^2.1.4",
"@eslint/js": "8.57.0",
"@humanwhocodes/config-array": "^0.11.14",
"@eslint/js": "8.57.1",
"@humanwhocodes/config-array": "^0.13.0",
"@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8",
"@ungap/structured-clone": "^1.2.0",

View File

@@ -38,12 +38,12 @@
"@octokit/rest": "^21.0.2"
},
"devDependencies": {
"@types/node": "^22.5.5",
"@types/node": "^22.7.3",
"@types/semver": "^7.5.8",
"@typescript-eslint/eslint-plugin": "^7.15.0",
"@typescript-eslint/parser": "^7.18.0",
"@vercel/ncc": "^0.38.1",
"eslint": "^8.57.0",
"eslint": "^8.57.1",
"eslint-plugin-github": "^5.0.2",
"eslint-plugin-import": "^2.30.0",
"eslint-plugin-jest": "^28.8.3",

View File

@@ -12,7 +12,7 @@ export async function validateChecksum(
platform: Platform,
version: string,
): Promise<void> {
let isValid = true;
let isValid: boolean | undefined = undefined;
if (checkSum !== undefined && checkSum !== "") {
isValid = await validateFileCheckSum(downloadPath, checkSum);
} else {
@@ -27,10 +27,12 @@ export async function validateChecksum(
}
}
if (!isValid) {
if (isValid === false) {
throw new Error(`Checksum for ${downloadPath} did not match ${checkSum}.`);
}
core.debug(`Checksum for ${downloadPath} is valid.`);
if (isValid === true) {
core.debug(`Checksum for ${downloadPath} is valid.`);
}
}
async function validateFileCheckSum(

View File

@@ -1,5 +1,257 @@
// AUTOGENERATED_DO_NOT_EDIT
export const KNOWN_CHECKSUMS: { [key: string]: string } = {
"undefined-0.4.17":
"68ad7bf18029bcc9f0c8556e5fb96814fa30d8f67b3ccbc5db19e38b487c9326",
"aarch64-apple-darwin-0.4.17":
"af8e68a0e831e8b482d9e2f5443af63d24d003b0c53e0d5f921c2bcb5eed1644",
"aarch64-unknown-linux-gnu-0.4.17":
"5b7c0269aa15aca1f6171e06db39e24a5ec81f1b484ab382a8db218424afc5b4",
"aarch64-unknown-linux-musl-0.4.17":
"7dc33d60655e7a78bf13ad68bff89da6233b24484cd01a668d72a4ca88c7e70d",
"arm-unknown-linux-musleabihf-0.4.17":
"1e409703fa3639ac01d5c2b277763987b3b6e856097bb7c59dec168861ad9d9b",
"armv7-unknown-linux-gnueabihf-0.4.17":
"b14484ed08fe0073db869ed73c12f2ca1d45f22daabba241e2aa12086793ba51",
"armv7-unknown-linux-musleabihf-0.4.17":
"6920000627deb6f101dd6a144f1930f4649550d9bf2eb9189fa7d38270d85900",
"i686-pc-windows-msvc-0.4.17":
"c8a2c21e23694e4d8079693d8d980642ceabad7589a8da5d5c112844cd9a1530",
"i686-unknown-linux-gnu-0.4.17":
"67d1ed2af42d7f355eb08325645013e24fc3797f33cfa9d5aca18f74a98c4885",
"i686-unknown-linux-musl-0.4.17":
"771dbc2b9bda1653029018eb6b7e98d83935df26595a2194bc7f57251bdd9caf",
"powerpc64-unknown-linux-gnu-0.4.17":
"f2c4ea4bed0f4f42686742bc1078761a232b1ce51532169f17bd99ebb2595ec3",
"powerpc64le-unknown-linux-gnu-0.4.17":
"915a06db243c43cc88f96bf271dd25a3f564ebdda097b79b6d0ee3a6835fc6e2",
"powerpc64le-unknown-linux-musl-0.4.17":
"faaefdc9ed84ab263d0be277b4cccd0a7cd0870fb3bc77a50e293a5d2d74d207",
"s390x-unknown-linux-gnu-0.4.17":
"a49de0293c8177367bd90c527dc88c105e100d04a866ed15898a2f9778e1c648",
"x86_64-apple-darwin-0.4.17":
"7ed2445e83cb919525535774004e294061a8c79253367490647c6aab0e9d06b8",
"x86_64-pc-windows-msvc-0.4.17":
"929407c72ec63c54502c3aef61a2195c2b6a145d6d4b15fd9a0528475cc5cd50",
"x86_64-unknown-linux-gnu-0.4.17":
"9282496b24585c54f4cb71c1cb1dbdecd650f2311237f71ddf217f8756136f79",
"x86_64-unknown-linux-musl-0.4.17":
"6f703368f2d5d4c974e3ece239f64815fb0c6e040eba078ffc87c421a9375deb",
"undefined-0.4.16":
"942296098d4738db464ea170c654d61281f35cd98fc1ecc6c6df784ba9373bb3",
"aarch64-apple-darwin-0.4.16":
"cbfb46932ced7319e0b90cff87bfff759bc319e719cca369ace476906b178f25",
"aarch64-unknown-linux-gnu-0.4.16":
"c5f4f0a7acdbcb6273d117ac9a72767406e2a8da3cc2c72b5818ca08165e90c9",
"aarch64-unknown-linux-musl-0.4.16":
"7f093031e442181b7504fd55e9d0211358646b4fead1317d45aba44efcab719e",
"arm-unknown-linux-musleabihf-0.4.16":
"ec9ca782be4eabb583423539fd335cc1ff9edcbcca8f73cd4cc4a6cdc433023a",
"armv7-unknown-linux-gnueabihf-0.4.16":
"ee55becb4a3e861fdc25eb42fb9fd224625bc6cb06391894aa2b064aa00682d0",
"armv7-unknown-linux-musleabihf-0.4.16":
"5c8dc9de0130004b63ac0b104b460f93bbccc47bc2274294c27ad922142f8d8a",
"i686-pc-windows-msvc-0.4.16":
"44e1d1cb1bb87b18ef6a106585e6860cbe4cda7cd9475cd20eb68b741d4d9293",
"i686-unknown-linux-gnu-0.4.16":
"72799882d18ea4b8ad7cf8b12768c35311d25f6c4eb241a12d44d52b2b02efc3",
"i686-unknown-linux-musl-0.4.16":
"0bb65ab130e6cad00c4d28c8c4f359157bf752ec92145ca44769e66a1143804b",
"powerpc64-unknown-linux-gnu-0.4.16":
"5699b114794b83b42753f4ddeefd00c902e10564733879efeb45b60dd25b04f5",
"powerpc64le-unknown-linux-gnu-0.4.16":
"65f61fc69579d7f6a7238bd180588481ea4b20ff5d45ee62ce590229d53dbb3d",
"powerpc64le-unknown-linux-musl-0.4.16":
"48c83cf9ce5b3e4ecce2fe305aa3f4f8fc0a633f8a0398c7f59f501e8db61fb6",
"s390x-unknown-linux-gnu-0.4.16":
"112e6dea4ddbc6c0dbf416bc7d5dff79fcacd3e0f7fa52772f7647b8cd26ca25",
"x86_64-apple-darwin-0.4.16":
"ecf035262115b216f6cc709917418df9dbafe47d49b8048c465faa406face032",
"x86_64-pc-windows-msvc-0.4.16":
"93a6df8f8225fb73dda275d06455fe5026f00c42e8dccc787812841c0c104291",
"x86_64-unknown-linux-gnu-0.4.16":
"f4f4de434206fb610ecb2dbc3fc44c62adb6b61e8d1237d858a10b407a2737c4",
"x86_64-unknown-linux-musl-0.4.16":
"aab3a3ef8e4ffa641210b1ed374eebd08b5e612b1a928c291a543d3b624d46d1",
"undefined-0.4.15":
"22b605c86cfcb8db9922387151fd8e79d3d2a1caf6f2a03a238ca7ebe058853f",
"aarch64-apple-darwin-0.4.15":
"32f6ad64b9dcf164fa75efef73e0e9a9b769073e6bfe844560329a3176b39b9b",
"aarch64-unknown-linux-gnu-0.4.15":
"cf3f9f98642bd2a7e9d6fa27d880bdbdccc16b6a525b240013789d3048c02348",
"aarch64-unknown-linux-musl-0.4.15":
"fbc0433275134fc50d25ce3c291b3e7a53ffb70b447741398c31d6c4deeba4b8",
"arm-unknown-linux-musleabihf-0.4.15":
"4cc15f1cd1bf5b3508886baa005c6dd51ae7cf995e8699c100ee5a32da70f13b",
"armv7-unknown-linux-gnueabihf-0.4.15":
"380366651e5c924239f1e085fade96ec04d1a312c8a9db7a9f383fcf87e073d1",
"armv7-unknown-linux-musleabihf-0.4.15":
"50eb304472f7b6b02c4fed987e0931f02a0b5e7c1620559f0246416e725297f5",
"i686-pc-windows-msvc-0.4.15":
"3ad9d42a4308adc69dd7061b0ba9451b26d118032d3937dd92e3acef4aa62a40",
"i686-unknown-linux-gnu-0.4.15":
"2e90ee238cba49c5f096c8b0648c7fc531a75dcf0c26eb0cde4d9ce5447d8d82",
"i686-unknown-linux-musl-0.4.15":
"0120dfe81ebc98d20dec01f8ce7a8c571673155dbd67ab08a6cf4000de85df65",
"powerpc64-unknown-linux-gnu-0.4.15":
"ef10cefd6db62ea6c4ae082457b720332927e86ad3e1dc404da75961d9bd987c",
"powerpc64le-unknown-linux-gnu-0.4.15":
"e58fa6d325e81bd845265c980f3dc7ffcd6ae6b912c525bc165938964bc2b0c0",
"powerpc64le-unknown-linux-musl-0.4.15":
"c64194823946c45640990c1616f2043bda63e05a2fcfdcc33fd64bbadcc6408b",
"s390x-unknown-linux-gnu-0.4.15":
"662f0bee11f330a80b002eb3b6d74f574832b1ceee6943a6bdc0486dabde3514",
"x86_64-apple-darwin-0.4.15":
"ab91ee8c6461e9ac385a2f96d23d77e027b4e4274e983d0aedf1d64abfb6353b",
"x86_64-pc-windows-msvc-0.4.15":
"17e7ecb448c8b507bb08347df6aa974f58a7536b6fbe21f0ce57372509e409a0",
"x86_64-unknown-linux-gnu-0.4.15":
"f590376432bcb26c2aff86b6ec495d55ba2384d068c62dca477f498902721674",
"x86_64-unknown-linux-musl-0.4.15":
"70e331be83d97f42fd355f18cb1f8b3f4cadc4973b29fec659109fad4a053a8f",
"undefined-0.4.14":
"d73771243ecb8f38a925f16894126644aec95da7557eef22d7c161d9b8af69e9",
"aarch64-apple-darwin-0.4.14":
"e7368a2ffe19cc39e4b733c0b5ddced9952da85fad5d5eb55c75c4a67c7e4747",
"aarch64-unknown-linux-gnu-0.4.14":
"3647ba1da46b7b2dde959c03e3dfd54ad63e7fefe3de7789e1d88931712da1c1",
"aarch64-unknown-linux-musl-0.4.14":
"11a871df0ca91843e09871e7ee8f5d000a3df73f8dd6d7d1ebf0f237feaa18c8",
"arm-unknown-linux-musleabihf-0.4.14":
"8aaf34ca8078db54597173961788f7a9f292ce473629e0b684f7c7b346fb5a68",
"armv7-unknown-linux-gnueabihf-0.4.14":
"6a59fc0794760c20f01dac7594a7559f871d8428b5440303a9e450ae72a53c96",
"armv7-unknown-linux-musleabihf-0.4.14":
"099db2dc91ea868864c55e0820bfa1c279af07259aee4ccfe151e2f3a208aaf4",
"i686-pc-windows-msvc-0.4.14":
"a6d255d229d2447a259d8affe9e537aadb12079852c1bc9097664371e2406a82",
"i686-unknown-linux-gnu-0.4.14":
"6389b5000e256b150f8c185ff3fb28c6bfc4116ad35f07b7b49088675d7c9ceb",
"i686-unknown-linux-musl-0.4.14":
"2307c79f88b9302b4ec2db9d500a240b0710f9e011548e776dfbd15fa1c084e7",
"powerpc64-unknown-linux-gnu-0.4.14":
"01d94b9de93a424781d5a4b4890b6f4e5f5ea59d98363415d4f90fa75ee80426",
"powerpc64le-unknown-linux-gnu-0.4.14":
"0ab4524a49d201368da79ff3d69a01b780cefcec7115acc1448d4a3b71fa3c24",
"powerpc64le-unknown-linux-musl-0.4.14":
"51cc5cbb145f09e60a4a739a8e664657fd0b3d81053b2973ac133513aa43aae2",
"s390x-unknown-linux-gnu-0.4.14":
"f30bb00682299ca9e10e98f387178f839e136414b66ab99f2e28b6f160258315",
"x86_64-apple-darwin-0.4.14":
"442b93a10d3d5d5422c615f73bb13bd491ee88bc2ea913185728940a31c51b35",
"x86_64-pc-windows-msvc-0.4.14":
"dbde8853a1d7c005e34dee03ec1bfc337374c111c86b26701c403bba6076254c",
"x86_64-unknown-linux-gnu-0.4.14":
"873b4b95c5d3d49ae1306122256cb0b116b5c725e068db8100a76efb13d7669d",
"x86_64-unknown-linux-musl-0.4.14":
"1985046d3e36acd02395c704dcd9d1aff03114afe13fdc166754675bae8ad294",
"undefined-0.4.13":
"1164572b6a4700821bd3cb72594f7421aafa414c8d1a94e9570e530ca7a5c635",
"aarch64-apple-darwin-0.4.13":
"32d73e0257dab4371254d26bd9328de4e43b7817ee154d7c77e879df130b15c4",
"aarch64-unknown-linux-gnu-0.4.13":
"0f653d8ece44da59056dd2fda6bddc7e274ed4d6431787bd7aa26ae7e02a66d3",
"aarch64-unknown-linux-musl-0.4.13":
"c24306c2cfc3bcaeab57f866c2501f07e21098fa03db7c1e5961280d44404443",
"arm-unknown-linux-musleabihf-0.4.13":
"f8b9375a7ff918e6b4ec2fbaa4fbac0707b85d9a391ab82a888ec07f4d7ae813",
"armv7-unknown-linux-gnueabihf-0.4.13":
"ab59e9586b89d11ee043aff7410712fa2bc178b6aa83eb70173b81d6f2ef93b5",
"armv7-unknown-linux-musleabihf-0.4.13":
"bdb133e0ecfe889661910bb52f77c54268b82161fdb8af2b1f6c867537626a39",
"i686-pc-windows-msvc-0.4.13":
"b4a92170b85d63ee9d7ac3a9b07fa444e4257e3dfb91a22774c1f76f94a06ddb",
"i686-unknown-linux-gnu-0.4.13":
"a4f2dc1eb9526ae9f1a617fddfc8e565817540ee06b022cc85a31f8915b8130e",
"i686-unknown-linux-musl-0.4.13":
"0f72e2a16e55b57feb8741f86f3e968f3e080868da6c848f6a115149b7d63652",
"powerpc64-unknown-linux-gnu-0.4.13":
"44471a861399b11870b41f8c0e4b8080490803b2c6be5ebf906a09ac0e67b5c9",
"powerpc64le-unknown-linux-gnu-0.4.13":
"4a95260671f6578f773c70aab21da55f1995dde7dbd38794e510a6b5b0fd0c1e",
"powerpc64le-unknown-linux-musl-0.4.13":
"bf3fef07eeb29f1bd79b677afcc52deb1f594fd13bfe25c0d4f05c171957d717",
"s390x-unknown-linux-gnu-0.4.13":
"548e6cfb8ac09cf422d6fef9886ed8ba73bda8333f69ae420aab2cd5f676d7cc",
"x86_64-apple-darwin-0.4.13":
"fb58d588c237218c275f63b6b77eda9477d2c1e1007605e10207c2504ae2a6d5",
"x86_64-pc-windows-msvc-0.4.13":
"888e73d16bc7c67ee2e369e4660249ec107efaf998583cce68dbcd942b76d047",
"x86_64-unknown-linux-gnu-0.4.13":
"0f955f51eaa3ccf56215ace06dab2e9b78437e22002eabc2cedcfcf541d997b2",
"x86_64-unknown-linux-musl-0.4.13":
"c8f73e30407a6e15eea7334f7067ac84ae1526a1ae7f4420dc873492bdfe626e",
"undefined-0.4.12":
"335861d17540501e2c5f82f5b8955b07034c450edb292fd2d628a837f52e0054",
"aarch64-apple-darwin-0.4.12":
"507aeb4efbb4a2b97654df8333aaa9d78109c55e3c3d5959f50cf0d93baa0263",
"aarch64-unknown-linux-gnu-0.4.12":
"73c6f84462895eb924b6fddc2cfef6b9fde0e0c15ff45a0eb882ec5275f5a2f7",
"aarch64-unknown-linux-musl-0.4.12":
"7329992bee100397b3520f1e93512804aa47ea01404c05609aedd181311cdf3b",
"arm-unknown-linux-musleabihf-0.4.12":
"21e4bcaf22259b4a473912403e9a89debd7f8f052e2f5d7d52f350539adade9e",
"armv7-unknown-linux-gnueabihf-0.4.12":
"7a0433a46595b40d9e50eb9a8aeb193b18eb5d545a677a646f86760b716f4b6e",
"armv7-unknown-linux-musleabihf-0.4.12":
"3803d4ef65fea709940bd897c9d27123cd60ca1f72b173eadad69a9949bf1e69",
"i686-pc-windows-msvc-0.4.12":
"e0550b4db9d9074560cdff66e81298288ddeb75347585514601c598ea46df54f",
"i686-unknown-linux-gnu-0.4.12":
"4c0a025f4b1f40a4248435410cbc1c6df0656ccee02f145aecedefac0efac392",
"i686-unknown-linux-musl-0.4.12":
"a0572decd32eb5917bb80bc8d1de0351be362b6a06423ae36bd03c745292c1f7",
"powerpc64-unknown-linux-gnu-0.4.12":
"51e624d5317e4ac6bcd67d1cae49e092c0186cab3dab4f7fa15c2e32066e16f8",
"powerpc64le-unknown-linux-gnu-0.4.12":
"5eafc18d05671ad38488f1b1d48712e829f4eb7f0d25eac423be79e7d8834cdf",
"powerpc64le-unknown-linux-musl-0.4.12":
"926d3caff745f4b4c376ff4328cf5129b8f61af6671d84614270ed8fa05816ca",
"s390x-unknown-linux-gnu-0.4.12":
"810cd900581925ee16e7d606e30fa39912123f9d96a740dbc1f4f9aa3d7e9760",
"x86_64-apple-darwin-0.4.12":
"d2934f4afba1f33d4078cbde301e780db132df6d33f2f5b27df466775e01b236",
"x86_64-pc-windows-msvc-0.4.12":
"4dc5e08f2f69245859b8ff57c7e6f844ebd1a65df12ae13f66a068268af17389",
"x86_64-unknown-linux-gnu-0.4.12":
"db44453ec57d6e3a35b7af2bb7938b47bdc9e7ca397269e978c53dd3065b1195",
"x86_64-unknown-linux-musl-0.4.12":
"ef9551ecf6f0efd51264f8a6a683b8b0210789aeaeab664863a90535a553b985",
"undefined-0.4.11":
"e6e38118aaa7436d31d3aed0f4b0beb188c273c137bd3185e8b4ebdb301682aa",
"aarch64-apple-darwin-0.4.11":
"b988bce29ca19fa229f088f982b66ef9dbf8571cc45eb98b00370a817cfe383a",
"aarch64-unknown-linux-gnu-0.4.11":
"865feeea66be67497506b76925949f97eb1f6da7dda2583a6558bed972f5de13",
"aarch64-unknown-linux-musl-0.4.11":
"db1b16b5e8d943a296667d176e474739c652660cbf56ee5e9157aa7e267442fb",
"arm-unknown-linux-musleabihf-0.4.11":
"9a141516deb4c966d4ae5a4d14dfef0f3c7880817823645760c09fb4cc580ce3",
"armv7-unknown-linux-gnueabihf-0.4.11":
"4748f81c391e0040eb489056677f6caee5886e5c15ef85448db51f11ea9b90df",
"armv7-unknown-linux-musleabihf-0.4.11":
"b564fb4631b6b668d891ec2ce91af10fda1f4374bd846eab24a85abb6fd77b25",
"i686-pc-windows-msvc-0.4.11":
"f1c0c12a40097949aa793f870f811ac8ffcc349228f0d3cae246bd93108e62da",
"i686-unknown-linux-gnu-0.4.11":
"c894193d37fa6cedb3b6c76d85bcca6031a5ef051adb046d583b7f078edc3872",
"i686-unknown-linux-musl-0.4.11":
"c80a63db7be49971b91417fdd5b9327803c38e23998d88d2a3489a2d9fa32de2",
"powerpc64-unknown-linux-gnu-0.4.11":
"f5ecc0461d1b9a8f56804abf5b2200aa22c08b89f404845a9f684817d0824521",
"powerpc64le-unknown-linux-gnu-0.4.11":
"862c8cdc587d435e09aaa0645440d1a8d72e23c68050cd978d4e5d11aede6a6b",
"powerpc64le-unknown-linux-musl-0.4.11":
"82bfb567ab6f2412706f157a998925fd49a491a4eaffb2bf8c09ca512be51a2f",
"s390x-unknown-linux-gnu-0.4.11":
"4b3cacd593aaecbaf193633f3105851ba7fe6627ed567bc3133e48a398e7c947",
"x86_64-apple-darwin-0.4.11":
"1db522b0eebb16cc08094b558f76048834a4d25878d74e07c5b4b7320239a5ab",
"x86_64-pc-windows-msvc-0.4.11":
"b9d43ddca9affbf03c048e34112c470a37af8d8e04c3ff2b79933a073f48e34d",
"x86_64-unknown-linux-gnu-0.4.11":
"3fc34d56857f24c7065309593a5df05ce953f1736f0cf32965b91f69adb66c46",
"x86_64-unknown-linux-musl-0.4.11":
"c3c6eb97198a29c6ca51bed673941ffbe7d97d481e74eec034fd8ad8d59b187c",
"undefined-0.4.10":
"53751ecdbad6aa09b13986e73e1ba1990b348b1793f313fdecaf3bd464311d28",
"aarch64-apple-darwin-0.4.10":

View File

@@ -4,15 +4,21 @@ import * as path from "path";
import { OWNER, REPO, TOOL_CACHE_NAME } from "../utils/constants";
import { Architecture, Platform } from "../utils/platforms";
import { validateChecksum } from "./checksum/checksum";
import * as github from "@actions/github";
export function tryGetFromToolCache(
arch: Architecture,
version: string,
): string | undefined {
): { version: string; installedPath: string | undefined } {
core.debug(`Trying to get uv from tool cache for ${version}...`);
const cachedVersions = tc.findAllVersions(TOOL_CACHE_NAME, arch);
core.debug(`Cached versions: ${cachedVersions}`);
return tc.find(TOOL_CACHE_NAME, version, arch);
let resolvedVersion = tc.evaluateVersions(cachedVersions, version);
if (resolvedVersion === "") {
resolvedVersion = version;
}
const installedPath = tc.find(TOOL_CACHE_NAME, resolvedVersion, arch);
return { version: resolvedVersion, installedPath };
}
export async function downloadVersion(
@@ -20,10 +26,11 @@ export async function downloadVersion(
arch: Architecture,
version: string,
checkSum: string | undefined,
githubToken: string | undefined,
): Promise<string> {
githubToken: string,
): Promise<{ version: string; cachedToolDir: string }> {
const resolvedVersion = await resolveVersion(version, githubToken);
const artifact = `uv-${arch}-${platform}`;
let downloadUrl = `https://github.com/${OWNER}/${REPO}/releases/download/${version}/${artifact}`;
let downloadUrl = `https://github.com/${OWNER}/${REPO}/releases/download/${resolvedVersion}/${artifact}`;
if (platform === "pc-windows-msvc") {
downloadUrl += ".zip";
} else {
@@ -36,7 +43,13 @@ export async function downloadVersion(
undefined,
githubToken,
);
await validateChecksum(checkSum, downloadPath, arch, platform, version);
await validateChecksum(
checkSum,
downloadPath,
arch,
platform,
resolvedVersion,
);
let uvDir: string;
if (platform === "pc-windows-msvc") {
@@ -46,6 +59,37 @@ export async function downloadVersion(
const extractedDir = await tc.extractTar(downloadPath);
uvDir = path.join(extractedDir, artifact);
}
return await tc.cacheDir(uvDir, TOOL_CACHE_NAME, version, arch);
const cachedToolDir = await tc.cacheDir(
uvDir,
TOOL_CACHE_NAME,
resolvedVersion,
arch,
);
return { version: resolvedVersion, cachedToolDir };
}
async function resolveVersion(
version: string,
githubToken: string,
): Promise<string> {
if (tc.isExplicitVersion(version)) {
core.debug(`Version ${version} is an explicit version.`);
return version;
}
const availableVersions = await getAvailableVersions(githubToken);
const resolvedVersion = tc.evaluateVersions(availableVersions, version);
if (resolvedVersion === "") {
throw new Error(`No version found for ${version}`);
}
return resolvedVersion;
}
async function getAvailableVersions(githubToken: string): Promise<string[]> {
const octokit = github.getOctokit(githubToken);
const response = await octokit.paginate(octokit.rest.repos.listReleases, {
owner: OWNER,
repo: REPO,
});
return response.map((release) => release.tag_name);
}

View File

@@ -18,6 +18,8 @@ import {
checkSum,
enableCache,
githubToken,
toolBinDir,
toolDir,
version,
} from "./utils/inputs";
@@ -41,8 +43,10 @@ async function run(): Promise<void> {
);
addUvToPath(setupResult.uvDir);
core.setOutput("uv-version", version);
core.info(`Successfully installed uv version ${version}`);
addToolBinToPath();
setToolDir();
core.setOutput("uv-version", setupResult.version);
core.info(`Successfully installed uv version ${setupResult.version}`);
addMatchers();
setCacheDir(cacheLocalPath);
@@ -50,10 +54,10 @@ async function run(): Promise<void> {
if (enableCache) {
await restoreCache(setupResult.version);
}
process.exit(0);
} catch (err) {
core.setFailed((err as Error).message);
}
process.exit(0);
}
async function setupUv(
@@ -61,29 +65,37 @@ async function setupUv(
arch: Architecture,
versionInput: string,
checkSum: string | undefined,
githubToken: string | undefined,
githubToken: string,
): Promise<{ uvDir: string; version: string }> {
let installedPath: string | undefined;
let cachedToolDir: string;
let version: string;
if (versionInput === "latest") {
const result = await downloadLatest(platform, arch, checkSum, githubToken);
version = result.version;
cachedToolDir = result.cachedToolDir;
const latestResult = await downloadLatest(
platform,
arch,
checkSum,
githubToken,
);
version = latestResult.version;
cachedToolDir = latestResult.cachedToolDir;
} else {
version = versionInput;
installedPath = tryGetFromToolCache(arch, versionInput);
const toolCacheResult = tryGetFromToolCache(arch, versionInput);
version = toolCacheResult.version;
installedPath = toolCacheResult.installedPath;
if (installedPath) {
core.info(`Found uv in tool-cache for ${versionInput}`);
return { uvDir: installedPath, version };
}
cachedToolDir = await downloadVersion(
const versionResult = await downloadVersion(
platform,
arch,
versionInput,
checkSum,
githubToken,
);
cachedToolDir = versionResult.cachedToolDir;
version = versionResult.version;
}
return { uvDir: cachedToolDir, version };
@@ -94,6 +106,33 @@ function addUvToPath(cachedPath: string): void {
core.info(`Added ${cachedPath} to the path`);
}
function addToolBinToPath(): void {
if (toolBinDir !== undefined) {
core.exportVariable("UV_TOOL_BIN_DIR", toolBinDir);
core.info(`Set UV_TOOL_BIN_DIR to ${toolBinDir}`);
core.addPath(toolBinDir);
core.info(`Added ${toolBinDir} to the path`);
} else {
if (process.env.XDG_BIN_HOME !== undefined) {
core.addPath(process.env.XDG_BIN_HOME);
core.info(`Added ${process.env.XDG_BIN_HOME} to the path`);
} else if (process.env.XDG_DATA_HOME !== undefined) {
core.addPath(`${process.env.XDG_DATA_HOME}/../bin`);
core.info(`Added ${process.env.XDG_DATA_HOME}/../bin to the path`);
} else {
core.addPath(`${process.env.HOME}/.local/bin`);
core.info(`Added ${process.env.HOME}/.local/bin to the path`);
}
}
}
function setToolDir(): void {
if (toolDir !== undefined) {
core.exportVariable("UV_TOOL_DIR", toolDir);
core.info(`Set UV_TOOL_DIR to ${toolDir}`);
}
}
function setCacheDir(cacheLocalPath: string): void {
core.exportVariable("UV_CACHE_DIR", cacheLocalPath);
core.info(`Set UV_CACHE_DIR to ${cacheLocalPath}`);

View File

@@ -6,8 +6,42 @@ export const checkSum = core.getInput("checksum");
export const enableCache = core.getInput("enable-cache") === "true";
export const cacheSuffix = core.getInput("cache-suffix") || "";
export const cacheLocalPath = getCacheLocalPath();
export const githubToken = core.getInput("github-token");
export const cacheDependencyGlob = core.getInput("cache-dependency-glob");
export const toolBinDir = getToolBinDir();
export const toolDir = getToolDir();
export const githubToken = core.getInput("github-token");
function getToolBinDir(): string | undefined {
const toolBinDirInput = core.getInput("tool-bin-dir");
if (toolBinDirInput !== "") {
return toolBinDirInput;
}
if (process.platform === "win32") {
if (process.env.RUNNER_TEMP !== undefined) {
return `${process.env.RUNNER_TEMP}${path.sep}uv-tool-bin-dir`;
}
throw Error(
"Could not determine UV_TOOL_BIN_DIR. Please make sure RUNNER_TEMP is set or provide the tool-bin-dir input",
);
}
return undefined;
}
function getToolDir(): string | undefined {
const toolDirInput = core.getInput("tool-dir");
if (toolDirInput !== "") {
return toolDirInput;
}
if (process.platform === "win32") {
if (process.env.RUNNER_TEMP !== undefined) {
return `${process.env.RUNNER_TEMP}${path.sep}uv-tool-dir`;
}
throw Error(
"Could not determine UV_TOOL_DIR. Please make sure RUNNER_TEMP is set or provide the tool-dir input",
);
}
return undefined;
}
function getCacheLocalPath(): string {
const cacheLocalPathInput = core.getInput("cache-local-path");
@@ -17,8 +51,7 @@ function getCacheLocalPath(): string {
if (process.env.RUNNER_TEMP !== undefined) {
return `${process.env.RUNNER_TEMP}${path.sep}setup-uv-cache`;
}
if (process.platform === "win32") {
return "D:\\a\\_temp\\setup-uv-cache";
}
return "/tmp/setup-uv-cache";
throw Error(
"Could not determine UV_CACHE_DIR. Please make sure RUNNER_TEMP is set or provide the cache-local-path input",
);
}