Compare commits

..
Author SHA1 Message Date
eifinger-botandGitHub 4919ec5cf1 fix: persist credentials for git push in update-major-minor-tags workflow (#312)
## Problem

After upgrading to `actions/checkout@v6`, the `update-major-minor-tags`
workflow fails with:

```
fatal: could not read Username for 'https://github.com': No such device or address
```

Example:
https://github.com/astral-sh/ruff-action/actions/runs/21509988231/job/61974754475

## Root Cause

`actions/checkout@v6` changed the behavior of `persist-credentials:
false`. In v6, credentials are immediately cleaned up after checkout,
whereas in v5 they remained available during the job.

The workflow sets `persist-credentials: false` and then tries to `git
push` — but the auth credentials are already gone.

## Fix

Explicitly set `persist-credentials: true` (removing the `false` value).
The workflow already has minimal permissions (`contents: write`) scoped
only to this job, so this is safe.

Added a `zizmor: ignore[artipacked]` comment in case the security linter
flags this pattern.
2026-01-30 19:43:42 +01:00
eifinger-botandGitHub 1977806bc6 ci: add zizmor security linting (#313)
## Summary

Adds [zizmor](https://github.com/woodruffw/zizmor) security linting to
the CI workflow to scan GitHub Actions workflows for security issues.

## Changes

- Added `permissions: security-events: write` to the `lint` job
(required for zizmor)
- Added `zizmorcore/zizmor-action@v0.4.1` step after actionlint

Mirrors the setup in
[astral-sh/setup-uv](https://github.com/astral-sh/setup-uv/blob/803947b9bd8e9f986429fa0c5a41c367cd732b41/.github/workflows/test.yml#L29-L30).
2026-01-30 18:37:28 +00:00
Kevin StillhammerandGitHub aedff8d295 Bump dependencies and actions (#311) 2026-01-30 09:31:31 +01:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
191187a20a Bump actions/checkout from 5.0.0 to 6.0.1 (#278)
Bumps [actions/checkout](https://github.com/actions/checkout) from 5.0.0
to 6.0.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/checkout/releases">actions/checkout's
releases</a>.</em></p>
<blockquote>
<h2>v6.0.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Update all references from v5 and v4 to v6 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2314">actions/checkout#2314</a></li>
<li>Add worktree support for persist-credentials includeIf by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2327">actions/checkout#2327</a></li>
<li>Clarify v6 README by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2328">actions/checkout#2328</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v6...v6.0.1">https://github.com/actions/checkout/compare/v6...v6.0.1</a></p>
<h2>v6.0.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Update README to include Node.js 24 support details and requirements
by <a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2248">actions/checkout#2248</a></li>
<li>Persist creds to a separate file by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2286">actions/checkout#2286</a></li>
<li>v6-beta by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2298">actions/checkout#2298</a></li>
<li>update readme/changelog for v6 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2311">actions/checkout#2311</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v5.0.0...v6.0.0">https://github.com/actions/checkout/compare/v5.0.0...v6.0.0</a></p>
<h2>v6-beta</h2>
<h2>What's Changed</h2>
<p>Updated persist-credentials to store the credentials under
<code>$RUNNER_TEMP</code> instead of directly in the local git
config.</p>
<p>This requires a minimum Actions Runner version of <a
href="https://github.com/actions/runner/releases/tag/v2.329.0">v2.329.0</a>
to access the persisted credentials for <a
href="https://docs.github.com/en/actions/tutorials/use-containerized-services/create-a-docker-container-action">Docker
container action</a> scenarios.</p>
<h2>v5.0.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Port v6 cleanup to v5 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2301">actions/checkout#2301</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v5...v5.0.1">https://github.com/actions/checkout/compare/v5...v5.0.1</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/actions/checkout/blob/main/CHANGELOG.md">actions/checkout's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h2>v6.0.0</h2>
<ul>
<li>Persist creds to a separate file by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2286">actions/checkout#2286</a></li>
<li>Update README to include Node.js 24 support details and requirements
by <a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2248">actions/checkout#2248</a></li>
</ul>
<h2>v5.0.1</h2>
<ul>
<li>Port v6 cleanup to v5 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2301">actions/checkout#2301</a></li>
</ul>
<h2>v5.0.0</h2>
<ul>
<li>Update actions checkout to use node 24 by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2226">actions/checkout#2226</a></li>
</ul>
<h2>v4.3.1</h2>
<ul>
<li>Port v6 cleanup to v4 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2305">actions/checkout#2305</a></li>
</ul>
<h2>v4.3.0</h2>
<ul>
<li>docs: update README.md by <a
href="https://github.com/motss"><code>@​motss</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li>
<li>Add internal repos for checking out multiple repositories by <a
href="https://github.com/mouismail"><code>@​mouismail</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li>
<li>Documentation update - add recommended permissions to Readme by <a
href="https://github.com/benwells"><code>@​benwells</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li>
<li>Adjust positioning of user email note and permissions heading by <a
href="https://github.com/joshmgross"><code>@​joshmgross</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2044">actions/checkout#2044</a></li>
<li>Update README.md by <a
href="https://github.com/nebuk89"><code>@​nebuk89</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2194">actions/checkout#2194</a></li>
<li>Update CODEOWNERS for actions by <a
href="https://github.com/TingluoHuang"><code>@​TingluoHuang</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2224">actions/checkout#2224</a></li>
<li>Update package dependencies by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2236">actions/checkout#2236</a></li>
</ul>
<h2>v4.2.2</h2>
<ul>
<li><code>url-helper.ts</code> now leverages well-known environment
variables by <a href="https://github.com/jww3"><code>@​jww3</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/1941">actions/checkout#1941</a></li>
<li>Expand unit test coverage for <code>isGhes</code> by <a
href="https://github.com/jww3"><code>@​jww3</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1946">actions/checkout#1946</a></li>
</ul>
<h2>v4.2.1</h2>
<ul>
<li>Check out other refs/* by commit if provided, fall back to ref by <a
href="https://github.com/orhantoy"><code>@​orhantoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1924">actions/checkout#1924</a></li>
</ul>
<h2>v4.2.0</h2>
<ul>
<li>Add Ref and Commit outputs by <a
href="https://github.com/lucacome"><code>@​lucacome</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1180">actions/checkout#1180</a></li>
<li>Dependency updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>- <a
href="https://redirect.github.com/actions/checkout/pull/1777">actions/checkout#1777</a>,
<a
href="https://redirect.github.com/actions/checkout/pull/1872">actions/checkout#1872</a></li>
</ul>
<h2>v4.1.7</h2>
<ul>
<li>Bump the minor-npm-dependencies group across 1 directory with 4
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1739">actions/checkout#1739</a></li>
<li>Bump actions/checkout from 3 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1697">actions/checkout#1697</a></li>
<li>Check out other refs/* by commit by <a
href="https://github.com/orhantoy"><code>@​orhantoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1774">actions/checkout#1774</a></li>
<li>Pin actions/checkout's own workflows to a known, good, stable
version. by <a href="https://github.com/jww3"><code>@​jww3</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1776">actions/checkout#1776</a></li>
</ul>
<h2>v4.1.6</h2>
<ul>
<li>Check platform to set archive extension appropriately by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1732">actions/checkout#1732</a></li>
</ul>
<h2>v4.1.5</h2>
<ul>
<li>Update NPM dependencies by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1703">actions/checkout#1703</a></li>
<li>Bump github/codeql-action from 2 to 3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1694">actions/checkout#1694</a></li>
<li>Bump actions/setup-node from 1 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1696">actions/checkout#1696</a></li>
<li>Bump actions/upload-artifact from 2 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1695">actions/checkout#1695</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/checkout/commit/8e8c483db84b4bee98b60c0593521ed34d9990e8"><code>8e8c483</code></a>
Clarify v6 README (<a
href="https://redirect.github.com/actions/checkout/issues/2328">#2328</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/033fa0dc0b82693d8986f1016a0ec2c5e7d9cbb1"><code>033fa0d</code></a>
Add worktree support for persist-credentials includeIf (<a
href="https://redirect.github.com/actions/checkout/issues/2327">#2327</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/c2d88d3ecc89a9ef08eebf45d9637801dcee7eb5"><code>c2d88d3</code></a>
Update all references from v5 and v4 to v6 (<a
href="https://redirect.github.com/actions/checkout/issues/2314">#2314</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/1af3b93b6815bc44a9784bd300feb67ff0d1eeb3"><code>1af3b93</code></a>
update readme/changelog for v6 (<a
href="https://redirect.github.com/actions/checkout/issues/2311">#2311</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/71cf2267d89c5cb81562390fa70a37fa40b1305e"><code>71cf226</code></a>
v6-beta (<a
href="https://redirect.github.com/actions/checkout/issues/2298">#2298</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/069c6959146423d11cd0184e6accf28f9d45f06e"><code>069c695</code></a>
Persist creds to a separate file (<a
href="https://redirect.github.com/actions/checkout/issues/2286">#2286</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493"><code>ff7abcd</code></a>
Update README to include Node.js 24 support details and requirements (<a
href="https://redirect.github.com/actions/checkout/issues/2248">#2248</a>)</li>
<li>See full diff in <a
href="https://github.com/actions/checkout/compare/08c6903cd8c0fde910a37f88322edcfb5dd907a8...8e8c483db84b4bee98b60c0593521ed34d9990e8">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/checkout&package-manager=github_actions&previous-version=5.0.0&new-version=6.0.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

You can trigger a rebase of this PR 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>

> **Note**
> Automatic rebases have been disabled on this pull request as it has
been open for over 30 days.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-28 18:31:29 +01:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
ecac2cc03c Bump github/codeql-action from 3.30.5 to 4.31.10 (#294)
Bumps [github/codeql-action](https://github.com/github/codeql-action)
from 3.30.5 to 4.31.10.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/releases">github/codeql-action's
releases</a>.</em></p>
<blockquote>
<h2>v4.31.10</h2>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>4.31.10 - 12 Jan 2026</h2>
<ul>
<li>Update default CodeQL bundle version to 2.23.9. <a
href="https://redirect.github.com/github/codeql-action/pull/3393">#3393</a></li>
</ul>
<p>See the full <a
href="https://github.com/github/codeql-action/blob/v4.31.10/CHANGELOG.md">CHANGELOG.md</a>
for more information.</p>
<h2>v4.31.9</h2>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>4.31.9 - 16 Dec 2025</h2>
<p>No user facing changes.</p>
<p>See the full <a
href="https://github.com/github/codeql-action/blob/v4.31.9/CHANGELOG.md">CHANGELOG.md</a>
for more information.</p>
<h2>v4.31.8</h2>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>4.31.8 - 11 Dec 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.23.8. <a
href="https://redirect.github.com/github/codeql-action/pull/3354">#3354</a></li>
</ul>
<p>See the full <a
href="https://github.com/github/codeql-action/blob/v4.31.8/CHANGELOG.md">CHANGELOG.md</a>
for more information.</p>
<h2>v4.31.7</h2>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>4.31.7 - 05 Dec 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.23.7. <a
href="https://redirect.github.com/github/codeql-action/pull/3343">#3343</a></li>
</ul>
<p>See the full <a
href="https://github.com/github/codeql-action/blob/v4.31.7/CHANGELOG.md">CHANGELOG.md</a>
for more information.</p>
<h2>v4.31.6</h2>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>4.31.6 - 01 Dec 2025</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/github/codeql-action/blob/main/CHANGELOG.md">github/codeql-action's
changelog</a>.</em></p>
<blockquote>
<h1>CodeQL Action Changelog</h1>
<p>See the <a
href="https://github.com/github/codeql-action/releases">releases
page</a> for the relevant changes to the CodeQL CLI and language
packs.</p>
<h2>[UNRELEASED]</h2>
<p>No user facing changes.</p>
<h2>4.31.10 - 12 Jan 2026</h2>
<ul>
<li>Update default CodeQL bundle version to 2.23.9. <a
href="https://redirect.github.com/github/codeql-action/pull/3393">#3393</a></li>
</ul>
<h2>4.31.9 - 16 Dec 2025</h2>
<p>No user facing changes.</p>
<h2>4.31.8 - 11 Dec 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.23.8. <a
href="https://redirect.github.com/github/codeql-action/pull/3354">#3354</a></li>
</ul>
<h2>4.31.7 - 05 Dec 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.23.7. <a
href="https://redirect.github.com/github/codeql-action/pull/3343">#3343</a></li>
</ul>
<h2>4.31.6 - 01 Dec 2025</h2>
<p>No user facing changes.</p>
<h2>4.31.5 - 24 Nov 2025</h2>
<ul>
<li>Update default CodeQL bundle version to 2.23.6. <a
href="https://redirect.github.com/github/codeql-action/pull/3321">#3321</a></li>
</ul>
<h2>4.31.4 - 18 Nov 2025</h2>
<p>No user facing changes.</p>
<h2>4.31.3 - 13 Nov 2025</h2>
<ul>
<li>CodeQL Action v3 will be deprecated in December 2026. The Action now
logs a warning for customers who are running v3 but could be running v4.
For more information, see <a
href="https://github.blog/changelog/2025-10-28-upcoming-deprecation-of-codeql-action-v3/">Upcoming
deprecation of CodeQL Action v3</a>.</li>
<li>Update default CodeQL bundle version to 2.23.5. <a
href="https://redirect.github.com/github/codeql-action/pull/3288">#3288</a></li>
</ul>
<h2>4.31.2 - 30 Oct 2025</h2>
<p>No user facing changes.</p>
<h2>4.31.1 - 30 Oct 2025</h2>
<ul>
<li>The <code>add-snippets</code> input has been removed from the
<code>analyze</code> action. This input has been deprecated since CodeQL
Action 3.26.4 in August 2024 when this removal was announced.</li>
</ul>
<h2>4.31.0 - 24 Oct 2025</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/github/codeql-action/commit/cdefb33c0f6224e58673d9004f47f7cb3e328b89"><code>cdefb33</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3394">#3394</a>
from github/update-v4.31.10-0fa411efd</li>
<li><a
href="https://github.com/github/codeql-action/commit/cfa77c6b134886357b1c716fbe58a7708833bf31"><code>cfa77c6</code></a>
Update changelog for v4.31.10</li>
<li><a
href="https://github.com/github/codeql-action/commit/0fa411efd0628aefdf9d03a0faa20a1e0edafc4a"><code>0fa411e</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3393">#3393</a>
from github/update-bundle/codeql-bundle-v2.23.9</li>
<li><a
href="https://github.com/github/codeql-action/commit/c2843242125c2fb8dcd892f204eb2f8622886b78"><code>c284324</code></a>
Add changelog note</li>
<li><a
href="https://github.com/github/codeql-action/commit/83e7d0046cd548fe4cb5d55f5b2ce30b0de62304"><code>83e7d00</code></a>
Update default bundle to codeql-bundle-v2.23.9</li>
<li><a
href="https://github.com/github/codeql-action/commit/f6a16bef8e5c39e398e4da16862d381f76824ac6"><code>f6a16be</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3391">#3391</a>
from github/dependabot/npm_and_yarn/npm-minor-f1cdf5...</li>
<li><a
href="https://github.com/github/codeql-action/commit/c1f5f1a8b57e6da99af540e7c2f23ed33152e270"><code>c1f5f1a</code></a>
Rebuild</li>
<li><a
href="https://github.com/github/codeql-action/commit/1805d8d0a48bdde6eb34e4427b3c00c431427f89"><code>1805d8d</code></a>
Bump the npm-minor group with 2 updates</li>
<li><a
href="https://github.com/github/codeql-action/commit/b2951d2a1ed70de8ec57301118b487b35c13595a"><code>b2951d2</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3353">#3353</a>
from github/kaspersv/bump-min-cli-v-for-overlay</li>
<li><a
href="https://github.com/github/codeql-action/commit/41448d92b9e7bb3a481b3134031a56e52f85528f"><code>41448d9</code></a>
Merge pull request <a
href="https://redirect.github.com/github/codeql-action/issues/3287">#3287</a>
from github/henrymercer/generate-mergeback-last</li>
<li>Additional commits viewable in <a
href="https://github.com/github/codeql-action/compare/3599b3baa15b485a2e49ef411a7a4bb2452e7f93...cdefb33c0f6224e58673d9004f47f7cb3e328b89">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github/codeql-action&package-manager=github_actions&previous-version=3.30.5&new-version=4.31.10)](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>
2026-01-28 18:30:14 +01:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
ddb8c29960 Bump actions/setup-node from 6.0.0 to 6.2.0 (#296)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from
6.0.0 to 6.2.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/setup-node/releases">actions/setup-node's
releases</a>.</em></p>
<blockquote>
<h2>v6.2.0</h2>
<h2>What's Changed</h2>
<h3>Documentation</h3>
<ul>
<li>Documentation update related to absence of Lockfile by <a
href="https://github.com/mahabaleshwars"><code>@​mahabaleshwars</code></a>
in <a
href="https://redirect.github.com/actions/setup-node/pull/1454">actions/setup-node#1454</a></li>
<li>Correct mirror option typos by <a
href="https://github.com/MikeMcC399"><code>@​MikeMcC399</code></a> in <a
href="https://redirect.github.com/actions/setup-node/pull/1442">actions/setup-node#1442</a></li>
<li>Readme update on checkout version v6 by <a
href="https://github.com/deining"><code>@​deining</code></a> in <a
href="https://redirect.github.com/actions/setup-node/pull/1446">actions/setup-node#1446</a></li>
<li>Readme typo fixes <a
href="https://github.com/munyari"><code>@​munyari</code></a> in <a
href="https://redirect.github.com/actions/setup-node/pull/1226">actions/setup-node#1226</a></li>
<li>Advanced document update on checkout version v6 by <a
href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a>
in <a
href="https://redirect.github.com/actions/setup-node/pull/1468">actions/setup-node#1468</a></li>
</ul>
<h3>Dependency updates:</h3>
<ul>
<li>Upgrade <code>@​actions/cache</code> to v5.0.1 by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/setup-node/pull/1449">actions/setup-node#1449</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/mahabaleshwars"><code>@​mahabaleshwars</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-node/pull/1454">actions/setup-node#1454</a></li>
<li><a
href="https://github.com/MikeMcC399"><code>@​MikeMcC399</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/setup-node/pull/1442">actions/setup-node#1442</a></li>
<li><a href="https://github.com/deining"><code>@​deining</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/setup-node/pull/1446">actions/setup-node#1446</a></li>
<li><a href="https://github.com/munyari"><code>@​munyari</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/setup-node/pull/1226">actions/setup-node#1226</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/setup-node/compare/v6...v6.2.0">https://github.com/actions/setup-node/compare/v6...v6.2.0</a></p>
<h2>v6.1.0</h2>
<h2>What's Changed</h2>
<h3>Enhancement:</h3>
<ul>
<li>Remove always-auth configuration handling by <a
href="https://github.com/priyagupta108"><code>@​priyagupta108</code></a>
in <a
href="https://redirect.github.com/actions/setup-node/pull/1436">actions/setup-node#1436</a></li>
</ul>
<h3>Dependency updates:</h3>
<ul>
<li>Upgrade <code>@​actions/cache</code> from 4.0.3 to 4.1.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-node/pull/1384">actions/setup-node#1384</a></li>
<li>Upgrade actions/checkout from 5 to 6 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-node/pull/1439">actions/setup-node#1439</a></li>
<li>Upgrade js-yaml from 3.14.1 to 3.14.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/setup-node/pull/1435">actions/setup-node#1435</a></li>
</ul>
<h3>Documentation update:</h3>
<ul>
<li>Add example for restore-only cache in documentation by <a
href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a>
in <a
href="https://redirect.github.com/actions/setup-node/pull/1419">actions/setup-node#1419</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/setup-node/compare/v6...v6.1.0">https://github.com/actions/setup-node/compare/v6...v6.1.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/setup-node/commit/6044e13b5dc448c55e2357c09f80417699197238"><code>6044e13</code></a>
Docs: bump actions/checkout from v5 to v6 (<a
href="https://redirect.github.com/actions/setup-node/issues/1468">#1468</a>)</li>
<li><a
href="https://github.com/actions/setup-node/commit/8e494633d082d609d1e9ff931be32f8a44f1f657"><code>8e49463</code></a>
Fix README typo (<a
href="https://redirect.github.com/actions/setup-node/issues/1226">#1226</a>)</li>
<li><a
href="https://github.com/actions/setup-node/commit/621ac41091d4227ef8fda5009c1ced96d8d36f7e"><code>621ac41</code></a>
README.md: bump to latest released checkout version v6 (<a
href="https://redirect.github.com/actions/setup-node/issues/1446">#1446</a>)</li>
<li><a
href="https://github.com/actions/setup-node/commit/2951748f4c016b747952f8ca7e75fc64f2f62b53"><code>2951748</code></a>
Bump <code>@​actions/cache</code> to v5.0.1 (<a
href="https://redirect.github.com/actions/setup-node/issues/1449">#1449</a>)</li>
<li><a
href="https://github.com/actions/setup-node/commit/21ddc7bc1fef4bd313efce0335fdcbf81827182c"><code>21ddc7b</code></a>
Correct mirror option typos (<a
href="https://redirect.github.com/actions/setup-node/issues/1442">#1442</a>)</li>
<li><a
href="https://github.com/actions/setup-node/commit/65d868f8d4d85d7d4abb7de0875cde3fcc8798f5"><code>65d868f</code></a>
Update Documentation for Lockfile (<a
href="https://redirect.github.com/actions/setup-node/issues/1454">#1454</a>)</li>
<li><a
href="https://github.com/actions/setup-node/commit/395ad3262231945c25e8478fd5baf05154b1d79f"><code>395ad32</code></a>
Bump js-yaml from 3.14.1 to 3.14.2 (<a
href="https://redirect.github.com/actions/setup-node/issues/1435">#1435</a>)</li>
<li><a
href="https://github.com/actions/setup-node/commit/a4d2e2bbca97c78789c5b6f8b2092769fdd8005c"><code>a4d2e2b</code></a>
Bump actions/checkout from 5 to 6 (<a
href="https://redirect.github.com/actions/setup-node/issues/1439">#1439</a>)</li>
<li><a
href="https://github.com/actions/setup-node/commit/b9b25d45f70a5d94d88496aa4896bf9ed8f49b67"><code>b9b25d4</code></a>
Remove always-auth configuration handling from action (<a
href="https://redirect.github.com/actions/setup-node/issues/1436">#1436</a>)</li>
<li><a
href="https://github.com/actions/setup-node/commit/633bb92bc0aabcae06e8ea93b85aecddd374c402"><code>633bb92</code></a>
Bump <code>@​actions/cache</code> from 4.0.3 to 4.1.0 (<a
href="https://redirect.github.com/actions/setup-node/issues/1384">#1384</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/setup-node/compare/2028fbc5c25fe9cf00d9f06a71cc4710d4507903...6044e13b5dc448c55e2357c09f80417699197238">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/setup-node&package-manager=github_actions&previous-version=6.0.0&new-version=6.2.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>
2026-01-28 18:30:02 +01:00
5eee2a4332 search in parent dir (#306)
Fixes:  #164

---------

Co-authored-by: Clawdbot <clawdbot@users.noreply.github.com>
2026-01-28 11:38:26 +01:00
github-actions[bot]andGitHub 1d756c4b80 chore: update known checksums for 0.14.13/0.14.14 (#297) 2026-01-25 21:45:15 +00:00
Kevin StillhammerandGitHub fde82cb611 Fix CI: Pin ruff version to stable 0.13.x in test fixture (#305)
The test was using ruff>=0.14 which is under active development,
 causing failures as new versions like 0.14.13 are released. This
 changes the fixture to use ruff>=0.13 (where 0.13.3 is the final
 release) and updates the expected version in the test accordingly.
2026-01-25 21:39:11 +00:00
Kevin StillhammerandGitHub deb632007b ignore environment markers in dep specs (#295)
Contributes to: #256
2026-01-15 13:58:24 +01:00
Kevin StillhammerandGitHub 90ea8a399c Update the ruff-format matcher to properly extract all info (#293)
Now that format also supports the github output format all info is
available
2026-01-12 18:20:59 +01:00
7840fe30a7 chore: update known checksums for 0.14.11 (#292)
chore: update known checksums for 0.14.11

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2026-01-09 07:24:10 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
56403b4f7c Bump eifinger/actionlint-action from 1.9.3 to 1.10.0 (#291)
Bumps
[eifinger/actionlint-action](https://github.com/eifinger/actionlint-action)
from 1.9.3 to 1.10.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/eifinger/actionlint-action/commit/447fbfe7533062b7a9ea55f790f2396fba6d052a"><code>447fbfe</code></a>
build(deps): bump actions/checkout from 6.0.0 to 6.0.1 (<a
href="https://redirect.github.com/eifinger/actionlint-action/issues/30">#30</a>)</li>
<li><a
href="https://github.com/eifinger/actionlint-action/commit/9e2be07ed11ff8dabc99cc0ff06398b51836c192"><code>9e2be07</code></a>
set default actionlint version to 1.7.10 (<a
href="https://redirect.github.com/eifinger/actionlint-action/issues/31">#31</a>)</li>
<li>See full diff in <a
href="https://github.com/eifinger/actionlint-action/compare/213860089b7cf97d640aa67567898fabeb132746...447fbfe7533062b7a9ea55f790f2396fba6d052a">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=eifinger/actionlint-action&package-manager=github_actions&previous-version=1.9.3&new-version=1.10.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>
2026-01-05 09:51:03 +01:00
eacaa6bf71 chore: update known checksums for 0.14.10 (#289)
chore: update known checksums for 0.14.10

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-12-19 16:42:28 +00:00
Mattias LandGitHub e85c033ebc Support hashes in requirement files for version-file (#287) 2025-12-17 16:29:06 +01:00
8b935c8722 chore: update known checksums for 0.14.9 (#284)
chore: update known checksums for 0.14.9

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-12-12 07:06:49 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
c03f335068 Bump peter-evans/create-pull-request from 7.0.9 to 8.0.0 (#283)
Bumps
[peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request)
from 7.0.9 to 8.0.0.
<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 v8.0.0</h2>
<h2>What's new in v8</h2>
<ul>
<li>Requires <a
href="https://github.com/actions/runner/releases/tag/v2.327.1">Actions
Runner v2.327.1</a> or later if you are using a self-hosted runner for
Node 24 support.</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>chore: Update checkout action version to v6 by <a
href="https://github.com/yonas"><code>@​yonas</code></a> in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4258">peter-evans/create-pull-request#4258</a></li>
<li>Update actions/checkout references to <a
href="https://github.com/v6"><code>@​v6</code></a> in docs by <a
href="https://github.com/Copilot"><code>@​Copilot</code></a> in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4259">peter-evans/create-pull-request#4259</a></li>
<li>feat: v8 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/4260">peter-evans/create-pull-request#4260</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/yonas"><code>@​yonas</code></a> made
their first contribution in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4258">peter-evans/create-pull-request#4258</a></li>
<li><a href="https://github.com/Copilot"><code>@​Copilot</code></a> made
their first contribution in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4259">peter-evans/create-pull-request#4259</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/peter-evans/create-pull-request/compare/v7.0.11...v8.0.0">https://github.com/peter-evans/create-pull-request/compare/v7.0.11...v8.0.0</a></p>
<h2>Create Pull Request v7.0.11</h2>
<h2>What's Changed</h2>
<ul>
<li>fix: restrict remote prune to self-hosted runners 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/4250">peter-evans/create-pull-request#4250</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/peter-evans/create-pull-request/compare/v7.0.10...v7.0.11">https://github.com/peter-evans/create-pull-request/compare/v7.0.10...v7.0.11</a></p>
<h2>Create Pull Request v7.0.10</h2>
<p>⚙️ Fixes an issue where updating a pull request failed when targeting
a forked repository with the same owner as its parent.</p>
<h2>What's Changed</h2>
<ul>
<li>build(deps): bump the github-actions group with 2 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4235">peter-evans/create-pull-request#4235</a></li>
<li>build(deps-dev): bump prettier from 3.6.2 to 3.7.3 in the npm group
by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4240">peter-evans/create-pull-request#4240</a></li>
<li>fix: provider list pulls fallback for multi fork same owner 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/4245">peter-evans/create-pull-request#4245</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/obnyis"><code>@​obnyis</code></a> made
their first contribution in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4064">peter-evans/create-pull-request#4064</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/peter-evans/create-pull-request/compare/v7.0.9...v7.0.10">https://github.com/peter-evans/create-pull-request/compare/v7.0.9...v7.0.10</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/98357b18bf14b5342f975ff684046ec3b2a07725"><code>98357b1</code></a>
feat: v8 (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4260">#4260</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/41c0e4b7899a4a0922bf899d64c5f25738cfe356"><code>41c0e4b</code></a>
Update actions/checkout references to <a
href="https://github.com/v6"><code>@​v6</code></a> in docs (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4259">#4259</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/994332de4c8124517167807167073cf397678768"><code>994332d</code></a>
chore: Update checkout action version to v6 (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4258">#4258</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/22a9089034f40e5a961c8808d113e2c98fb63676"><code>22a9089</code></a>
fix: restrict remote prune to self-hosted runners (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4250">#4250</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/d4f3be6ce6f4083b7ac7490ab98b48a62db1ee41"><code>d4f3be6</code></a>
fix: provider list pulls fallback for multi fork same owner (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4245">#4245</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/bc8a47f5657f110049f4afd030c95529a9c62b76"><code>bc8a47f</code></a>
build(deps-dev): bump prettier from 3.6.2 to 3.7.3 in the npm group (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4240">#4240</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/a67ef28ca5df73d51a15007068e5931257943b0d"><code>a67ef28</code></a>
build(deps): bump the github-actions group with 2 updates (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4235">#4235</a>)</li>
<li>See full diff in <a
href="https://github.com/peter-evans/create-pull-request/compare/84ae59a2cdc2258d6fa0732dd66352dddae2a412...98357b18bf14b5342f975ff684046ec3b2a07725">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.9&new-version=8.0.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>
2025-12-10 08:19:04 +01:00
7b97a6d66e chore: update known checksums for 0.14.8 (#280)
chore: update known checksums for 0.14.8

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-12-05 06:33:42 +00:00
William WoodruffandGitHub 5960f93ec0 chore: use npm ci --ignore-scripts in CI and scripts (#276)
Replaces various uses of `npm install` with `npm ci --ignore-scripts`.
This should both be more hermetic (it'll always use the locked versions
rather than re-resolving) and will partially mitigate some build-time
code execution risk.

There should be no breakage risk, as the current dependency footprint is
small and shouldn't include anything that uses build scripts 🙂

Signed-off-by: William Woodruff <william@astral.sh>
2025-12-02 08:09:27 +01:00
1e133b7ccc chore: update known checksums for 0.14.7 (#275)
chore: update known checksums for 0.14.7

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-11-30 20:03:04 +00:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
cd51da8b6c Bump peter-evans/create-pull-request from 7.0.8 to 7.0.9 (#273)
Bumps
[peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request)
from 7.0.8 to 7.0.9.
<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.9</h2>
<p>⚙️ Fixes an <a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4228">incompatibility</a>
with the recently released <code>actions/checkout@v6</code>.</p>
<h2>What's Changed</h2>
<ul>
<li>~70 dependency updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a></li>
<li>docs: fix workaround description about <code>ready_for_review</code>
by <a href="https://github.com/ybiquitous"><code>@​ybiquitous</code></a>
in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/3939">peter-evans/create-pull-request#3939</a></li>
<li>Docs: <code>add-paths</code> default behavior by <a
href="https://github.com/joeflack4"><code>@​joeflack4</code></a> in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/3928">peter-evans/create-pull-request#3928</a></li>
<li>docs: update to create-github-app-token v2 by <a
href="https://github.com/Goooler"><code>@​Goooler</code></a> in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4063">peter-evans/create-pull-request#4063</a></li>
<li>Fix compatibility with actions/checkout@v6 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4230">peter-evans/create-pull-request#4230</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/joeflack4"><code>@​joeflack4</code></a>
made their first contribution in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/3928">peter-evans/create-pull-request#3928</a></li>
<li><a href="https://github.com/Goooler"><code>@​Goooler</code></a> made
their first contribution in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4063">peter-evans/create-pull-request#4063</a></li>
<li><a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> made
their first contribution in <a
href="https://redirect.github.com/peter-evans/create-pull-request/pull/4230">peter-evans/create-pull-request#4230</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/peter-evans/create-pull-request/compare/v7.0.8...v7.0.9">https://github.com/peter-evans/create-pull-request/compare/v7.0.8...v7.0.9</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/84ae59a2cdc2258d6fa0732dd66352dddae2a412"><code>84ae59a</code></a>
fix: compatibility with actions/checkout@v6 (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4230">#4230</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/b4733b9419fd47bbfa1807b15627e17cd70b5b22"><code>b4733b9</code></a>
build(deps-dev): bump js-yaml from 4.1.0 to 4.1.1 (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4222">#4222</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/0edc001d28a2959cd7a6b505629f1d82f0a6e67d"><code>0edc001</code></a>
build(deps-dev): bump the npm group with 2 updates (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4201">#4201</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/430aea0fb112656c3ac187e7a22b3604508ba3a7"><code>430aea0</code></a>
build(deps): bump the github-actions group with 3 updates (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4200">#4200</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/46cdba753c74545733b821043d64bd6925fc4da9"><code>46cdba7</code></a>
build(deps-dev): bump the npm group with 3 updates (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4185">#4185</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/b937339b17ca3e45ec14ebcafb879873b1ee8564"><code>b937339</code></a>
build(deps): bump the github-actions group with 2 updates (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4184">#4184</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/e9af275c3778a67411fcac2d613e8d4e9be452fd"><code>e9af275</code></a>
ci: update dependabot config</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/d3e081a03ae8d69301ed924bae10d70ea4af94d9"><code>d3e081a</code></a>
build(deps-dev): bump <code>@​types/node</code> from 18.19.127 to
18.19.128 (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4178">#4178</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/9ec683ee07f9121fdf529b923931dd78d977a5c9"><code>9ec683e</code></a>
build(deps-dev): bump <code>@​types/node</code> from 18.19.125 to
18.19.127 (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4165">#4165</a>)</li>
<li><a
href="https://github.com/peter-evans/create-pull-request/commit/65d8d10bf76513796c0f69457c2567b5da3b9626"><code>65d8d10</code></a>
build(deps-dev): bump ts-jest from 29.4.2 to 29.4.4 (<a
href="https://redirect.github.com/peter-evans/create-pull-request/issues/4163">#4163</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/peter-evans/create-pull-request/compare/271a8d0340265f705b14b6d32b9829c1cb33d45e...84ae59a2cdc2258d6fa0732dd66352dddae2a412">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.8&new-version=7.0.9)](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>
2025-11-24 09:02:11 +01:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
27c6fcea11 Bump eifinger/actionlint-action from 1.9.2 to 1.9.3 (#272)
Bumps
[eifinger/actionlint-action](https://github.com/eifinger/actionlint-action)
from 1.9.2 to 1.9.3.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/eifinger/actionlint-action/commit/213860089b7cf97d640aa67567898fabeb132746"><code>2138600</code></a>
set default actionlint version to 1.7.9 (<a
href="https://redirect.github.com/eifinger/actionlint-action/issues/29">#29</a>)</li>
<li><a
href="https://github.com/eifinger/actionlint-action/commit/9eac110dcad8d93d091a2c04fcd168439221ef2a"><code>9eac110</code></a>
build(deps): bump actions/checkout from 5.0.0 to 6.0.0 (<a
href="https://redirect.github.com/eifinger/actionlint-action/issues/28">#28</a>)</li>
<li>See full diff in <a
href="https://github.com/eifinger/actionlint-action/compare/03ff1f78c0670b71017616a37170f327df932030...213860089b7cf97d640aa67567898fabeb132746">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=eifinger/actionlint-action&package-manager=github_actions&previous-version=1.9.2&new-version=1.9.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>
2025-11-24 08:32:18 +01:00
b08f7b47e5 chore: update known checksums for 0.14.6 (#271)
chore: update known checksums for 0.14.6

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-11-22 07:51:24 +00:00
e7baf99fcc chore: update known checksums for 0.14.5 (#266)
chore: update known checksums for 0.14.5

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-11-13 22:27:21 +00:00
4f45dfa46b chore: update known checksums for 0.14.4 (#265)
chore: update known checksums for 0.14.4

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-11-07 06:40:57 +00:00
4ac3c5ec56 chore: update known checksums for 0.14.3 (#263)
chore: update known checksums for 0.14.3

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-10-31 07:28:46 +00:00
7f084f337e chore: update known checksums for 0.14.2 (#258)
chore: update known checksums for 0.14.2

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-10-24 06:41:15 +00:00
87990efc6b chore: update known checksums for 0.14.1 (#252)
chore: update known checksums for 0.14.1

Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com>
2025-10-17 08:09:05 +00:00
27 changed files with 5767 additions and 1069 deletions
+9 -3
View File
@@ -4,9 +4,15 @@
"owner": "ruff-format",
"pattern": [
{
"file": 2,
"message": 1,
"regexp": "^(Would reformat):\\s*(.+)$"
"code": 2,
"column": 5,
"endColumn": 7,
"endLine": 6,
"file": 3,
"line": 4,
"message": 8,
"regexp": "^(?:(error|warning|notice))\\s+title=([^,]+),file=([^,]+),line=(\\d+),col=(\\d+)(?:,endLine=(\\d+))?(?:,endColumn=(\\d+))?::(.+)$",
"severity": 1
}
]
}
+4 -4
View File
@@ -39,13 +39,13 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@3599b3baa15b485a2e49ef411a7a4bb2452e7f93 # v3.30.5
uses: github/codeql-action/init@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4.32.0
with:
languages: ${{ matrix.language }}
source-root: src
@@ -57,7 +57,7 @@ jobs:
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@3599b3baa15b485a2e49ef411a7a4bb2452e7f93 # v3.30.5
uses: github/codeql-action/autobuild@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4.32.0
# ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
@@ -71,4 +71,4 @@ jobs:
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@3599b3baa15b485a2e49ef411a7a4bb2452e7f93 # v3.30.5
uses: github/codeql-action/analyze@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v4.32.0
+1 -1
View File
@@ -17,6 +17,6 @@ jobs:
pull-requests: read
steps:
- name: 🚀 Run Release Drafter
uses: release-drafter/release-drafter@b1476f6e6eb133afa41ed8589daba6dc69b4d3f5 # v6.1.0
uses: release-drafter/release-drafter@6db134d15f3909ccc9eefd369f02bd1e9cffdf97 # v6.2.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+87 -22
View File
@@ -15,17 +15,21 @@ permissions: {}
jobs:
lint:
runs-on: ubuntu-latest
permissions:
security-events: write # for zizmor
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Actionlint
uses: eifinger/actionlint-action@03ff1f78c0670b71017616a37170f327df932030 # v1.9.2
- uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
uses: eifinger/actionlint-action@447fbfe7533062b7a9ea55f790f2396fba6d052a # v1.10.0
- name: Run zizmor
uses: zizmorcore/zizmor-action@135698455da5c3b3e55f73f4419e481ab68cdd95 # v0.4.1
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version: "20"
- run: |
npm install
npm ci --ignore-scripts
- run: |
npm run all
- name: Check all jobs are in all-tests-passed.needs
@@ -42,7 +46,7 @@ jobs:
matrix:
os: [ubuntu-latest, macos-latest, macos-14, windows-latest]
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Use latest version
@@ -57,7 +61,7 @@ jobs:
ruff-version: ["0.1.7", "0.1.8", "0.4.7", "0.4.10", "0.7", "0.7.x", ">=0.7.0"]
os: [ ubuntu-latest, ubuntu-24.04-arm, macos-latest, macos-14, windows-latest ]
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Use version ${{ matrix.ruff-version }}
@@ -68,7 +72,7 @@ jobs:
test-unsupported-version:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Try install old version
@@ -88,7 +92,7 @@ jobs:
test-version-from-version-file-pyproject:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Use version from pyproject.toml
@@ -107,7 +111,7 @@ jobs:
test-default-version-from-pyproject:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Use default version from pyproject.toml
@@ -125,7 +129,7 @@ jobs:
test-default-version-from-pyproject-dev-group:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Use default version from pyproject.toml dev group
@@ -144,7 +148,7 @@ jobs:
test-default-version-from-pyproject-dependency-groups:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Use default version from pyproject.toml dependency groups
@@ -160,10 +164,30 @@ jobs:
fi
env:
RUFF_VERSION: ${{ steps.ruff-action.outputs.ruff-version }}
test-default-version-from-pyproject-dependency-groups-with-env-marker:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Use default version from pyproject.toml with environment marker
id: ruff-action
uses: ./
with:
src: __tests__/fixtures/python-project
version-file: __tests__/fixtures/pyproject-dependency-groups-with-env-marker/pyproject.toml
- name: Correct version gets installed
run: |
if [ "$RUFF_VERSION" != "0.13.3" ]; then
echo "Expected version 0.13.3 but got $RUFF_VERSION"
exit 1
fi
env:
RUFF_VERSION: ${{ steps.ruff-action.outputs.ruff-version }}
test-default-version-from-pyproject-poetry-groups:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Use default version from pyproject.toml poetry group dependencies
@@ -182,7 +206,7 @@ jobs:
test-default-version-from-pyproject-poetry:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Use default version from pyproject.toml poetry dependencies
@@ -201,7 +225,7 @@ jobs:
test-default-version-from-pyproject-optional-dependencies:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Use default version from pyproject.toml optional dependencies
@@ -220,7 +244,7 @@ jobs:
test-default-version-from-requirements:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Use default version from requirements.txt
@@ -236,10 +260,29 @@ jobs:
fi
env:
RUFF_VERSION: ${{ steps.ruff-action.outputs.ruff-version }}
test-default-version-from-requirements-with-hash:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Use default version from requirements-with-hash.txt
id: ruff-action
uses: ./
with:
src: __tests__/fixtures/python-project
version-file: __tests__/fixtures/requirements-with-hash.txt
- name: Correct version gets installed
run: |
if [ "$RUFF_VERSION" != "0.9.0" ]; then
exit 1
fi
env:
RUFF_VERSION: ${{ steps.ruff-action.outputs.ruff-version }}
test-semver-range:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Use version 0.7
@@ -258,7 +301,7 @@ jobs:
test-pep440-version-specifier:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Install version 0.9.10
@@ -284,7 +327,7 @@ jobs:
- os: macos-latest
checksum: "af9583bff12afbca5d5670334e0187dd60c4d91bc71317d1b2dde70cb1200ba9"
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Checksum matches expected
@@ -296,7 +339,7 @@ jobs:
test-with-explicit-token:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Use default version
@@ -310,7 +353,7 @@ jobs:
matrix:
os: [ubuntu-latest, windows-latest]
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Use args
@@ -321,7 +364,7 @@ jobs:
test-failure:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Format should fail
@@ -357,7 +400,7 @@ jobs:
matrix:
os: [ ubuntu-latest, windows-latest ]
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Use args
@@ -367,6 +410,25 @@ jobs:
src: >-
__tests__/fixtures/python-project/src/python_project/__init__.py
__tests__/fixtures/python-project/src/python_project/hello_world.py
test-parent-directory-pyproject:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Use version from parent directory pyproject.toml
id: ruff-action
uses: ./
with:
src: __tests__/fixtures/parent-config-project/subproject
- name: Correct version gets installed
run: |
if [ "$RUFF_VERSION" != "0.10.0" ]; then
echo "Expected version 0.10.0 but got $RUFF_VERSION"
exit 1
fi
env:
RUFF_VERSION: ${{ steps.ruff-action.outputs.ruff-version }}
all-tests-passed:
runs-on: ubuntu-latest
@@ -379,10 +441,12 @@ jobs:
- test-default-version-from-pyproject
- test-default-version-from-pyproject-dev-group
- test-default-version-from-pyproject-dependency-groups
- test-default-version-from-pyproject-dependency-groups-with-env-marker
- test-default-version-from-pyproject-poetry-groups
- test-default-version-from-pyproject-poetry
- test-default-version-from-pyproject-optional-dependencies
- test-default-version-from-requirements
- test-default-version-from-requirements-with-hash
- test-semver-range
- test-pep440-version-specifier
- test-checksum
@@ -390,6 +454,7 @@ jobs:
- test-args
- test-failure
- test-multiple-src
- test-parent-directory-pyproject
if: always()
steps:
- name: All tests passed
+4 -4
View File
@@ -11,10 +11,10 @@ jobs:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
- uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
with:
node-version: "20"
- name: Update known checksums
@@ -22,9 +22,9 @@ jobs:
run:
node dist/update-known-checksums/index.js
src/download/checksum/known-checksums.ts ${{ secrets.GITHUB_TOKEN }}
- run: npm install && npm run all
- run: npm ci --ignore-scripts && npm run all
- name: Create Pull Request
uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e # v7.0.8
uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8.1.0
with:
commit-message: "chore: update known checksums"
title:
@@ -16,9 +16,9 @@ jobs:
permissions:
contents: write
steps:
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
persist-credentials: true
- name: Update Major Minor Tags
run: |
set -x
-9
View File
@@ -186,15 +186,6 @@ are not sufficient, you can provide a custom GitHub token with the necessary per
github-token: ${{ secrets.CUSTOM_GITHUB_TOKEN }}
```
## Reliability
This action includes built-in retry mechanisms to handle intermittent network issues that can occur when downloading Ruff or fetching version information from GitHub's API. The action will automatically retry failed operations up to 3 times with exponential backoff, which significantly reduces failure rates due to temporary connectivity issues.
- **GitHub API calls**: 30-second timeout with 3 retries
- **Binary downloads**: 60-second timeout with 3 retries
- **Smart error detection**: Automatically identifies retryable errors (timeouts, network issues, 5xx HTTP responses)
- **Detailed logging**: Provides comprehensive error information for debugging
## Outputs
| Output | Description |
@@ -0,0 +1,13 @@
[project]
name = "parent-config-project"
version = "0.1.0"
description = "Test fixture for parent directory pyproject.toml search"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
"ruff==0.10.0",
]
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
@@ -0,0 +1,3 @@
"""Hello world example."""
print("Hello, world!")
@@ -0,0 +1,15 @@
[project]
name = "pyproject-dependency-groups-with-env-marker"
version = "0.1.0"
description = "Test fixture for issue #256 - environment markers"
readme = "README.md"
requires-python = ">=3.12"
[dependency-groups]
dev = [
"ruff~=0.13 ; python_version >= '3.11'",
]
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
@@ -0,0 +1,2 @@
ruff==0.9.0 \
--hash=sha256:badc0de
+2 -1
View File
@@ -1,5 +1,5 @@
{
"$schema": "https://biomejs.dev/schemas/2.1.4/schema.json",
"$schema": "https://biomejs.dev/schemas/2.3.2/schema.json",
"assist": {
"actions": {
"source": {
@@ -13,6 +13,7 @@
"ignoreUnknown": false,
"includes": [
"**",
"!**/coverage",
"!**/dist",
"!**/lib",
"!**/node_modules",
Generated Vendored
+438 -303
View File
@@ -29071,6 +29071,240 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.KNOWN_CHECKSUMS = void 0;
// AUTOGENERATED_DO_NOT_EDIT
exports.KNOWN_CHECKSUMS = {
"aarch64-apple-darwin-0.14.14": "76a9b0ebe57d0eee56940dbe0b62462578d1369cca8314ed0d2a6f2102292d4f",
"aarch64-pc-windows-msvc-0.14.14": "449982699657bd68d170440dad958281b030bc05865fe012d043cd225e78eb79",
"aarch64-unknown-linux-gnu-0.14.14": "1eee1ce3467fb5f348738bb5e4598859b55816a79c3cd6a26ca0dae03d7e2672",
"aarch64-unknown-linux-musl-0.14.14": "a4d7302aa201a6f8e71dfa217cd8273fddd4e434a93ee3b4b07047fd7a684ac1",
"arm-unknown-linux-musleabihf-0.14.14": "c225db82587780d1675e220db02c5209f406b29afb0a525628e11ffaca537068",
"armv7-unknown-linux-gnueabihf-0.14.14": "cdc9596d6317e6cb32fbf3fd6c0e5817f96676b215957e6583db28abf4a15427",
"armv7-unknown-linux-musleabihf-0.14.14": "0f1938426c50500bac09a09df5396aa19d6ce9f01a3a18a531dfaee5cc0d93e8",
"i686-pc-windows-msvc-0.14.14": "4f6af9d82acae3d1308c55b0fa51b84d57eafc380aedf97a53a32314118c9a71",
"i686-unknown-linux-gnu-0.14.14": "5ceb5e2f1906d85e444cb71503379e14d96ded423bd68906f1a539b78d9fc2c3",
"i686-unknown-linux-musl-0.14.14": "878cebcaf3481295d22a1274cea94ec050455917669ccecac586dcfe6b4a557e",
"powerpc64-unknown-linux-gnu-0.14.14": "e01a6db6bbf15db82052269887fb49e6be79923d188f1f60ed74f93b6b9a90d4",
"powerpc64le-unknown-linux-gnu-0.14.14": "6048f270a46cce01228a53fde14fa6182a99d9e99169d7c252f706d7ba2a4845",
"riscv64gc-unknown-linux-gnu-0.14.14": "6eca650195a22c0a568adc923b645b6317dad3ecc8a3d5c02c08768d6b333393",
"s390x-unknown-linux-gnu-0.14.14": "dbde3ba91f84d8c183ed49bca0790777285d21381ad64a290584bd19038b83a4",
"x86_64-apple-darwin-0.14.14": "749396c675c6f07205be6c4ef89e2e95123d790062d681059a355030e9d7d119",
"x86_64-pc-windows-msvc-0.14.14": "81bfeed34f15296e6c81ecea912b6fff4430b957de8a1181ce9365434e3d6744",
"x86_64-unknown-linux-gnu-0.14.14": "9876634f799d933bdaa1de864f47d26f898b2e20aa8f4f85d63235c3a231068d",
"x86_64-unknown-linux-musl-0.14.14": "55a1ee65f5ac9416cc40f99c2df62f0d4525d40369fe371caff945c495174d57",
"aarch64-apple-darwin-0.14.13": "067d1a90da8add55614eff91990425883a092d8279d9e503258ff8be0f8e9c18",
"aarch64-pc-windows-msvc-0.14.13": "f7b5b9740ae893ac6abe9b9f68865073ffb9146a6f352ba9718d53b102ad02ef",
"aarch64-unknown-linux-gnu-0.14.13": "84ce8fe1ef9b2eba018ba396fd018ac2bc22865a9e2a02573899ea6ee8e1e5fd",
"aarch64-unknown-linux-musl-0.14.13": "25941b777ff712f4d9473d26c1b875034214a3d5de20ea99b2add939dcd0b367",
"arm-unknown-linux-musleabihf-0.14.13": "3d833d451accb334f9cb91141083bbee5b835dcf0b49d14e5ccb13e0b6a7c387",
"armv7-unknown-linux-gnueabihf-0.14.13": "90aa92a6de0f63eacb2d380c324039c101c6097956690fbaec05ed8d922f8766",
"armv7-unknown-linux-musleabihf-0.14.13": "192deb53946b4309c56c1ad7c401ddac7557d0a517da7addfc636f1188bab30d",
"i686-pc-windows-msvc-0.14.13": "4ead4d5fc89a1f02aa97dad944e69306ae4177a689a3818d3575fed11aa994fe",
"i686-unknown-linux-gnu-0.14.13": "a321fc4862748563a663472a4458fe514e34542d0fe8d767d67b1463d585fb2f",
"i686-unknown-linux-musl-0.14.13": "597541ac81d553c2fe97339680bfdb3e926714763ee37f0b5dbcc572d695e376",
"powerpc64-unknown-linux-gnu-0.14.13": "cad4c05db54969608ec292b695397ddaef7452f759b976a60b69d9fefc6c5724",
"powerpc64le-unknown-linux-gnu-0.14.13": "bc7faa37e496ae0198ee7e1c9e8958df3c55025ccf8be175b74533f87626e726",
"riscv64gc-unknown-linux-gnu-0.14.13": "d9c6fd360347b9b0079994246ed08186f64629529e2fd2dc1a97a31da2a214d5",
"s390x-unknown-linux-gnu-0.14.13": "1995227a65970cb2c1aa3b03c9a5418ee1fa56210c4577e6f8e1a14d1e79ed5d",
"x86_64-apple-darwin-0.14.13": "69e424a42ac3a7c6c7032ad96deb757c35c93c848b6ea329a3f4c605e6d89ef9",
"x86_64-pc-windows-msvc-0.14.13": "d2af4376053458f283d74980b49dc0d61d3ef9d9b8684c5b25bd64b73e11634a",
"x86_64-unknown-linux-gnu-0.14.13": "b1e03e4cf245411f184106ba3d973b3902021bf5327e2fde0cfad163aacdc2c1",
"x86_64-unknown-linux-musl-0.14.13": "2fe394f493318551f271277a2228e56b31ca69a4842483e5709af4548f342bc3",
"aarch64-apple-darwin-0.14.11": "c3fab6bcad9cc2f8a342829dd4ea011c54b9671d023b71baac1cbf2b3526cefd",
"aarch64-pc-windows-msvc-0.14.11": "43faade7e8f33a8ffab726aa44ee2b6bc1fd9d51407320db797dcb3dac068461",
"aarch64-unknown-linux-gnu-0.14.11": "e5c018ac042ddeb9c02c3d96b6efe3a0dcd3406ba9bd695253d6111785f7abf6",
"aarch64-unknown-linux-musl-0.14.11": "4779a99b51812b56d56d180174be46ddb2fed98fecaea7565b450d37cff1b8c6",
"arm-unknown-linux-musleabihf-0.14.11": "a400347f59192992b61dc0bb9dfdfe640f8063403112d9e3a70f6275d34ae386",
"armv7-unknown-linux-gnueabihf-0.14.11": "7938729417dcd33b7078ae0a77440cc152bba33518bb095e19cb108c132b2602",
"armv7-unknown-linux-musleabihf-0.14.11": "57da6726050047ff2989554734deb94eb053789fc92c297a1a722a6723106a77",
"i686-pc-windows-msvc-0.14.11": "51bec5b8cdc4008fb76e11eba4cbb62b8617ff242d316465fa2247dabfd2dcb9",
"i686-unknown-linux-gnu-0.14.11": "9051f2529d36e38b58b03b6e605d77f62b6378d5afe70eba692f9a214794b273",
"i686-unknown-linux-musl-0.14.11": "3f94ba805fd14bd8c088b710c950cd89d9968294fa3cff68a618e50ad9dea73d",
"powerpc64-unknown-linux-gnu-0.14.11": "eb69c9da0285717f39ed25f666a0860d7d6a50359a1de0bf76fba6f83d59e1ea",
"powerpc64le-unknown-linux-gnu-0.14.11": "001b43b7558d32f320fa775c74af0035952a724d323bb5204b6f83017297c6db",
"riscv64gc-unknown-linux-gnu-0.14.11": "8901e1a36846c59a94ef468808e4a1af58f74e9c2830f40e045f5f9e70d6867c",
"s390x-unknown-linux-gnu-0.14.11": "d29ba2740b7735ab20663225dd420acfb0797b29358d902afc7b87ee0f1f4b08",
"x86_64-apple-darwin-0.14.11": "b301d1c04facba1004d180c8fd9ae36d868b780900682c97ecf324015c75f0b3",
"x86_64-pc-windows-msvc-0.14.11": "e254f04e054e095215b8f74d5cdb7288f2d3f226bdc42b35cd44751fc7a55b2d",
"x86_64-unknown-linux-gnu-0.14.11": "b98f19bb2cc99e0ea4de1625fbc43661902a1db45ff49a72e7f4a58cfedaabfb",
"x86_64-unknown-linux-musl-0.14.11": "8e8b7a3f791e0faf3a1728d808133f6f9bd5c1422eccb9956e7e7376ff5404b8",
"aarch64-apple-darwin-0.14.10": "dd0f3ec914604d802658ae0d271ff9d767c117d1702a44222170dd2ffbad8d2c",
"aarch64-pc-windows-msvc-0.14.10": "a5b5bb9525a47dfff0ce8ad31546549b31dc1184f54027517838b1bbc9d81129",
"aarch64-unknown-linux-gnu-0.14.10": "f6c8735bf175d449d79151f6bfe84251770ca6032e86bea0d327bc3789179027",
"aarch64-unknown-linux-musl-0.14.10": "0888883f71199ca3af3569052d0cc1aee8b316390ffe75bc19f9a8047ffd0158",
"arm-unknown-linux-musleabihf-0.14.10": "5102cff6cbed54953d6cd9c9d920a9dd6fbe283e047136a6e9bc732ae14a5cf3",
"armv7-unknown-linux-gnueabihf-0.14.10": "94a3ad56d89c39ed47d4e864a18ea31baf989384840d5e182c3f94d5f35a4c93",
"armv7-unknown-linux-musleabihf-0.14.10": "2a051d384d5d5fa84521f843424454620ff5d22580f90cd882512373c36933b0",
"i686-pc-windows-msvc-0.14.10": "29e7519db7afed48e3729d16289a467acae7c6c34113d50bdd1e7e1077e1c7b5",
"i686-unknown-linux-gnu-0.14.10": "56f98f880933907b809de3180e866e72342971024445144c409a6d0a46237c1a",
"i686-unknown-linux-musl-0.14.10": "0cce7104a85d2891a9f62d9ee2decb942b91888d6156e4e858c1cb350a71a57c",
"powerpc64-unknown-linux-gnu-0.14.10": "7685d9de6c1b139fd767f70310598a79d5b6c613d744a366b2fe99e420d19c32",
"powerpc64le-unknown-linux-gnu-0.14.10": "620476793ed106c1f6bfa15e3b0d7834a55cad048a853d63f0c118b9fb7c7337",
"riscv64gc-unknown-linux-gnu-0.14.10": "922872274af2b681381b46a242e77fa9bf427fa745313e818b89a6246be81d77",
"s390x-unknown-linux-gnu-0.14.10": "da9cf8172369821dfaabfc8861238f565fdbcec1aebe897d900020ce561572de",
"x86_64-apple-darwin-0.14.10": "7d5af84e84a189b49ac235d7970d35588cbed0d087f4237c96e5ac3c392bc6fb",
"x86_64-pc-windows-msvc-0.14.10": "9c3340d322fff7a6dc132b8783ba734f5eaf4c46f7dd8bc828abdf850b3bebe1",
"x86_64-unknown-linux-gnu-0.14.10": "4695e6375b1fa2b9c5f839218d695d8e701cfccb15d3f622b6a6feedb086bffb",
"x86_64-unknown-linux-musl-0.14.10": "e1fac6f2705057f48f3d000694d0f41c95b06e738cf4825315c670f3b9d24933",
"aarch64-apple-darwin-0.14.9": "ea132e6d6af23dbcf21c81d7fd8c5a94ccf16b1fb36a8bc60da971e339301f10",
"aarch64-pc-windows-msvc-0.14.9": "dcc2c8a687b9682ab345418ba2793bc8594ae1f2bdb78af520b363e17cf2e271",
"aarch64-unknown-linux-gnu-0.14.9": "423a07140aca7d007d63a42ff9322c0c2017dfe0ed23efe8bcbc36ed21d1cfd7",
"aarch64-unknown-linux-musl-0.14.9": "9bdedf2e8d6398e193c2b2feccb2b4c9f8d37a6dc87cc0b587340a60e87d14e2",
"arm-unknown-linux-musleabihf-0.14.9": "5d04fe5dac3a625c576f48d441238896d164128ec5ba64c9964e5d9502e92b1e",
"armv7-unknown-linux-gnueabihf-0.14.9": "1404c9aace1216ad5cf8b977be5b967ab507f7245eec7bc9bb3fab80010a7769",
"armv7-unknown-linux-musleabihf-0.14.9": "e90707e761fb9ce528c3728e5e12ddbadd60ad45dbacfb1ab9dff4b308f10ae3",
"i686-pc-windows-msvc-0.14.9": "a7e19280ec509dbefdffd097e29f0ca411cca7196a7272198d022d22d5fad6c3",
"i686-unknown-linux-gnu-0.14.9": "33494807d987983f1a91e486cc6a028364aa3291c96c3784620f75a3f477411a",
"i686-unknown-linux-musl-0.14.9": "816e6fdefd899f2dcca7261dc6575ecac82907b94238569cbfef2b1639680865",
"powerpc64-unknown-linux-gnu-0.14.9": "6786baf11e8b59c29d19c0da127451606837243472797aa5084eecccd9a74445",
"powerpc64le-unknown-linux-gnu-0.14.9": "ba7219c9dce6f2d931d9851ac9623923b3fc5dafeb08c640885c7e33a6074775",
"riscv64gc-unknown-linux-gnu-0.14.9": "8f46292b808c5ce0d72d1a4428e189a641d9f41b3af0b077537ddb7631f48b8d",
"s390x-unknown-linux-gnu-0.14.9": "d795afb56c7f4ba55a7a08eda03bce1fd8b32d71c9cf1741218ac6b5578d8b84",
"x86_64-apple-darwin-0.14.9": "ce980eb4b44a84cbf278686f8cf71a21b353888b29472ca269ffe385ce4f2351",
"x86_64-pc-windows-msvc-0.14.9": "98727a845f01782b78efe1a3f0913aa9ec76c9a24e09aca89e26b3b684ca86a0",
"x86_64-unknown-linux-gnu-0.14.9": "b012ebe5dee8d8c125f4d553fccda058249fbb1c914c17175c6edda14a1fb7da",
"x86_64-unknown-linux-musl-0.14.9": "3bdbdb32f95bcf2c5bc45502a2050f30706f1c205fa0087ee3d4c688f67854fc",
"aarch64-apple-darwin-0.14.8": "4efc019832a6b9225f650ee256d31b2e875021cae662963d533c78b5cf865f52",
"aarch64-pc-windows-msvc-0.14.8": "965217e69f6d43e4df25abeec7b51a5ea014dbec219b9b2866ca37dcd312405e",
"aarch64-unknown-linux-gnu-0.14.8": "9bbce62639bb30abf76202f2ec32c4234498de3c93c21b4c32c99d51c802cc41",
"aarch64-unknown-linux-musl-0.14.8": "0b3464f54fa56f514c29e92bcf05867b914ad6c246e2ddbe4cce5c0700f2a3d9",
"arm-unknown-linux-musleabihf-0.14.8": "5496ae4d581e7f6cdf509f56d33830056d1f8a432aa489bf9e40fc9754fbf1fa",
"armv7-unknown-linux-gnueabihf-0.14.8": "203de1734ffddac18f02e3756ba0c02bd1770665031aba617ccf488ccfe78b25",
"armv7-unknown-linux-musleabihf-0.14.8": "5e424ba3ebc90306f73e05914244245b66b27c3a44dcdf9029d97bfc56131491",
"i686-pc-windows-msvc-0.14.8": "2bdff511119eb9d94e5a240c15bef668c43b0640e61c549b32242d7b04efd062",
"i686-unknown-linux-gnu-0.14.8": "8f0c15e9518d1b9c0423986d3d1045ed5c4005e1037589a6772eee724ec3ba02",
"i686-unknown-linux-musl-0.14.8": "55326d64201ff99dc96e93b23de951c2656825089ee581fc8aee099140d4d310",
"powerpc64-unknown-linux-gnu-0.14.8": "52ffb3434ca8ada1d2703df0c4b929758444c24d9a47a8608a0775ddf6dbfa6c",
"powerpc64le-unknown-linux-gnu-0.14.8": "3a8808f7b02f37e649e1cc1145ad3d2e4d23b4154637525480c7f6536f4152b9",
"riscv64gc-unknown-linux-gnu-0.14.8": "8e6f1f660c1145bfe1b13fe41b7e6f4e829be3351bd536acbd41f91478d8932c",
"s390x-unknown-linux-gnu-0.14.8": "f3ed19ba06face77e21c682846a4e5b3d4d9bfe5132eea86e30a84522b70d2b3",
"x86_64-apple-darwin-0.14.8": "c53af0ba3cbc5e9e8f7768d28a7ff2d0795843e39302891093227bc6df343e94",
"x86_64-pc-windows-msvc-0.14.8": "a837e98f5e6a21222a896f60521f563aea2c686a07cad17da9f5b5f2c4e04f8a",
"x86_64-unknown-linux-gnu-0.14.8": "dce933cd68e3ca69c64c277ce6671dcdee7adeeaa6ac5a15047a4c973b30741f",
"x86_64-unknown-linux-musl-0.14.8": "0f5496a3d2413b3cb85bbf9e4a6f95b5db127ac10989ecb3d8c0c0a0a74a892b",
"aarch64-apple-darwin-0.14.7": "24631da81fe9ce5f4112e8caeb71957e81682e752a563f0a50715735f923e3c4",
"aarch64-pc-windows-msvc-0.14.7": "24ca141d57fcd5bd303ca51af002cb9a815f072d9076b40ec2813835d46c4a82",
"aarch64-unknown-linux-gnu-0.14.7": "8cc84635155dfc11acca297af25ed6c8a30e36146729a90df9e7d348a8fc0a4d",
"aarch64-unknown-linux-musl-0.14.7": "8d429dbc2c308377c33874dc71d4c2388728f0d01c0a5869d2c878d21a6ced87",
"arm-unknown-linux-musleabihf-0.14.7": "3cf1d9fdfd58a113b0b629e0ef2d247bbadbc8deec25724d6dc7d6f6ca7e7304",
"armv7-unknown-linux-gnueabihf-0.14.7": "058f52b31c88056291b0e917ea909eea036570dcdee32af1ce62eacff98c4e2a",
"armv7-unknown-linux-musleabihf-0.14.7": "9dddf78485ba0b5da8d8a73b24332ecf759a4de95ca5700c5141067683b5b615",
"i686-pc-windows-msvc-0.14.7": "46d16810e1a0e7efd5c25efc60b719225c3a8b8a7fb662b61f293eeb62ccafdb",
"i686-unknown-linux-gnu-0.14.7": "29242e501fea264ef4cb03164d9c375e426fad5c298412f64a4d50bc9ea19bc1",
"i686-unknown-linux-musl-0.14.7": "5b1eeea3f27745e7e68b19bd214267aa653ef64c62c25ef4cd8bb57af8477171",
"powerpc64-unknown-linux-gnu-0.14.7": "3cc47bf9943a46839d847746ccae59a3147982c5bf93bdc786fa5279d7d28681",
"powerpc64le-unknown-linux-gnu-0.14.7": "1dabc7d0251f6f11ade20620538daeed1c4d27223576a04ddb2a87adfed2ca11",
"riscv64gc-unknown-linux-gnu-0.14.7": "075232dfa5a03ef399d183879848cdb5d71485639c2a07fc62a27f4d4a68af3d",
"s390x-unknown-linux-gnu-0.14.7": "a83cb05567dd4bb59fa8fd36b8337b21d475dd6f82fe0600a2364f1de6c295c3",
"x86_64-apple-darwin-0.14.7": "c3035811c5354d923f3d7fd6320cfb23de30600f1eb86aa1518bac27c3d7fffd",
"x86_64-pc-windows-msvc-0.14.7": "9a54b82e12574ea068e0914cdb1398993cbf78338c0799b6f9003a783fec779b",
"x86_64-unknown-linux-gnu-0.14.7": "8a545d346b3f6f979574df96b4fb2a983f2568fe200f1c1f690bd2cbdce5ea51",
"x86_64-unknown-linux-musl-0.14.7": "0f6cd59aa2b266758f1083c73f1b8303e3aedde0d953f0e79777faf174d8104f",
"aarch64-apple-darwin-0.14.6": "b2ace677f51d0f2b91ca27d312ac8b069658502049015f4891c16f8864136282",
"aarch64-pc-windows-msvc-0.14.6": "90518b6d16fe8b705c891dcdd77b20ab41da5e042b085aced7bbc647f6f2fdcd",
"aarch64-unknown-linux-gnu-0.14.6": "bf3d592d5f879f072520afaa9c4a76a3ad0f6cf4b7bf7e27fb5d0e728e863f14",
"aarch64-unknown-linux-musl-0.14.6": "4d3c113e59c5fbc31f1def566cebf28732bb45ff6b83df8e142bc1c055b3afa3",
"arm-unknown-linux-musleabihf-0.14.6": "d0a3ed0a773f8e7edc44d63644b952d446dba771fdbb3eefd02853c323373f90",
"armv7-unknown-linux-gnueabihf-0.14.6": "d6b71f6a951963f8dd0f2e099206b0aabf95d9bb49451a607da3e5823b800596",
"armv7-unknown-linux-musleabihf-0.14.6": "a048f1e9a97afe8ac2a63785f5733d5736b9d6e6767b4d5b6434916d38f888e1",
"i686-pc-windows-msvc-0.14.6": "c7b76311939f0ed7fbf4fe1be7c6c96c05b26a73e500650dff2586cbbe5c0b45",
"i686-unknown-linux-gnu-0.14.6": "fe3fbd9227a7f2c1277306c31cf7627ab1dc61c25fa30854d66d8db138a74872",
"i686-unknown-linux-musl-0.14.6": "5a184f4c1e6a665f56f980464dd87eeb75f32e37bf67d195efdaa41bba634a5d",
"powerpc64-unknown-linux-gnu-0.14.6": "fe54fda27408241e9bee7bc5c9740a9a47a87a073ecd3d9bb166c32329c33958",
"powerpc64le-unknown-linux-gnu-0.14.6": "d4296a0f41ed25cbf56a04b04bda7f3661b8be9d3220b89cc342e6cb4e6ee259",
"riscv64gc-unknown-linux-gnu-0.14.6": "e06b714ebb8846421ed6b998beac66a7fd1fad09f7bee89e4e6b671c6e8c3fc3",
"s390x-unknown-linux-gnu-0.14.6": "2ba3e5b6e66d9ba60d6fac9b699f77dd79402c872fc244259db7fc7815180b3d",
"x86_64-apple-darwin-0.14.6": "efe45a6defcf4f1b6de87d56ce94635f53b00f88ddc2fcb8e25e2c4e3a61261c",
"x86_64-pc-windows-msvc-0.14.6": "3a8bb3499484c7f9e86060c89d0e61c47dac7f9fb4d7fe46bc59dca400b322c9",
"x86_64-unknown-linux-gnu-0.14.6": "b0ee141ada4749c7ee16ba21465b4ef035455b495aa3ab951bbcb9bde9f4d001",
"x86_64-unknown-linux-musl-0.14.6": "7ef1743875c7c469cc1c4bb6da6a9bbff3f3a7b89a75632d6cd2944ede470a5e",
"aarch64-apple-darwin-0.14.5": "c07616663ac63792c16269d6798a47fb1f45b29997706178d60e90da698a9970",
"aarch64-pc-windows-msvc-0.14.5": "c09ff1cdaafd6cc3733586dc517bfd3e0d0ddc39360c90343ab7b610c8ade130",
"aarch64-unknown-linux-gnu-0.14.5": "da5692a609e728dd1773aebf087113c5c3561aafdfa9fe574b30de9438c60a23",
"aarch64-unknown-linux-musl-0.14.5": "ebef9d7119119e67b1065a5a35128148898e1581037e7d68c3aa9223983af0a4",
"arm-unknown-linux-musleabihf-0.14.5": "00c937e44474d21878bdb2e9e214d74005fddc8c43a4c76d8e71a9085c7cc6af",
"armv7-unknown-linux-gnueabihf-0.14.5": "aa54fcaba5d7029180139491213f504e5789b36e0017c0a67aff7b6ec0c04c45",
"armv7-unknown-linux-musleabihf-0.14.5": "5e06c211d5dc4e85eeafd29e87af4aed690a41b02f9296537d4d4ebe62fded9a",
"i686-pc-windows-msvc-0.14.5": "6b54cf61dad3276995d157d000f501917f1aa54735391150bf93282329253c92",
"i686-unknown-linux-gnu-0.14.5": "81aadc05c630e7e7c4ca68c510f5ce462e0645fa03650ca3f844cb4d9b2efc27",
"i686-unknown-linux-musl-0.14.5": "556c63188c8bc7e253a4eaef8727857a808a81af6fef02f76f27a71e800554a0",
"powerpc64-unknown-linux-gnu-0.14.5": "df85081b5e776d934188f9eb67a1d2d17dba1e986f7e76668ffeed6e541858d1",
"powerpc64le-unknown-linux-gnu-0.14.5": "4a02aa69a73bc5d9e579b08f5081e0fec412e353bacafa6b4a0705d89b3486e6",
"riscv64gc-unknown-linux-gnu-0.14.5": "a1a20ddca6e776a8f38d533da4aa1eeb543ecbfa08813c482e3cb7d5ef0c39fc",
"s390x-unknown-linux-gnu-0.14.5": "242bf290de417e8c9e8ca5c844be933e611cca3f3b301dc8537f72d051ceb3b9",
"x86_64-apple-darwin-0.14.5": "d7285770c5098be00c9b4ff099d6ef7f8b2a54b4019c9507b628ee9f0d404c06",
"x86_64-pc-windows-msvc-0.14.5": "9b998bf1a790a18b829fab3368ee7404a8f1f2cec2acb650aa1fd1b74962d023",
"x86_64-unknown-linux-gnu-0.14.5": "5bc52346f81098e42beecd622f49c4336a5361eb38b7b51d466b0a9647e99e33",
"x86_64-unknown-linux-musl-0.14.5": "69ddecf374a4f53eeda238399614ed6f92c5e75fe04436c604fb78435d5658eb",
"aarch64-apple-darwin-0.14.4": "ab26cd2b03d5b2ec42dc7ac1886a29055eb2003aa2db14b26c7091c7cd6b4c68",
"aarch64-pc-windows-msvc-0.14.4": "270773b34836e5b546d3ec9fe3b6cab4057881eff69828566f230baffff7634a",
"aarch64-unknown-linux-gnu-0.14.4": "8bf03ef4bb8ce42321ea0e59a505739b29b18d85b1d4f220736e242248b7da31",
"aarch64-unknown-linux-musl-0.14.4": "c77b72e565e9044eddce02e71f9214edea045047b786bb2bc973a6d8f94fb13e",
"arm-unknown-linux-musleabihf-0.14.4": "5211b338bf1c48faa2fc045bd68c56b50e1e3d898f2255c39a3a7040033738f1",
"armv7-unknown-linux-gnueabihf-0.14.4": "62e05c9a4571ea1aca80db377b4a11dd2325100db9ca0d7db16b61b87cb3d0b5",
"armv7-unknown-linux-musleabihf-0.14.4": "b20725ed5be925b58120172b2395bdbea9857bc562c3a7a7e47a4d9281bafb7f",
"i686-pc-windows-msvc-0.14.4": "bbe517649a5c6134b424b3065db7b5dcfaed72c2f5e848ec87cb2b33be7a133f",
"i686-unknown-linux-gnu-0.14.4": "a68939e63f7b384351172ff1535d37e73ecf81a94b0c89f369f3f41aabcccede",
"i686-unknown-linux-musl-0.14.4": "ff05a300bbb06211ec9cc43daec05da197ed116b5f6a5ea9ac8fc80fc00df39f",
"powerpc64-unknown-linux-gnu-0.14.4": "394eae2ad3485eb3530db3e9b51feacbf0b03e63ec8e93f2134a137c59da4abe",
"powerpc64le-unknown-linux-gnu-0.14.4": "b12b41763fa3c1068d2378669fa2740b11e0dd3dea3f667f732241a25fb06c9f",
"riscv64gc-unknown-linux-gnu-0.14.4": "c6385274d7a3b1d0c7ed05b36101faf2c7206e8adc0c7c107d32fc8e5d57628c",
"s390x-unknown-linux-gnu-0.14.4": "dcbf1dce38298dccfea7edffb1ea237ab2ccf2ea5dbae6d5b2dc4fe88177b094",
"x86_64-apple-darwin-0.14.4": "041b9429400bfc3aca8402940fe6fa0ec33f9d79e8f50fbfb3063f70b4327fa3",
"x86_64-pc-windows-msvc-0.14.4": "5541af69b1f342d843f8fca6218bd0d5d9064e987d14405a2abf60ce94c615a4",
"x86_64-unknown-linux-gnu-0.14.4": "c9120e68e358eb0f850123537afe18945f9095e9f17967944fd23585fc88bb0b",
"x86_64-unknown-linux-musl-0.14.4": "dcb5b42fd364c9e837b6800886564a891d023c8b87c967224351399cb1cda154",
"aarch64-apple-darwin-0.14.3": "fc4c2c153656bc4082fb6c928fbd6867d5eb932240b663b329365f3f1821fc82",
"aarch64-pc-windows-msvc-0.14.3": "b7ed5d2006b1c43559e78d90e65f2fa1982bec3976de74978485660fcdd67548",
"aarch64-unknown-linux-gnu-0.14.3": "daa9edc586b669079fbe204bf5f5b48ee05c5dac862d2daf5ad72d3c2777834b",
"aarch64-unknown-linux-musl-0.14.3": "571058fe7e3381ad54bec8b3d9d127013e332d822b35978b503722147aa3b9cf",
"arm-unknown-linux-musleabihf-0.14.3": "f5e9b79cea63116ad582ffb514a61a506978762b67859b9e9e9cdee4b2ad065d",
"armv7-unknown-linux-gnueabihf-0.14.3": "07094c107682c58260d652708a0c8b2f3d38bdffd5e7ec9a81785e665154a137",
"armv7-unknown-linux-musleabihf-0.14.3": "edfd2491e25383de77f60aafcbd5451350b2cb6f9af38b6cf5a2e725193333cd",
"i686-pc-windows-msvc-0.14.3": "f46525c0684a220c063c1c1f8d516c8cccab8ec9f62417e17e02cd4c1a138417",
"i686-unknown-linux-gnu-0.14.3": "c7180e275ccaa97eae1528a15a08828cd9aaa15b57d3828f8722b0edd347046d",
"i686-unknown-linux-musl-0.14.3": "60d1db56b1b4064b00f349b5fc8e11f2e63b8fa3bce4679f9c9da91356d6c3f6",
"powerpc64-unknown-linux-gnu-0.14.3": "b9bf7191d023fcdd938e51fa53b63226897a23896f82057fe32fde9df10b1649",
"powerpc64le-unknown-linux-gnu-0.14.3": "c1f5e497fe183dc1e0b6bb984573a0703182b68ac07587add1cbc370957ebd20",
"riscv64gc-unknown-linux-gnu-0.14.3": "909e92469524b80520af17537df55f245d6ba018928bc486fd8418e9983b539f",
"s390x-unknown-linux-gnu-0.14.3": "d8c56807e9827f391e1266bd19e0235fa470a0620cf166975365862e5bf9e908",
"x86_64-apple-darwin-0.14.3": "076e88da3dcb38d3fef61daccc759bf29b605a490143ae707c0e067ebf8d7050",
"x86_64-pc-windows-msvc-0.14.3": "ccc1bd362cca52a7fb7f9ee2cec7317c139ccb86e0964a5c1d4b14efbf2118ff",
"x86_64-unknown-linux-gnu-0.14.3": "cb8a88912aa91a1864ad662c24df4514699ddfcbc52e684218aaf5ac57d7de0d",
"x86_64-unknown-linux-musl-0.14.3": "58fd05427420df7b7b51bc6bbd5a430f38d2dfd63c74660f27625a4632f12532",
"aarch64-apple-darwin-0.14.2": "33225f67ce61188fce91b801ab50a4028f8b0d66abbf81810841dd7d42371e38",
"aarch64-pc-windows-msvc-0.14.2": "4fb68c66c719b337c2364aeb8210326a28b8ae046ef9a9c90407d473264515dd",
"aarch64-unknown-linux-gnu-0.14.2": "a907d6a13120679b7194eb61beace09103f04b90e32cf7c2ac11979e6f618e35",
"aarch64-unknown-linux-musl-0.14.2": "e323e9716661c9e18152aefe62e3fada497c10c9b3ef3095359c31b4df4f866a",
"arm-unknown-linux-musleabihf-0.14.2": "2b3ccfd36718b29e0f5d1dcc10540b61205c72ee1c6a43331e6a97f2a17f12d0",
"armv7-unknown-linux-gnueabihf-0.14.2": "5539a66c2723670dbf54eadf615e106aa038decbc701b9d47f7ed535ac677e1d",
"armv7-unknown-linux-musleabihf-0.14.2": "c59be0daa3144ba317c88dd6cb3af68cff0f8dfbf2f495bebfb5b630d6f4c7cd",
"i686-pc-windows-msvc-0.14.2": "125e2010b28ccb01ed2a4596e3db8d8dc0a46ccba2ee08e6038cc56ebbfbcb96",
"i686-unknown-linux-gnu-0.14.2": "e2accde14cb371ca1b60935028c72138390f552cd77fc8c52a75f28c68eaa963",
"i686-unknown-linux-musl-0.14.2": "d11f67f949e909412c523edcc1944c16dfecde49ed3709bca40631e371300da1",
"powerpc64-unknown-linux-gnu-0.14.2": "99cc0f2cf83a7f82bb4e0db9ff1de8bcc5bf966054c0c82d25e189ee4565b0d5",
"powerpc64le-unknown-linux-gnu-0.14.2": "81ac087a458bcaac7905c9afe84ef58061394a71264e8dd115889be0bc96fc6e",
"riscv64gc-unknown-linux-gnu-0.14.2": "7917eb80fbae72040ad199f634361ce6001bc6225c165caa09c6d983c90692b0",
"s390x-unknown-linux-gnu-0.14.2": "e24bfabe70535ffeedbba74ff6ecdf6c6bb09c5d9bf2c6c902e5540b569d6236",
"x86_64-apple-darwin-0.14.2": "f119057618599e8983bdeed64e949af54f67d7a62464d11de0ba1237619a9990",
"x86_64-pc-windows-msvc-0.14.2": "0a1160f45263cc847acd4b42392bf0484c9420806eeb7f776e1384fb557aeade",
"x86_64-unknown-linux-gnu-0.14.2": "b4457ef6c130165655e0fb91081dbef09011ec41955115aaa22c94f7655c97c2",
"x86_64-unknown-linux-musl-0.14.2": "e5e177a829b370376abb6a1dc9edc8c59ac519ebe64b1366b65e2952fa524a8d",
"aarch64-apple-darwin-0.14.1": "ee12f441b4c14eff354784a52f8a16767573bd6285627cad2ade04551e8a678b",
"aarch64-pc-windows-msvc-0.14.1": "3bd0b34cc645faaf88b4010a639d9b0ec6c313359774ad7e48daaef4ddb3c4f7",
"aarch64-unknown-linux-gnu-0.14.1": "8203922d5f55a04089005184942f2f449f9736a06e96854230ba5991bb91ee9a",
"aarch64-unknown-linux-musl-0.14.1": "ddfc9df5c879a1984fef4e29838e46fa8e979adc3fdab5967f096363427e8790",
"arm-unknown-linux-musleabihf-0.14.1": "a29be1acc5f29ee8cb5a5add223a7ed07e8ffd0f9a78219e115e57041c63b416",
"armv7-unknown-linux-gnueabihf-0.14.1": "dd8ead33fc3158618a29f02d76fd7ff4f6914272b5d94a65e348b8b8c0753d78",
"armv7-unknown-linux-musleabihf-0.14.1": "16d79262e9fc98ceef167577a391d54d9c8a2d8fe90de22266f456bf4644f7e5",
"i686-pc-windows-msvc-0.14.1": "ffe525c5e641f3bef31d9bc6e1e3585f9f796dda1254c15e5a18ef51a91917c3",
"i686-unknown-linux-gnu-0.14.1": "37f10652706cdf1f107c620970bf37591b0be44111614101509f56e596f866b3",
"i686-unknown-linux-musl-0.14.1": "e39c79642ec4e3d95d31a0ae77fb648946f2a639cb3cbf876c0f5e1e2571e94e",
"powerpc64-unknown-linux-gnu-0.14.1": "1ec026aef1c670715d5c197bbf18b4edd81e140fbecee51ed169e05b042c6045",
"powerpc64le-unknown-linux-gnu-0.14.1": "193d66f5ed6e21a46b244118c983ab91628ed65ae542f7345f8e37a8c555bff0",
"riscv64gc-unknown-linux-gnu-0.14.1": "4cbea006f37927abac8c32575212f982b86aaa4f73a32983e4a8934320ef7e9c",
"s390x-unknown-linux-gnu-0.14.1": "5cd7f6e6e2de3b03ada4821de444e92bb87ce5c57981c1d8ba8128dc62f02668",
"x86_64-apple-darwin-0.14.1": "7fda94bd7fc6114eecb67b858a8c93f1b4aa658aa1f5e887b37a2b95bf6f26a7",
"x86_64-pc-windows-msvc-0.14.1": "ab0bc1876a16e1afa4177fe9f58d568fbe85921efb253395bd03d01e1e2c467d",
"x86_64-unknown-linux-gnu-0.14.1": "8798f5892db7dc70a3250f89d3ef613f87f1fa5fdb4242921ee31427daf78e87",
"x86_64-unknown-linux-musl-0.14.1": "ec5b8eb318ff9e2412988420eb78f965aca02e9f67df34eeea7609e0c5a0fb7f",
"aarch64-apple-darwin-0.14.0": "0b7c193d5c45eda02226720eb75239fabeca995d5a0eb3830fd2973caa3030ec",
"aarch64-pc-windows-msvc-0.14.0": "a882d2ec2235c13f63453fde682775d2e1f8a44ccfd1af9e031255b051e30e70",
"aarch64-unknown-linux-gnu-0.14.0": "60fc3b464a723456ba1bc8cd91d29806753c885f72e26ac67b718cee6b35aaca",
@@ -31722,7 +31956,6 @@ const plugin_rest_endpoint_methods_1 = __nccwpck_require__(9210);
const pep440 = __importStar(__nccwpck_require__(3297));
const semver = __importStar(__nccwpck_require__(9318));
const constants_1 = __nccwpck_require__(6156);
const retry_1 = __nccwpck_require__(5931);
const checksum_1 = __nccwpck_require__(5391);
const PaginatingOctokit = core_1.Octokit.plugin(plugin_paginate_rest_1.paginateRest, plugin_rest_endpoint_methods_1.restEndpointMethods);
function tryGetFromToolCache(arch, version) {
@@ -31744,21 +31977,7 @@ async function downloadVersion(platform, arch, version, checkSum, githubToken) {
}
const downloadUrl = constructDownloadUrl(version, platform, arch);
core.debug(`Downloading ruff from "${downloadUrl}" ...`);
const downloadPath = await (0, retry_1.withRetry)(async () => {
try {
return await tc.downloadTool(downloadUrl, undefined, githubToken);
}
catch (error) {
const err = error;
if ((0, retry_1.isRetryableError)(err)) {
throw new retry_1.RetryableError(`Failed to download ruff binary: ${err.message}`, err);
}
else {
throw new retry_1.NonRetryableError(`Failed to download ruff binary: ${err.message}`, err);
}
}
}, { maxRetries: 3, timeoutMs: 60000 }, // 60 second timeout for downloads
"download ruff binary");
const downloadPath = await tc.downloadTool(downloadUrl, undefined, githubToken);
core.debug(`Downloaded ruff to "${downloadPath}"`);
await (0, checksum_1.validateChecksum)(checkSum, downloadPath, arch, platform, version);
const extractedDir = await extractDownloadedArtifact(version, downloadPath, extension, platform, artifact);
@@ -31814,7 +32033,6 @@ async function resolveVersion(versionInput, githubToken) {
return resolvedVersion;
}
async function getAvailableVersions(githubToken) {
return await (0, retry_1.withRetry)(async () => {
try {
const octokit = new PaginatingOctokit({
auth: githubToken,
@@ -31822,40 +32040,19 @@ async function getAvailableVersions(githubToken) {
return await getReleaseTagNames(octokit);
}
catch (err) {
const error = err;
if (error.message.includes("Bad credentials")) {
if (err.message.includes("Bad credentials")) {
core.info("No (valid) GitHub token provided. Falling back to anonymous. Requests might be rate limited.");
const octokit = new PaginatingOctokit();
return await getReleaseTagNames(octokit);
}
if ((0, retry_1.isRetryableError)(error)) {
throw new retry_1.RetryableError(`Failed to get available versions: ${error.message}`, error);
throw err;
}
else {
throw new retry_1.NonRetryableError(`Failed to get available versions: ${error.message}`, error);
}
}
}, { maxRetries: 3, timeoutMs: 30000 }, // 30 second timeout for API calls
"get available versions");
}
async function getReleaseTagNames(octokit) {
const response = await (0, retry_1.withRetry)(async () => {
try {
return await octokit.paginate(octokit.rest.repos.listReleases, {
const response = await octokit.paginate(octokit.rest.repos.listReleases, {
owner: constants_1.OWNER,
repo: constants_1.REPO,
});
}
catch (error) {
const err = error;
if ((0, retry_1.isRetryableError)(err)) {
throw new retry_1.RetryableError(`Failed to list GitHub releases: ${err.message}`, err);
}
else {
throw new retry_1.NonRetryableError(`Failed to list GitHub releases: ${err.message}`, err);
}
}
}, { maxRetries: 3, timeoutMs: 30000 }, "list GitHub releases");
const releaseTagNames = response.map((release) => release.tag_name);
if (releaseTagNames.length === 0) {
throw Error("Github API request failed while getting releases. Check the GitHub status page for outages. Try again later.");
@@ -31863,7 +32060,6 @@ async function getReleaseTagNames(octokit) {
return response.map((release) => release.tag_name);
}
async function getLatestVersion(githubToken) {
return await (0, retry_1.withRetry)(async () => {
const octokit = new PaginatingOctokit({
auth: githubToken,
});
@@ -31872,47 +32068,27 @@ async function getLatestVersion(githubToken) {
latestRelease = await getLatestRelease(octokit);
}
catch (err) {
const error = err;
if (error.message.includes("Bad credentials")) {
if (err.message.includes("Bad credentials")) {
core.info("No (valid) GitHub token provided. Falling back to anonymous. Requests might be rate limited.");
const octokit = new PaginatingOctokit();
latestRelease = await getLatestRelease(octokit);
}
else {
core.error("Github API request failed while getting latest release. Check the GitHub status page for outages. Try again later.");
if ((0, retry_1.isRetryableError)(error)) {
throw new retry_1.RetryableError(`Failed to get latest version: ${error.message}`, error);
}
else {
throw new retry_1.NonRetryableError(`Failed to get latest version: ${error.message}`, error);
}
throw err;
}
}
if (!latestRelease) {
throw new Error("Could not determine latest release.");
}
return latestRelease.tag_name;
}, { maxRetries: 3, timeoutMs: 30000 }, "get latest version");
}
async function getLatestRelease(octokit) {
return await (0, retry_1.withRetry)(async () => {
try {
const { data: latestRelease } = await octokit.rest.repos.getLatestRelease({
owner: constants_1.OWNER,
repo: constants_1.REPO,
});
return latestRelease;
}
catch (error) {
const err = error;
if ((0, retry_1.isRetryableError)(err)) {
throw new retry_1.RetryableError(`Failed to get latest release: ${err.message}`, err);
}
else {
throw new retry_1.NonRetryableError(`Failed to get latest release: ${err.message}`, err);
}
}
}, { maxRetries: 3, timeoutMs: 30000 }, "get latest release");
}
function maxSatisfying(versions, version) {
const maxSemver = tc.evaluateVersions(versions, version);
@@ -31970,7 +32146,6 @@ var __importStar = (this && this.__importStar) || (function () {
};
})();
Object.defineProperty(exports, "__esModule", ({ value: true }));
const fs = __importStar(__nccwpck_require__(3024));
const path = __importStar(__nccwpck_require__(6760));
const core = __importStar(__nccwpck_require__(7484));
const exec = __importStar(__nccwpck_require__(5236));
@@ -31979,6 +32154,7 @@ const download_version_1 = __nccwpck_require__(8255);
const inputs_1 = __nccwpck_require__(9612);
const platforms_1 = __nccwpck_require__(8361);
const pyproject_1 = __nccwpck_require__(3929);
const pyproject_finder_1 = __nccwpck_require__(6346);
async function run() {
const platform = (0, platforms_1.getPlatform)();
const arch = (0, platforms_1.getArch)();
@@ -32035,9 +32211,9 @@ async function determineVersion() {
}
return await (0, download_version_1.resolveVersion)(versionFromPyproject || "latest", inputs_1.githubToken);
}
const pyProjectPath = path.join(inputs_1.src, "pyproject.toml");
if (!fs.existsSync(pyProjectPath)) {
core.info(`Could not find ${pyProjectPath}. Using latest version.`);
const pyProjectPath = (0, pyproject_finder_1.findPyprojectToml)(inputs_1.src, process.env.GITHUB_WORKSPACE || ".");
if (!pyProjectPath) {
core.info(`Could not find pyproject.toml. Using latest version.`);
return await (0, download_version_1.resolveVersion)("latest", inputs_1.githubToken);
}
const versionFromPyproject = (0, pyproject_1.getRuffVersionFromRequirementsFile)(pyProjectPath);
@@ -32165,6 +32341,110 @@ function getPlatform() {
}
/***/ }),
/***/ 6346:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.findPyprojectToml = findPyprojectToml;
const fs = __importStar(__nccwpck_require__(3024));
const path = __importStar(__nccwpck_require__(6760));
const core = __importStar(__nccwpck_require__(7484));
/**
* Search for a pyproject.toml file starting from the given directory
* and traversing upwards through parent directories until reaching
* the GitHub workspace root.
*
* @param startDir The directory to start the search from (e.g., the src input)
* @param workspaceRoot The GitHub workspace directory (GITHUB_WORKSPACE)
* @returns The path to the found pyproject.toml, or undefined if not found
*/
function findPyprojectToml(startDir, workspaceRoot) {
let currentDir = path.resolve(startDir);
const resolvedWorkspaceRoot = path.resolve(workspaceRoot);
while (true) {
const pyprojectPath = path.join(currentDir, "pyproject.toml");
core.debug(`Checking for ${pyprojectPath}`);
if (fs.existsSync(pyprojectPath)) {
core.info(`Found pyproject.toml at ${pyprojectPath}`);
return pyprojectPath;
}
// Check if we've reached the workspace root
if (currentDir === resolvedWorkspaceRoot) {
// If we're at workspace root and didn't find it, stop searching
break;
}
// Move up to parent directory
const parentDir = path.dirname(currentDir);
// If parent is the same as current, we've reached the filesystem root
if (parentDir === currentDir) {
break;
}
currentDir = parentDir;
// If we've gone past the workspace root, stop searching
if (isPathWithinWorkspace(currentDir, resolvedWorkspaceRoot) === false) {
break;
}
}
return undefined;
}
/**
* Check if a given path is within or equal to the workspace root.
*
* @param checkPath The path to check
* @param workspaceRoot The workspace root directory
* @returns true if within or equal to workspace, false if outside, undefined if can't determine
*/
function isPathWithinWorkspace(checkPath, workspaceRoot) {
try {
const checkPathResolved = path.resolve(checkPath);
const workspaceRootResolved = path.resolve(workspaceRoot);
// Check if checkPath starts with workspaceRoot (case-insensitive on Windows)
const relativePath = path.relative(workspaceRootResolved, checkPathResolved);
return !relativePath.startsWith("..") && !path.isAbsolute(relativePath);
}
catch {
return undefined;
}
}
/***/ }),
/***/ 3929:
@@ -32206,24 +32486,55 @@ var __importStar = (this && this.__importStar) || (function () {
};
})();
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.findRuffVersionInSpec = findRuffVersionInSpec;
exports.getRuffVersionFromRequirementsFile = getRuffVersionFromRequirementsFile;
const fs = __importStar(__nccwpck_require__(3024));
const core = __importStar(__nccwpck_require__(7484));
const toml = __importStar(__nccwpck_require__(7106));
function getRuffVersionFromAllDependencies(allDependencies) {
const ruffVersionDefinition = allDependencies.find((dep) => dep.startsWith("ruff"));
if (ruffVersionDefinition) {
const ruffVersion = ruffVersionDefinition
.match(/^ruff([^A-Z0-9._-]+.*)$/)?.[1]
.trim();
if (ruffVersion?.startsWith("==")) {
return ruffVersion.slice(2);
/**
* Find ruff version in a dependency specification.
* Only handles strings that start with "ruff" (e.g., "ruff==0.9.3").
* Returns undefined for non-ruff dependencies.
* Strips environment markers (everything after ';').
* Strips leading '==' from exact version specifiers (PEP 440) for downstream compatibility.
*
* @internal This is exported for testing purposes only.
*/
function findRuffVersionInSpec(spec) {
const trimmedSpec = spec.trim();
const fullDepMatch = trimmedSpec.match(/^ruff\s*(.+)$/);
let versionSpec;
if (fullDepMatch) {
versionSpec = fullDepMatch[1];
}
else {
return undefined;
}
// Strip trailing backslash (line continuation)
versionSpec = versionSpec.replace(/\\$/, "").trim();
// Strip environment markers (everything after ';')
const match = versionSpec.match(/^([^;]+)(?:;.*)?$/);
if (match) {
let version = match[1].trim();
if (version) {
// Strip leading '==' from exact version specifiers for compatibility with semver
if (version.startsWith("==")) {
version = version.slice(2);
}
if (trimmedSpec.includes(";")) {
core.warning("Environment markers are ignored. ruff is a standalone tool that works independently of Python version.");
}
core.info(`Found ruff version in requirements file: ${version}`);
return version;
}
core.info(`Found ruff version in pyproject.toml: ${ruffVersion}`);
return ruffVersion;
}
return undefined;
}
function getRuffVersionFromAllDependencies(allDependencies) {
return allDependencies
.map((dep) => findRuffVersionInSpec(dep))
.find((version) => version !== undefined);
}
function parsePyproject(pyprojectContent) {
const pyproject = toml.parse(pyprojectContent);
const dependencies = pyproject?.project?.dependencies || [];
@@ -32244,8 +32555,9 @@ function getRuffVersionFromPoetryGroups(pyproject) {
return poetryGroups
.flatMap((group) => Object.entries(group.dependencies))
.map(([name, spec]) => {
if (name === "ruff" && typeof spec === "string")
return spec;
if (typeof spec === "string") {
return findRuffVersionInSpec(`${name} ${spec}`);
}
return undefined;
})
.find((version) => version !== undefined);
@@ -32270,175 +32582,6 @@ function getRuffVersionFromRequirementsFile(filePath) {
}
/***/ }),
/***/ 5931:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.NonRetryableError = exports.RetryableError = exports.DEFAULT_RETRY_OPTIONS = void 0;
exports.withRetry = withRetry;
exports.withTimeout = withTimeout;
exports.isRetryableError = isRetryableError;
exports.wrapWithRetryLogic = wrapWithRetryLogic;
const core = __importStar(__nccwpck_require__(7484));
exports.DEFAULT_RETRY_OPTIONS = {
backoffMultiplier: 2,
initialDelayMs: 1000,
maxDelayMs: 10000,
maxRetries: 3,
timeoutMs: 30000, // 30 second timeout
};
class RetryableError extends Error {
cause;
constructor(message, cause) {
super(message);
this.cause = cause;
this.name = "RetryableError";
}
}
exports.RetryableError = RetryableError;
class NonRetryableError extends Error {
cause;
constructor(message, cause) {
super(message);
this.cause = cause;
this.name = "NonRetryableError";
}
}
exports.NonRetryableError = NonRetryableError;
async function withRetry(operation, options = {}, operationName = "operation") {
const opts = { ...exports.DEFAULT_RETRY_OPTIONS, ...options };
let lastError;
for (let attempt = 0; attempt <= opts.maxRetries; attempt++) {
try {
if (attempt > 0) {
const delay = Math.min(opts.initialDelayMs * opts.backoffMultiplier ** (attempt - 1), opts.maxDelayMs);
core.info(`Retrying ${operationName} (attempt ${attempt + 1}/${opts.maxRetries + 1}) after ${delay}ms delay...`);
await sleep(delay);
}
// Wrap operation with timeout if specified
if (opts.timeoutMs) {
return await withTimeout(operation(), opts.timeoutMs, operationName);
}
else {
return await operation();
}
}
catch (error) {
lastError = error;
// Don't retry on non-retryable errors
if (lastError instanceof NonRetryableError) {
core.debug(`Non-retryable error in ${operationName}: ${lastError.message}`);
throw lastError.cause || lastError;
}
// Log the error for debugging
core.debug(`Attempt ${attempt + 1} failed for ${operationName}: ${lastError.message}`);
// If this was the last attempt, throw the error
if (attempt === opts.maxRetries) {
core.error(`${operationName} failed after ${opts.maxRetries + 1} attempts. Last error: ${lastError.message}`);
throw lastError;
}
}
}
throw lastError || new Error(`${operationName} failed for unknown reason`);
}
async function withTimeout(promise, timeoutMs, operationName = "operation") {
const timeoutPromise = new Promise((_, reject) => {
setTimeout(() => {
reject(new RetryableError(`${operationName} timed out after ${timeoutMs}ms`));
}, timeoutMs);
});
return Promise.race([promise, timeoutPromise]);
}
function sleep(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
function isRetryableError(error) {
const message = error.message.toLowerCase();
// Network-related errors that should be retried
const retryableMessages = [
"connect timeout",
"connection timeout",
"timeout",
"econnreset",
"econnrefused",
"enotfound",
"network error",
"request timeout",
"socket timeout",
"fetch failed",
"connect etimedout",
];
// HTTP status codes that should be retried
const retryableStatusCodes = [408, 429, 500, 502, 503, 504];
// Check for retryable messages
if (retryableMessages.some((msg) => message.includes(msg))) {
return true;
}
// Check for HTTP status codes in error message
const statusMatch = message.match(/status.*?(\d{3})/);
if (statusMatch) {
const statusCode = parseInt(statusMatch[1], 10);
if (retryableStatusCodes.includes(statusCode)) {
return true;
}
}
return false;
}
function wrapWithRetryLogic(operation, operationName, options = {}) {
return async () => {
try {
return await withRetry(operation, options, operationName);
}
catch (error) {
const err = error;
if (isRetryableError(err)) {
throw new RetryableError(`${operationName} failed: ${err.message}`, err);
}
else {
throw new NonRetryableError(`${operationName} failed: ${err.message}`, err);
}
}
};
}
/***/ }),
/***/ 2613:
@@ -34583,6 +34726,12 @@ ${codeblock}`, options);
};
// dist/util.js
function isEscaped(str, ptr) {
let i = 0;
while (str[ptr - ++i] === "\\")
;
return --i && i % 2;
}
function indexOfNewline(str, start = 0, end = str.length) {
let idx = str.indexOf("\n", start);
if (str[idx - 1] === "\r")
@@ -34637,7 +34786,7 @@ function getStringEnd(str, seek) {
seek += target.length - 1;
do
seek = str.indexOf(target, ++seek);
while (seek > -1 && first !== "'" && str[seek - 1] === "\\" && (str[seek - 2] !== "\\" || str[seek - 3] === "\\"));
while (seek > -1 && first !== "'" && isEscaped(str, seek));
if (seek > -1) {
seek += target.length;
if (target.length > 1) {
@@ -34651,7 +34800,7 @@ function getStringEnd(str, seek) {
}
// dist/date.js
var DATE_TIME_RE = /^(\d{4}-\d{2}-\d{2})?[T ]?(?:(\d{2}):\d{2}:\d{2}(?:\.\d+)?)?(Z|[-+]\d{2}:\d{2})?$/i;
var DATE_TIME_RE = /^(\d{4}-\d{2}-\d{2})?[T ]?(?:(\d{2}):\d{2}(?::\d{2}(?:\.\d+)?)?)?(Z|[-+]\d{2}:\d{2})?$/i;
var TomlDate = class _TomlDate extends Date {
#hasDate = false;
#hasTime = false;
@@ -34746,13 +34895,14 @@ var TomlDate = class _TomlDate extends Date {
var INT_REGEX = /^((0x[0-9a-fA-F](_?[0-9a-fA-F])*)|(([+-]|0[ob])?\d(_?\d)*))$/;
var FLOAT_REGEX = /^[+-]?\d(_?\d)*(\.\d(_?\d)*)?([eE][+-]?\d(_?\d)*)?$/;
var LEADING_ZERO = /^[+-]?0[0-9_]/;
var ESCAPE_REGEX = /^[0-9a-f]{4,8}$/i;
var ESCAPE_REGEX = /^[0-9a-f]{2,8}$/i;
var ESC_MAP = {
b: "\b",
t: " ",
n: "\n",
f: "\f",
r: "\r",
e: "\x1B",
'"': '"',
"\\": "\\"
};
@@ -34787,8 +34937,8 @@ function parseString(str, ptr = 0, endPtr = str.length) {
}
if (isEscape) {
isEscape = false;
if (c === "u" || c === "U") {
let code = str.slice(ptr, ptr += c === "u" ? 4 : 8);
if (c === "x" || c === "u" || c === "U") {
let code = str.slice(ptr, ptr += c === "x" ? 2 : c === "u" ? 4 : 8);
if (!ESCAPE_REGEX.test(code)) {
throw new TomlError("invalid unicode escape", {
toml: str,
@@ -34881,24 +35031,14 @@ function parseValue(value, toml, ptr, integersAsBigInt) {
}
// dist/extract.js
function sliceAndTrimEndOf(str, startPtr, endPtr, allowNewLines) {
function sliceAndTrimEndOf(str, startPtr, endPtr) {
let value = str.slice(startPtr, endPtr);
let commentIdx = value.indexOf("#");
if (commentIdx > -1) {
skipComment(str, commentIdx);
value = value.slice(0, commentIdx);
}
let trimmed = value.trimEnd();
if (!allowNewLines) {
let newlineIdx = value.indexOf("\n", trimmed.length);
if (newlineIdx > -1) {
throw new TomlError("newlines are not allowed in inline tables", {
toml: str,
ptr: startPtr + newlineIdx
});
}
}
return [trimmed, commentIdx];
return [value.trimEnd(), commentIdx];
}
function extractValue(str, ptr, end, depth, integersAsBigInt) {
if (depth === 0) {
@@ -34910,24 +35050,25 @@ function extractValue(str, ptr, end, depth, integersAsBigInt) {
let c = str[ptr];
if (c === "[" || c === "{") {
let [value, endPtr2] = c === "[" ? parseArray(str, ptr, depth, integersAsBigInt) : parseInlineTable(str, ptr, depth, integersAsBigInt);
let newPtr = end ? skipUntil(str, endPtr2, ",", end) : endPtr2;
if (endPtr2 - newPtr && end === "}") {
let nextNewLine = indexOfNewline(str, endPtr2, newPtr);
if (nextNewLine > -1) {
throw new TomlError("newlines are not allowed in inline tables", {
if (end) {
endPtr2 = skipVoid(str, endPtr2);
if (str[endPtr2] === ",")
endPtr2++;
else if (str[endPtr2] !== end) {
throw new TomlError("expected comma or end of structure", {
toml: str,
ptr: nextNewLine
ptr: endPtr2
});
}
}
return [value, newPtr];
return [value, endPtr2];
}
let endPtr;
if (c === '"' || c === "'") {
endPtr = getStringEnd(str, ptr);
let parsed = parseString(str, ptr, endPtr);
if (end) {
endPtr = skipVoid(str, endPtr, end !== "]");
endPtr = skipVoid(str, endPtr);
if (str[endPtr] && str[endPtr] !== "," && str[endPtr] !== end && str[endPtr] !== "\n" && str[endPtr] !== "\r") {
throw new TomlError("unexpected character encountered", {
toml: str,
@@ -34939,7 +35080,7 @@ function extractValue(str, ptr, end, depth, integersAsBigInt) {
return [parsed, endPtr];
}
endPtr = skipUntil(str, ptr, ",", end);
let slice = sliceAndTrimEndOf(str, ptr, endPtr - +(str[endPtr - 1] === ","), end === "]");
let slice = sliceAndTrimEndOf(str, ptr, endPtr - +(str[endPtr - 1] === ","));
if (!slice[0]) {
throw new TomlError("incomplete key-value declaration: no value specified", {
toml: str,
@@ -35029,17 +35170,16 @@ function parseInlineTable(str, ptr, depth, integersAsBigInt) {
let res = {};
let seen = /* @__PURE__ */ new Set();
let c;
let comma = 0;
ptr++;
while ((c = str[ptr++]) !== "}" && c) {
let err = { toml: str, ptr: ptr - 1 };
if (c === "\n") {
throw new TomlError("newlines are not allowed in inline tables", err);
} else if (c === "#") {
throw new TomlError("inline tables cannot contain comments", err);
} else if (c === ",") {
throw new TomlError("expected key-value, found comma", err);
} else if (c !== " " && c !== " ") {
if (c === ",") {
throw new TomlError("expected value, found comma", {
toml: str,
ptr: ptr - 1
});
} else if (c === "#")
ptr = skipComment(str, ptr);
else if (c !== " " && c !== " " && c !== "\n" && c !== "\r") {
let k;
let t = res;
let hasOwn = false;
@@ -35068,15 +35208,8 @@ function parseInlineTable(str, ptr, depth, integersAsBigInt) {
seen.add(value);
t[k] = value;
ptr = valueEndPtr;
comma = str[ptr - 1] === "," ? ptr - 1 : 0;
}
}
if (comma) {
throw new TomlError("trailing commas are not allowed in inline tables", {
toml: str,
ptr: comma
});
}
if (!c) {
throw new TomlError("unfinished table encountered", {
toml: str,
@@ -35328,14 +35461,13 @@ function stringifyArrayTable(array, key, depth, numberAsFloat) {
}
let res = "";
for (let i = 0; i < array.length; i++) {
res += `[[${key}]]
res += `${res && "\n"}[[${key}]]
`;
res += stringifyTable(array[i], key, depth, numberAsFloat);
res += "\n\n";
res += stringifyTable(0, array[i], key, depth, numberAsFloat);
}
return res;
}
function stringifyTable(obj, prefix, depth, numberAsFloat) {
function stringifyTable(tableKey, obj, prefix, depth, numberAsFloat) {
if (depth === 0) {
throw new Error("Could not stringify the object: maximum object depth exceeded");
}
@@ -35351,13 +35483,10 @@ function stringifyTable(obj, prefix, depth, numberAsFloat) {
}
let key = BARE_KEY.test(k) ? k : formatString(k);
if (type === "array" && isArrayOfTables(obj[k])) {
tables += stringifyArrayTable(obj[k], prefix ? `${prefix}.${key}` : key, depth - 1, numberAsFloat);
tables += (tables && "\n") + stringifyArrayTable(obj[k], prefix ? `${prefix}.${key}` : key, depth - 1, numberAsFloat);
} else if (type === "object") {
let tblKey = prefix ? `${prefix}.${key}` : key;
tables += `[${tblKey}]
`;
tables += stringifyTable(obj[k], tblKey, depth - 1, numberAsFloat);
tables += "\n\n";
tables += (tables && "\n") + stringifyTable(tblKey, obj[k], tblKey, depth - 1, numberAsFloat);
} else {
preamble += key;
preamble += " = ";
@@ -35366,14 +35495,20 @@ function stringifyTable(obj, prefix, depth, numberAsFloat) {
}
}
}
return `${preamble}
${tables}`.trim();
if (tableKey && (preamble || !tables))
preamble = preamble ? `[${tableKey}]
${preamble}` : `[${tableKey}]`;
return preamble && tables ? `${preamble}
${tables}` : preamble || tables;
}
function stringify(obj, { maxDepth = 1e3, numbersAsFloat = false } = {}) {
if (extendedTypeOf(obj) !== "object") {
throw new TypeError("stringify can only be called with an object");
}
return stringifyTable(obj, "", maxDepth, numbersAsFloat);
let str = stringifyTable(0, obj, "", maxDepth, numbersAsFloat);
if (str[str.length - 1] !== "\n")
return str + "\n";
return str;
}
// dist/index.js
+235 -198
View File
@@ -28205,6 +28205,240 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.KNOWN_CHECKSUMS = void 0;
// AUTOGENERATED_DO_NOT_EDIT
exports.KNOWN_CHECKSUMS = {
"aarch64-apple-darwin-0.14.14": "76a9b0ebe57d0eee56940dbe0b62462578d1369cca8314ed0d2a6f2102292d4f",
"aarch64-pc-windows-msvc-0.14.14": "449982699657bd68d170440dad958281b030bc05865fe012d043cd225e78eb79",
"aarch64-unknown-linux-gnu-0.14.14": "1eee1ce3467fb5f348738bb5e4598859b55816a79c3cd6a26ca0dae03d7e2672",
"aarch64-unknown-linux-musl-0.14.14": "a4d7302aa201a6f8e71dfa217cd8273fddd4e434a93ee3b4b07047fd7a684ac1",
"arm-unknown-linux-musleabihf-0.14.14": "c225db82587780d1675e220db02c5209f406b29afb0a525628e11ffaca537068",
"armv7-unknown-linux-gnueabihf-0.14.14": "cdc9596d6317e6cb32fbf3fd6c0e5817f96676b215957e6583db28abf4a15427",
"armv7-unknown-linux-musleabihf-0.14.14": "0f1938426c50500bac09a09df5396aa19d6ce9f01a3a18a531dfaee5cc0d93e8",
"i686-pc-windows-msvc-0.14.14": "4f6af9d82acae3d1308c55b0fa51b84d57eafc380aedf97a53a32314118c9a71",
"i686-unknown-linux-gnu-0.14.14": "5ceb5e2f1906d85e444cb71503379e14d96ded423bd68906f1a539b78d9fc2c3",
"i686-unknown-linux-musl-0.14.14": "878cebcaf3481295d22a1274cea94ec050455917669ccecac586dcfe6b4a557e",
"powerpc64-unknown-linux-gnu-0.14.14": "e01a6db6bbf15db82052269887fb49e6be79923d188f1f60ed74f93b6b9a90d4",
"powerpc64le-unknown-linux-gnu-0.14.14": "6048f270a46cce01228a53fde14fa6182a99d9e99169d7c252f706d7ba2a4845",
"riscv64gc-unknown-linux-gnu-0.14.14": "6eca650195a22c0a568adc923b645b6317dad3ecc8a3d5c02c08768d6b333393",
"s390x-unknown-linux-gnu-0.14.14": "dbde3ba91f84d8c183ed49bca0790777285d21381ad64a290584bd19038b83a4",
"x86_64-apple-darwin-0.14.14": "749396c675c6f07205be6c4ef89e2e95123d790062d681059a355030e9d7d119",
"x86_64-pc-windows-msvc-0.14.14": "81bfeed34f15296e6c81ecea912b6fff4430b957de8a1181ce9365434e3d6744",
"x86_64-unknown-linux-gnu-0.14.14": "9876634f799d933bdaa1de864f47d26f898b2e20aa8f4f85d63235c3a231068d",
"x86_64-unknown-linux-musl-0.14.14": "55a1ee65f5ac9416cc40f99c2df62f0d4525d40369fe371caff945c495174d57",
"aarch64-apple-darwin-0.14.13": "067d1a90da8add55614eff91990425883a092d8279d9e503258ff8be0f8e9c18",
"aarch64-pc-windows-msvc-0.14.13": "f7b5b9740ae893ac6abe9b9f68865073ffb9146a6f352ba9718d53b102ad02ef",
"aarch64-unknown-linux-gnu-0.14.13": "84ce8fe1ef9b2eba018ba396fd018ac2bc22865a9e2a02573899ea6ee8e1e5fd",
"aarch64-unknown-linux-musl-0.14.13": "25941b777ff712f4d9473d26c1b875034214a3d5de20ea99b2add939dcd0b367",
"arm-unknown-linux-musleabihf-0.14.13": "3d833d451accb334f9cb91141083bbee5b835dcf0b49d14e5ccb13e0b6a7c387",
"armv7-unknown-linux-gnueabihf-0.14.13": "90aa92a6de0f63eacb2d380c324039c101c6097956690fbaec05ed8d922f8766",
"armv7-unknown-linux-musleabihf-0.14.13": "192deb53946b4309c56c1ad7c401ddac7557d0a517da7addfc636f1188bab30d",
"i686-pc-windows-msvc-0.14.13": "4ead4d5fc89a1f02aa97dad944e69306ae4177a689a3818d3575fed11aa994fe",
"i686-unknown-linux-gnu-0.14.13": "a321fc4862748563a663472a4458fe514e34542d0fe8d767d67b1463d585fb2f",
"i686-unknown-linux-musl-0.14.13": "597541ac81d553c2fe97339680bfdb3e926714763ee37f0b5dbcc572d695e376",
"powerpc64-unknown-linux-gnu-0.14.13": "cad4c05db54969608ec292b695397ddaef7452f759b976a60b69d9fefc6c5724",
"powerpc64le-unknown-linux-gnu-0.14.13": "bc7faa37e496ae0198ee7e1c9e8958df3c55025ccf8be175b74533f87626e726",
"riscv64gc-unknown-linux-gnu-0.14.13": "d9c6fd360347b9b0079994246ed08186f64629529e2fd2dc1a97a31da2a214d5",
"s390x-unknown-linux-gnu-0.14.13": "1995227a65970cb2c1aa3b03c9a5418ee1fa56210c4577e6f8e1a14d1e79ed5d",
"x86_64-apple-darwin-0.14.13": "69e424a42ac3a7c6c7032ad96deb757c35c93c848b6ea329a3f4c605e6d89ef9",
"x86_64-pc-windows-msvc-0.14.13": "d2af4376053458f283d74980b49dc0d61d3ef9d9b8684c5b25bd64b73e11634a",
"x86_64-unknown-linux-gnu-0.14.13": "b1e03e4cf245411f184106ba3d973b3902021bf5327e2fde0cfad163aacdc2c1",
"x86_64-unknown-linux-musl-0.14.13": "2fe394f493318551f271277a2228e56b31ca69a4842483e5709af4548f342bc3",
"aarch64-apple-darwin-0.14.11": "c3fab6bcad9cc2f8a342829dd4ea011c54b9671d023b71baac1cbf2b3526cefd",
"aarch64-pc-windows-msvc-0.14.11": "43faade7e8f33a8ffab726aa44ee2b6bc1fd9d51407320db797dcb3dac068461",
"aarch64-unknown-linux-gnu-0.14.11": "e5c018ac042ddeb9c02c3d96b6efe3a0dcd3406ba9bd695253d6111785f7abf6",
"aarch64-unknown-linux-musl-0.14.11": "4779a99b51812b56d56d180174be46ddb2fed98fecaea7565b450d37cff1b8c6",
"arm-unknown-linux-musleabihf-0.14.11": "a400347f59192992b61dc0bb9dfdfe640f8063403112d9e3a70f6275d34ae386",
"armv7-unknown-linux-gnueabihf-0.14.11": "7938729417dcd33b7078ae0a77440cc152bba33518bb095e19cb108c132b2602",
"armv7-unknown-linux-musleabihf-0.14.11": "57da6726050047ff2989554734deb94eb053789fc92c297a1a722a6723106a77",
"i686-pc-windows-msvc-0.14.11": "51bec5b8cdc4008fb76e11eba4cbb62b8617ff242d316465fa2247dabfd2dcb9",
"i686-unknown-linux-gnu-0.14.11": "9051f2529d36e38b58b03b6e605d77f62b6378d5afe70eba692f9a214794b273",
"i686-unknown-linux-musl-0.14.11": "3f94ba805fd14bd8c088b710c950cd89d9968294fa3cff68a618e50ad9dea73d",
"powerpc64-unknown-linux-gnu-0.14.11": "eb69c9da0285717f39ed25f666a0860d7d6a50359a1de0bf76fba6f83d59e1ea",
"powerpc64le-unknown-linux-gnu-0.14.11": "001b43b7558d32f320fa775c74af0035952a724d323bb5204b6f83017297c6db",
"riscv64gc-unknown-linux-gnu-0.14.11": "8901e1a36846c59a94ef468808e4a1af58f74e9c2830f40e045f5f9e70d6867c",
"s390x-unknown-linux-gnu-0.14.11": "d29ba2740b7735ab20663225dd420acfb0797b29358d902afc7b87ee0f1f4b08",
"x86_64-apple-darwin-0.14.11": "b301d1c04facba1004d180c8fd9ae36d868b780900682c97ecf324015c75f0b3",
"x86_64-pc-windows-msvc-0.14.11": "e254f04e054e095215b8f74d5cdb7288f2d3f226bdc42b35cd44751fc7a55b2d",
"x86_64-unknown-linux-gnu-0.14.11": "b98f19bb2cc99e0ea4de1625fbc43661902a1db45ff49a72e7f4a58cfedaabfb",
"x86_64-unknown-linux-musl-0.14.11": "8e8b7a3f791e0faf3a1728d808133f6f9bd5c1422eccb9956e7e7376ff5404b8",
"aarch64-apple-darwin-0.14.10": "dd0f3ec914604d802658ae0d271ff9d767c117d1702a44222170dd2ffbad8d2c",
"aarch64-pc-windows-msvc-0.14.10": "a5b5bb9525a47dfff0ce8ad31546549b31dc1184f54027517838b1bbc9d81129",
"aarch64-unknown-linux-gnu-0.14.10": "f6c8735bf175d449d79151f6bfe84251770ca6032e86bea0d327bc3789179027",
"aarch64-unknown-linux-musl-0.14.10": "0888883f71199ca3af3569052d0cc1aee8b316390ffe75bc19f9a8047ffd0158",
"arm-unknown-linux-musleabihf-0.14.10": "5102cff6cbed54953d6cd9c9d920a9dd6fbe283e047136a6e9bc732ae14a5cf3",
"armv7-unknown-linux-gnueabihf-0.14.10": "94a3ad56d89c39ed47d4e864a18ea31baf989384840d5e182c3f94d5f35a4c93",
"armv7-unknown-linux-musleabihf-0.14.10": "2a051d384d5d5fa84521f843424454620ff5d22580f90cd882512373c36933b0",
"i686-pc-windows-msvc-0.14.10": "29e7519db7afed48e3729d16289a467acae7c6c34113d50bdd1e7e1077e1c7b5",
"i686-unknown-linux-gnu-0.14.10": "56f98f880933907b809de3180e866e72342971024445144c409a6d0a46237c1a",
"i686-unknown-linux-musl-0.14.10": "0cce7104a85d2891a9f62d9ee2decb942b91888d6156e4e858c1cb350a71a57c",
"powerpc64-unknown-linux-gnu-0.14.10": "7685d9de6c1b139fd767f70310598a79d5b6c613d744a366b2fe99e420d19c32",
"powerpc64le-unknown-linux-gnu-0.14.10": "620476793ed106c1f6bfa15e3b0d7834a55cad048a853d63f0c118b9fb7c7337",
"riscv64gc-unknown-linux-gnu-0.14.10": "922872274af2b681381b46a242e77fa9bf427fa745313e818b89a6246be81d77",
"s390x-unknown-linux-gnu-0.14.10": "da9cf8172369821dfaabfc8861238f565fdbcec1aebe897d900020ce561572de",
"x86_64-apple-darwin-0.14.10": "7d5af84e84a189b49ac235d7970d35588cbed0d087f4237c96e5ac3c392bc6fb",
"x86_64-pc-windows-msvc-0.14.10": "9c3340d322fff7a6dc132b8783ba734f5eaf4c46f7dd8bc828abdf850b3bebe1",
"x86_64-unknown-linux-gnu-0.14.10": "4695e6375b1fa2b9c5f839218d695d8e701cfccb15d3f622b6a6feedb086bffb",
"x86_64-unknown-linux-musl-0.14.10": "e1fac6f2705057f48f3d000694d0f41c95b06e738cf4825315c670f3b9d24933",
"aarch64-apple-darwin-0.14.9": "ea132e6d6af23dbcf21c81d7fd8c5a94ccf16b1fb36a8bc60da971e339301f10",
"aarch64-pc-windows-msvc-0.14.9": "dcc2c8a687b9682ab345418ba2793bc8594ae1f2bdb78af520b363e17cf2e271",
"aarch64-unknown-linux-gnu-0.14.9": "423a07140aca7d007d63a42ff9322c0c2017dfe0ed23efe8bcbc36ed21d1cfd7",
"aarch64-unknown-linux-musl-0.14.9": "9bdedf2e8d6398e193c2b2feccb2b4c9f8d37a6dc87cc0b587340a60e87d14e2",
"arm-unknown-linux-musleabihf-0.14.9": "5d04fe5dac3a625c576f48d441238896d164128ec5ba64c9964e5d9502e92b1e",
"armv7-unknown-linux-gnueabihf-0.14.9": "1404c9aace1216ad5cf8b977be5b967ab507f7245eec7bc9bb3fab80010a7769",
"armv7-unknown-linux-musleabihf-0.14.9": "e90707e761fb9ce528c3728e5e12ddbadd60ad45dbacfb1ab9dff4b308f10ae3",
"i686-pc-windows-msvc-0.14.9": "a7e19280ec509dbefdffd097e29f0ca411cca7196a7272198d022d22d5fad6c3",
"i686-unknown-linux-gnu-0.14.9": "33494807d987983f1a91e486cc6a028364aa3291c96c3784620f75a3f477411a",
"i686-unknown-linux-musl-0.14.9": "816e6fdefd899f2dcca7261dc6575ecac82907b94238569cbfef2b1639680865",
"powerpc64-unknown-linux-gnu-0.14.9": "6786baf11e8b59c29d19c0da127451606837243472797aa5084eecccd9a74445",
"powerpc64le-unknown-linux-gnu-0.14.9": "ba7219c9dce6f2d931d9851ac9623923b3fc5dafeb08c640885c7e33a6074775",
"riscv64gc-unknown-linux-gnu-0.14.9": "8f46292b808c5ce0d72d1a4428e189a641d9f41b3af0b077537ddb7631f48b8d",
"s390x-unknown-linux-gnu-0.14.9": "d795afb56c7f4ba55a7a08eda03bce1fd8b32d71c9cf1741218ac6b5578d8b84",
"x86_64-apple-darwin-0.14.9": "ce980eb4b44a84cbf278686f8cf71a21b353888b29472ca269ffe385ce4f2351",
"x86_64-pc-windows-msvc-0.14.9": "98727a845f01782b78efe1a3f0913aa9ec76c9a24e09aca89e26b3b684ca86a0",
"x86_64-unknown-linux-gnu-0.14.9": "b012ebe5dee8d8c125f4d553fccda058249fbb1c914c17175c6edda14a1fb7da",
"x86_64-unknown-linux-musl-0.14.9": "3bdbdb32f95bcf2c5bc45502a2050f30706f1c205fa0087ee3d4c688f67854fc",
"aarch64-apple-darwin-0.14.8": "4efc019832a6b9225f650ee256d31b2e875021cae662963d533c78b5cf865f52",
"aarch64-pc-windows-msvc-0.14.8": "965217e69f6d43e4df25abeec7b51a5ea014dbec219b9b2866ca37dcd312405e",
"aarch64-unknown-linux-gnu-0.14.8": "9bbce62639bb30abf76202f2ec32c4234498de3c93c21b4c32c99d51c802cc41",
"aarch64-unknown-linux-musl-0.14.8": "0b3464f54fa56f514c29e92bcf05867b914ad6c246e2ddbe4cce5c0700f2a3d9",
"arm-unknown-linux-musleabihf-0.14.8": "5496ae4d581e7f6cdf509f56d33830056d1f8a432aa489bf9e40fc9754fbf1fa",
"armv7-unknown-linux-gnueabihf-0.14.8": "203de1734ffddac18f02e3756ba0c02bd1770665031aba617ccf488ccfe78b25",
"armv7-unknown-linux-musleabihf-0.14.8": "5e424ba3ebc90306f73e05914244245b66b27c3a44dcdf9029d97bfc56131491",
"i686-pc-windows-msvc-0.14.8": "2bdff511119eb9d94e5a240c15bef668c43b0640e61c549b32242d7b04efd062",
"i686-unknown-linux-gnu-0.14.8": "8f0c15e9518d1b9c0423986d3d1045ed5c4005e1037589a6772eee724ec3ba02",
"i686-unknown-linux-musl-0.14.8": "55326d64201ff99dc96e93b23de951c2656825089ee581fc8aee099140d4d310",
"powerpc64-unknown-linux-gnu-0.14.8": "52ffb3434ca8ada1d2703df0c4b929758444c24d9a47a8608a0775ddf6dbfa6c",
"powerpc64le-unknown-linux-gnu-0.14.8": "3a8808f7b02f37e649e1cc1145ad3d2e4d23b4154637525480c7f6536f4152b9",
"riscv64gc-unknown-linux-gnu-0.14.8": "8e6f1f660c1145bfe1b13fe41b7e6f4e829be3351bd536acbd41f91478d8932c",
"s390x-unknown-linux-gnu-0.14.8": "f3ed19ba06face77e21c682846a4e5b3d4d9bfe5132eea86e30a84522b70d2b3",
"x86_64-apple-darwin-0.14.8": "c53af0ba3cbc5e9e8f7768d28a7ff2d0795843e39302891093227bc6df343e94",
"x86_64-pc-windows-msvc-0.14.8": "a837e98f5e6a21222a896f60521f563aea2c686a07cad17da9f5b5f2c4e04f8a",
"x86_64-unknown-linux-gnu-0.14.8": "dce933cd68e3ca69c64c277ce6671dcdee7adeeaa6ac5a15047a4c973b30741f",
"x86_64-unknown-linux-musl-0.14.8": "0f5496a3d2413b3cb85bbf9e4a6f95b5db127ac10989ecb3d8c0c0a0a74a892b",
"aarch64-apple-darwin-0.14.7": "24631da81fe9ce5f4112e8caeb71957e81682e752a563f0a50715735f923e3c4",
"aarch64-pc-windows-msvc-0.14.7": "24ca141d57fcd5bd303ca51af002cb9a815f072d9076b40ec2813835d46c4a82",
"aarch64-unknown-linux-gnu-0.14.7": "8cc84635155dfc11acca297af25ed6c8a30e36146729a90df9e7d348a8fc0a4d",
"aarch64-unknown-linux-musl-0.14.7": "8d429dbc2c308377c33874dc71d4c2388728f0d01c0a5869d2c878d21a6ced87",
"arm-unknown-linux-musleabihf-0.14.7": "3cf1d9fdfd58a113b0b629e0ef2d247bbadbc8deec25724d6dc7d6f6ca7e7304",
"armv7-unknown-linux-gnueabihf-0.14.7": "058f52b31c88056291b0e917ea909eea036570dcdee32af1ce62eacff98c4e2a",
"armv7-unknown-linux-musleabihf-0.14.7": "9dddf78485ba0b5da8d8a73b24332ecf759a4de95ca5700c5141067683b5b615",
"i686-pc-windows-msvc-0.14.7": "46d16810e1a0e7efd5c25efc60b719225c3a8b8a7fb662b61f293eeb62ccafdb",
"i686-unknown-linux-gnu-0.14.7": "29242e501fea264ef4cb03164d9c375e426fad5c298412f64a4d50bc9ea19bc1",
"i686-unknown-linux-musl-0.14.7": "5b1eeea3f27745e7e68b19bd214267aa653ef64c62c25ef4cd8bb57af8477171",
"powerpc64-unknown-linux-gnu-0.14.7": "3cc47bf9943a46839d847746ccae59a3147982c5bf93bdc786fa5279d7d28681",
"powerpc64le-unknown-linux-gnu-0.14.7": "1dabc7d0251f6f11ade20620538daeed1c4d27223576a04ddb2a87adfed2ca11",
"riscv64gc-unknown-linux-gnu-0.14.7": "075232dfa5a03ef399d183879848cdb5d71485639c2a07fc62a27f4d4a68af3d",
"s390x-unknown-linux-gnu-0.14.7": "a83cb05567dd4bb59fa8fd36b8337b21d475dd6f82fe0600a2364f1de6c295c3",
"x86_64-apple-darwin-0.14.7": "c3035811c5354d923f3d7fd6320cfb23de30600f1eb86aa1518bac27c3d7fffd",
"x86_64-pc-windows-msvc-0.14.7": "9a54b82e12574ea068e0914cdb1398993cbf78338c0799b6f9003a783fec779b",
"x86_64-unknown-linux-gnu-0.14.7": "8a545d346b3f6f979574df96b4fb2a983f2568fe200f1c1f690bd2cbdce5ea51",
"x86_64-unknown-linux-musl-0.14.7": "0f6cd59aa2b266758f1083c73f1b8303e3aedde0d953f0e79777faf174d8104f",
"aarch64-apple-darwin-0.14.6": "b2ace677f51d0f2b91ca27d312ac8b069658502049015f4891c16f8864136282",
"aarch64-pc-windows-msvc-0.14.6": "90518b6d16fe8b705c891dcdd77b20ab41da5e042b085aced7bbc647f6f2fdcd",
"aarch64-unknown-linux-gnu-0.14.6": "bf3d592d5f879f072520afaa9c4a76a3ad0f6cf4b7bf7e27fb5d0e728e863f14",
"aarch64-unknown-linux-musl-0.14.6": "4d3c113e59c5fbc31f1def566cebf28732bb45ff6b83df8e142bc1c055b3afa3",
"arm-unknown-linux-musleabihf-0.14.6": "d0a3ed0a773f8e7edc44d63644b952d446dba771fdbb3eefd02853c323373f90",
"armv7-unknown-linux-gnueabihf-0.14.6": "d6b71f6a951963f8dd0f2e099206b0aabf95d9bb49451a607da3e5823b800596",
"armv7-unknown-linux-musleabihf-0.14.6": "a048f1e9a97afe8ac2a63785f5733d5736b9d6e6767b4d5b6434916d38f888e1",
"i686-pc-windows-msvc-0.14.6": "c7b76311939f0ed7fbf4fe1be7c6c96c05b26a73e500650dff2586cbbe5c0b45",
"i686-unknown-linux-gnu-0.14.6": "fe3fbd9227a7f2c1277306c31cf7627ab1dc61c25fa30854d66d8db138a74872",
"i686-unknown-linux-musl-0.14.6": "5a184f4c1e6a665f56f980464dd87eeb75f32e37bf67d195efdaa41bba634a5d",
"powerpc64-unknown-linux-gnu-0.14.6": "fe54fda27408241e9bee7bc5c9740a9a47a87a073ecd3d9bb166c32329c33958",
"powerpc64le-unknown-linux-gnu-0.14.6": "d4296a0f41ed25cbf56a04b04bda7f3661b8be9d3220b89cc342e6cb4e6ee259",
"riscv64gc-unknown-linux-gnu-0.14.6": "e06b714ebb8846421ed6b998beac66a7fd1fad09f7bee89e4e6b671c6e8c3fc3",
"s390x-unknown-linux-gnu-0.14.6": "2ba3e5b6e66d9ba60d6fac9b699f77dd79402c872fc244259db7fc7815180b3d",
"x86_64-apple-darwin-0.14.6": "efe45a6defcf4f1b6de87d56ce94635f53b00f88ddc2fcb8e25e2c4e3a61261c",
"x86_64-pc-windows-msvc-0.14.6": "3a8bb3499484c7f9e86060c89d0e61c47dac7f9fb4d7fe46bc59dca400b322c9",
"x86_64-unknown-linux-gnu-0.14.6": "b0ee141ada4749c7ee16ba21465b4ef035455b495aa3ab951bbcb9bde9f4d001",
"x86_64-unknown-linux-musl-0.14.6": "7ef1743875c7c469cc1c4bb6da6a9bbff3f3a7b89a75632d6cd2944ede470a5e",
"aarch64-apple-darwin-0.14.5": "c07616663ac63792c16269d6798a47fb1f45b29997706178d60e90da698a9970",
"aarch64-pc-windows-msvc-0.14.5": "c09ff1cdaafd6cc3733586dc517bfd3e0d0ddc39360c90343ab7b610c8ade130",
"aarch64-unknown-linux-gnu-0.14.5": "da5692a609e728dd1773aebf087113c5c3561aafdfa9fe574b30de9438c60a23",
"aarch64-unknown-linux-musl-0.14.5": "ebef9d7119119e67b1065a5a35128148898e1581037e7d68c3aa9223983af0a4",
"arm-unknown-linux-musleabihf-0.14.5": "00c937e44474d21878bdb2e9e214d74005fddc8c43a4c76d8e71a9085c7cc6af",
"armv7-unknown-linux-gnueabihf-0.14.5": "aa54fcaba5d7029180139491213f504e5789b36e0017c0a67aff7b6ec0c04c45",
"armv7-unknown-linux-musleabihf-0.14.5": "5e06c211d5dc4e85eeafd29e87af4aed690a41b02f9296537d4d4ebe62fded9a",
"i686-pc-windows-msvc-0.14.5": "6b54cf61dad3276995d157d000f501917f1aa54735391150bf93282329253c92",
"i686-unknown-linux-gnu-0.14.5": "81aadc05c630e7e7c4ca68c510f5ce462e0645fa03650ca3f844cb4d9b2efc27",
"i686-unknown-linux-musl-0.14.5": "556c63188c8bc7e253a4eaef8727857a808a81af6fef02f76f27a71e800554a0",
"powerpc64-unknown-linux-gnu-0.14.5": "df85081b5e776d934188f9eb67a1d2d17dba1e986f7e76668ffeed6e541858d1",
"powerpc64le-unknown-linux-gnu-0.14.5": "4a02aa69a73bc5d9e579b08f5081e0fec412e353bacafa6b4a0705d89b3486e6",
"riscv64gc-unknown-linux-gnu-0.14.5": "a1a20ddca6e776a8f38d533da4aa1eeb543ecbfa08813c482e3cb7d5ef0c39fc",
"s390x-unknown-linux-gnu-0.14.5": "242bf290de417e8c9e8ca5c844be933e611cca3f3b301dc8537f72d051ceb3b9",
"x86_64-apple-darwin-0.14.5": "d7285770c5098be00c9b4ff099d6ef7f8b2a54b4019c9507b628ee9f0d404c06",
"x86_64-pc-windows-msvc-0.14.5": "9b998bf1a790a18b829fab3368ee7404a8f1f2cec2acb650aa1fd1b74962d023",
"x86_64-unknown-linux-gnu-0.14.5": "5bc52346f81098e42beecd622f49c4336a5361eb38b7b51d466b0a9647e99e33",
"x86_64-unknown-linux-musl-0.14.5": "69ddecf374a4f53eeda238399614ed6f92c5e75fe04436c604fb78435d5658eb",
"aarch64-apple-darwin-0.14.4": "ab26cd2b03d5b2ec42dc7ac1886a29055eb2003aa2db14b26c7091c7cd6b4c68",
"aarch64-pc-windows-msvc-0.14.4": "270773b34836e5b546d3ec9fe3b6cab4057881eff69828566f230baffff7634a",
"aarch64-unknown-linux-gnu-0.14.4": "8bf03ef4bb8ce42321ea0e59a505739b29b18d85b1d4f220736e242248b7da31",
"aarch64-unknown-linux-musl-0.14.4": "c77b72e565e9044eddce02e71f9214edea045047b786bb2bc973a6d8f94fb13e",
"arm-unknown-linux-musleabihf-0.14.4": "5211b338bf1c48faa2fc045bd68c56b50e1e3d898f2255c39a3a7040033738f1",
"armv7-unknown-linux-gnueabihf-0.14.4": "62e05c9a4571ea1aca80db377b4a11dd2325100db9ca0d7db16b61b87cb3d0b5",
"armv7-unknown-linux-musleabihf-0.14.4": "b20725ed5be925b58120172b2395bdbea9857bc562c3a7a7e47a4d9281bafb7f",
"i686-pc-windows-msvc-0.14.4": "bbe517649a5c6134b424b3065db7b5dcfaed72c2f5e848ec87cb2b33be7a133f",
"i686-unknown-linux-gnu-0.14.4": "a68939e63f7b384351172ff1535d37e73ecf81a94b0c89f369f3f41aabcccede",
"i686-unknown-linux-musl-0.14.4": "ff05a300bbb06211ec9cc43daec05da197ed116b5f6a5ea9ac8fc80fc00df39f",
"powerpc64-unknown-linux-gnu-0.14.4": "394eae2ad3485eb3530db3e9b51feacbf0b03e63ec8e93f2134a137c59da4abe",
"powerpc64le-unknown-linux-gnu-0.14.4": "b12b41763fa3c1068d2378669fa2740b11e0dd3dea3f667f732241a25fb06c9f",
"riscv64gc-unknown-linux-gnu-0.14.4": "c6385274d7a3b1d0c7ed05b36101faf2c7206e8adc0c7c107d32fc8e5d57628c",
"s390x-unknown-linux-gnu-0.14.4": "dcbf1dce38298dccfea7edffb1ea237ab2ccf2ea5dbae6d5b2dc4fe88177b094",
"x86_64-apple-darwin-0.14.4": "041b9429400bfc3aca8402940fe6fa0ec33f9d79e8f50fbfb3063f70b4327fa3",
"x86_64-pc-windows-msvc-0.14.4": "5541af69b1f342d843f8fca6218bd0d5d9064e987d14405a2abf60ce94c615a4",
"x86_64-unknown-linux-gnu-0.14.4": "c9120e68e358eb0f850123537afe18945f9095e9f17967944fd23585fc88bb0b",
"x86_64-unknown-linux-musl-0.14.4": "dcb5b42fd364c9e837b6800886564a891d023c8b87c967224351399cb1cda154",
"aarch64-apple-darwin-0.14.3": "fc4c2c153656bc4082fb6c928fbd6867d5eb932240b663b329365f3f1821fc82",
"aarch64-pc-windows-msvc-0.14.3": "b7ed5d2006b1c43559e78d90e65f2fa1982bec3976de74978485660fcdd67548",
"aarch64-unknown-linux-gnu-0.14.3": "daa9edc586b669079fbe204bf5f5b48ee05c5dac862d2daf5ad72d3c2777834b",
"aarch64-unknown-linux-musl-0.14.3": "571058fe7e3381ad54bec8b3d9d127013e332d822b35978b503722147aa3b9cf",
"arm-unknown-linux-musleabihf-0.14.3": "f5e9b79cea63116ad582ffb514a61a506978762b67859b9e9e9cdee4b2ad065d",
"armv7-unknown-linux-gnueabihf-0.14.3": "07094c107682c58260d652708a0c8b2f3d38bdffd5e7ec9a81785e665154a137",
"armv7-unknown-linux-musleabihf-0.14.3": "edfd2491e25383de77f60aafcbd5451350b2cb6f9af38b6cf5a2e725193333cd",
"i686-pc-windows-msvc-0.14.3": "f46525c0684a220c063c1c1f8d516c8cccab8ec9f62417e17e02cd4c1a138417",
"i686-unknown-linux-gnu-0.14.3": "c7180e275ccaa97eae1528a15a08828cd9aaa15b57d3828f8722b0edd347046d",
"i686-unknown-linux-musl-0.14.3": "60d1db56b1b4064b00f349b5fc8e11f2e63b8fa3bce4679f9c9da91356d6c3f6",
"powerpc64-unknown-linux-gnu-0.14.3": "b9bf7191d023fcdd938e51fa53b63226897a23896f82057fe32fde9df10b1649",
"powerpc64le-unknown-linux-gnu-0.14.3": "c1f5e497fe183dc1e0b6bb984573a0703182b68ac07587add1cbc370957ebd20",
"riscv64gc-unknown-linux-gnu-0.14.3": "909e92469524b80520af17537df55f245d6ba018928bc486fd8418e9983b539f",
"s390x-unknown-linux-gnu-0.14.3": "d8c56807e9827f391e1266bd19e0235fa470a0620cf166975365862e5bf9e908",
"x86_64-apple-darwin-0.14.3": "076e88da3dcb38d3fef61daccc759bf29b605a490143ae707c0e067ebf8d7050",
"x86_64-pc-windows-msvc-0.14.3": "ccc1bd362cca52a7fb7f9ee2cec7317c139ccb86e0964a5c1d4b14efbf2118ff",
"x86_64-unknown-linux-gnu-0.14.3": "cb8a88912aa91a1864ad662c24df4514699ddfcbc52e684218aaf5ac57d7de0d",
"x86_64-unknown-linux-musl-0.14.3": "58fd05427420df7b7b51bc6bbd5a430f38d2dfd63c74660f27625a4632f12532",
"aarch64-apple-darwin-0.14.2": "33225f67ce61188fce91b801ab50a4028f8b0d66abbf81810841dd7d42371e38",
"aarch64-pc-windows-msvc-0.14.2": "4fb68c66c719b337c2364aeb8210326a28b8ae046ef9a9c90407d473264515dd",
"aarch64-unknown-linux-gnu-0.14.2": "a907d6a13120679b7194eb61beace09103f04b90e32cf7c2ac11979e6f618e35",
"aarch64-unknown-linux-musl-0.14.2": "e323e9716661c9e18152aefe62e3fada497c10c9b3ef3095359c31b4df4f866a",
"arm-unknown-linux-musleabihf-0.14.2": "2b3ccfd36718b29e0f5d1dcc10540b61205c72ee1c6a43331e6a97f2a17f12d0",
"armv7-unknown-linux-gnueabihf-0.14.2": "5539a66c2723670dbf54eadf615e106aa038decbc701b9d47f7ed535ac677e1d",
"armv7-unknown-linux-musleabihf-0.14.2": "c59be0daa3144ba317c88dd6cb3af68cff0f8dfbf2f495bebfb5b630d6f4c7cd",
"i686-pc-windows-msvc-0.14.2": "125e2010b28ccb01ed2a4596e3db8d8dc0a46ccba2ee08e6038cc56ebbfbcb96",
"i686-unknown-linux-gnu-0.14.2": "e2accde14cb371ca1b60935028c72138390f552cd77fc8c52a75f28c68eaa963",
"i686-unknown-linux-musl-0.14.2": "d11f67f949e909412c523edcc1944c16dfecde49ed3709bca40631e371300da1",
"powerpc64-unknown-linux-gnu-0.14.2": "99cc0f2cf83a7f82bb4e0db9ff1de8bcc5bf966054c0c82d25e189ee4565b0d5",
"powerpc64le-unknown-linux-gnu-0.14.2": "81ac087a458bcaac7905c9afe84ef58061394a71264e8dd115889be0bc96fc6e",
"riscv64gc-unknown-linux-gnu-0.14.2": "7917eb80fbae72040ad199f634361ce6001bc6225c165caa09c6d983c90692b0",
"s390x-unknown-linux-gnu-0.14.2": "e24bfabe70535ffeedbba74ff6ecdf6c6bb09c5d9bf2c6c902e5540b569d6236",
"x86_64-apple-darwin-0.14.2": "f119057618599e8983bdeed64e949af54f67d7a62464d11de0ba1237619a9990",
"x86_64-pc-windows-msvc-0.14.2": "0a1160f45263cc847acd4b42392bf0484c9420806eeb7f776e1384fb557aeade",
"x86_64-unknown-linux-gnu-0.14.2": "b4457ef6c130165655e0fb91081dbef09011ec41955115aaa22c94f7655c97c2",
"x86_64-unknown-linux-musl-0.14.2": "e5e177a829b370376abb6a1dc9edc8c59ac519ebe64b1366b65e2952fa524a8d",
"aarch64-apple-darwin-0.14.1": "ee12f441b4c14eff354784a52f8a16767573bd6285627cad2ade04551e8a678b",
"aarch64-pc-windows-msvc-0.14.1": "3bd0b34cc645faaf88b4010a639d9b0ec6c313359774ad7e48daaef4ddb3c4f7",
"aarch64-unknown-linux-gnu-0.14.1": "8203922d5f55a04089005184942f2f449f9736a06e96854230ba5991bb91ee9a",
"aarch64-unknown-linux-musl-0.14.1": "ddfc9df5c879a1984fef4e29838e46fa8e979adc3fdab5967f096363427e8790",
"arm-unknown-linux-musleabihf-0.14.1": "a29be1acc5f29ee8cb5a5add223a7ed07e8ffd0f9a78219e115e57041c63b416",
"armv7-unknown-linux-gnueabihf-0.14.1": "dd8ead33fc3158618a29f02d76fd7ff4f6914272b5d94a65e348b8b8c0753d78",
"armv7-unknown-linux-musleabihf-0.14.1": "16d79262e9fc98ceef167577a391d54d9c8a2d8fe90de22266f456bf4644f7e5",
"i686-pc-windows-msvc-0.14.1": "ffe525c5e641f3bef31d9bc6e1e3585f9f796dda1254c15e5a18ef51a91917c3",
"i686-unknown-linux-gnu-0.14.1": "37f10652706cdf1f107c620970bf37591b0be44111614101509f56e596f866b3",
"i686-unknown-linux-musl-0.14.1": "e39c79642ec4e3d95d31a0ae77fb648946f2a639cb3cbf876c0f5e1e2571e94e",
"powerpc64-unknown-linux-gnu-0.14.1": "1ec026aef1c670715d5c197bbf18b4edd81e140fbecee51ed169e05b042c6045",
"powerpc64le-unknown-linux-gnu-0.14.1": "193d66f5ed6e21a46b244118c983ab91628ed65ae542f7345f8e37a8c555bff0",
"riscv64gc-unknown-linux-gnu-0.14.1": "4cbea006f37927abac8c32575212f982b86aaa4f73a32983e4a8934320ef7e9c",
"s390x-unknown-linux-gnu-0.14.1": "5cd7f6e6e2de3b03ada4821de444e92bb87ce5c57981c1d8ba8128dc62f02668",
"x86_64-apple-darwin-0.14.1": "7fda94bd7fc6114eecb67b858a8c93f1b4aa658aa1f5e887b37a2b95bf6f26a7",
"x86_64-pc-windows-msvc-0.14.1": "ab0bc1876a16e1afa4177fe9f58d568fbe85921efb253395bd03d01e1e2c467d",
"x86_64-unknown-linux-gnu-0.14.1": "8798f5892db7dc70a3250f89d3ef613f87f1fa5fdb4242921ee31427daf78e87",
"x86_64-unknown-linux-musl-0.14.1": "ec5b8eb318ff9e2412988420eb78f965aca02e9f67df34eeea7609e0c5a0fb7f",
"aarch64-apple-darwin-0.14.0": "0b7c193d5c45eda02226720eb75239fabeca995d5a0eb3830fd2973caa3030ec",
"aarch64-pc-windows-msvc-0.14.0": "a882d2ec2235c13f63453fde682775d2e1f8a44ccfd1af9e031255b051e30e70",
"aarch64-unknown-linux-gnu-0.14.0": "60fc3b464a723456ba1bc8cd91d29806753c885f72e26ac67b718cee6b35aaca",
@@ -30846,7 +31080,6 @@ Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.updateChecksums = updateChecksums;
const node_fs_1 = __nccwpck_require__(3024);
const tc = __importStar(__nccwpck_require__(3472));
const retry_1 = __nccwpck_require__(5931);
const known_checksums_1 = __nccwpck_require__(2764);
async function updateChecksums(filePath, downloadUrls) {
await node_fs_1.promises.rm(filePath);
@@ -30896,21 +31129,8 @@ async function getOrDownloadChecksum(key, downloadUrl) {
return checksum;
}
async function downloadAssetContent(downloadUrl) {
return await (0, retry_1.withRetry)(async () => {
try {
const downloadPath = await tc.downloadTool(downloadUrl);
return await node_fs_1.promises.readFile(downloadPath, "utf8");
}
catch (error) {
const err = error;
if ((0, retry_1.isRetryableError)(err)) {
throw new retry_1.RetryableError(`Failed to download checksum file: ${err.message}`, err);
}
else {
throw new retry_1.NonRetryableError(`Failed to download checksum file: ${err.message}`, err);
}
}
}, { maxRetries: 3, timeoutMs: 30000 }, "download checksum file");
}
@@ -30962,29 +31182,15 @@ const plugin_rest_endpoint_methods_1 = __nccwpck_require__(9210);
const semver = __importStar(__nccwpck_require__(9318));
const update_known_checksums_1 = __nccwpck_require__(6182);
const constants_1 = __nccwpck_require__(6156);
const retry_1 = __nccwpck_require__(5931);
const PaginatingOctokit = core_1.Octokit.plugin(plugin_paginate_rest_1.paginateRest, plugin_rest_endpoint_methods_1.restEndpointMethods);
async function run() {
const checksumFilePath = process.argv.slice(2)[0];
const github_token = process.argv.slice(2)[1];
const response = await (0, retry_1.withRetry)(async () => {
try {
const octokit = new PaginatingOctokit({ auth: github_token });
return await octokit.paginate(octokit.rest.repos.listReleases, {
const response = await octokit.paginate(octokit.rest.repos.listReleases, {
owner: constants_1.OWNER,
repo: constants_1.REPO,
});
}
catch (error) {
const err = error;
if ((0, retry_1.isRetryableError)(err)) {
throw new retry_1.RetryableError(`Failed to list releases for checksum update: ${err.message}`, err);
}
else {
throw new retry_1.NonRetryableError(`Failed to list releases for checksum update: ${err.message}`, err);
}
}
}, { maxRetries: 3, timeoutMs: 60000 }, "list releases for checksum update");
const downloadUrls = response.flatMap((release) => release.assets
.filter((asset) => asset.name.endsWith(".sha256"))
.map((asset) => asset.browser_download_url));
@@ -31011,175 +31217,6 @@ exports.OWNER = "astral-sh";
exports.TOOL_CACHE_NAME = "ruff";
/***/ }),
/***/ 5931:
/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) {
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.NonRetryableError = exports.RetryableError = exports.DEFAULT_RETRY_OPTIONS = void 0;
exports.withRetry = withRetry;
exports.withTimeout = withTimeout;
exports.isRetryableError = isRetryableError;
exports.wrapWithRetryLogic = wrapWithRetryLogic;
const core = __importStar(__nccwpck_require__(7484));
exports.DEFAULT_RETRY_OPTIONS = {
backoffMultiplier: 2,
initialDelayMs: 1000,
maxDelayMs: 10000,
maxRetries: 3,
timeoutMs: 30000, // 30 second timeout
};
class RetryableError extends Error {
cause;
constructor(message, cause) {
super(message);
this.cause = cause;
this.name = "RetryableError";
}
}
exports.RetryableError = RetryableError;
class NonRetryableError extends Error {
cause;
constructor(message, cause) {
super(message);
this.cause = cause;
this.name = "NonRetryableError";
}
}
exports.NonRetryableError = NonRetryableError;
async function withRetry(operation, options = {}, operationName = "operation") {
const opts = { ...exports.DEFAULT_RETRY_OPTIONS, ...options };
let lastError;
for (let attempt = 0; attempt <= opts.maxRetries; attempt++) {
try {
if (attempt > 0) {
const delay = Math.min(opts.initialDelayMs * opts.backoffMultiplier ** (attempt - 1), opts.maxDelayMs);
core.info(`Retrying ${operationName} (attempt ${attempt + 1}/${opts.maxRetries + 1}) after ${delay}ms delay...`);
await sleep(delay);
}
// Wrap operation with timeout if specified
if (opts.timeoutMs) {
return await withTimeout(operation(), opts.timeoutMs, operationName);
}
else {
return await operation();
}
}
catch (error) {
lastError = error;
// Don't retry on non-retryable errors
if (lastError instanceof NonRetryableError) {
core.debug(`Non-retryable error in ${operationName}: ${lastError.message}`);
throw lastError.cause || lastError;
}
// Log the error for debugging
core.debug(`Attempt ${attempt + 1} failed for ${operationName}: ${lastError.message}`);
// If this was the last attempt, throw the error
if (attempt === opts.maxRetries) {
core.error(`${operationName} failed after ${opts.maxRetries + 1} attempts. Last error: ${lastError.message}`);
throw lastError;
}
}
}
throw lastError || new Error(`${operationName} failed for unknown reason`);
}
async function withTimeout(promise, timeoutMs, operationName = "operation") {
const timeoutPromise = new Promise((_, reject) => {
setTimeout(() => {
reject(new RetryableError(`${operationName} timed out after ${timeoutMs}ms`));
}, timeoutMs);
});
return Promise.race([promise, timeoutPromise]);
}
function sleep(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
function isRetryableError(error) {
const message = error.message.toLowerCase();
// Network-related errors that should be retried
const retryableMessages = [
"connect timeout",
"connection timeout",
"timeout",
"econnreset",
"econnrefused",
"enotfound",
"network error",
"request timeout",
"socket timeout",
"fetch failed",
"connect etimedout",
];
// HTTP status codes that should be retried
const retryableStatusCodes = [408, 429, 500, 502, 503, 504];
// Check for retryable messages
if (retryableMessages.some((msg) => message.includes(msg))) {
return true;
}
// Check for HTTP status codes in error message
const statusMatch = message.match(/status.*?(\d{3})/);
if (statusMatch) {
const statusCode = parseInt(statusMatch[1], 10);
if (retryableStatusCodes.includes(statusCode)) {
return true;
}
}
return false;
}
function wrapWithRetryLogic(operation, operationName, options = {}) {
return async () => {
try {
return await withRetry(operation, options, operationName);
}
catch (error) {
const err = error;
if (isRetryableError(err)) {
throw new RetryableError(`${operationName} failed: ${err.message}`, err);
}
else {
throw new NonRetryableError(`${operationName} failed: ${err.message}`, err);
}
}
};
}
/***/ }),
/***/ 2613:
+12
View File
@@ -0,0 +1,12 @@
/** @type {import('ts-jest').JestConfigWithTsJest} */
module.exports = {
collectCoverageFrom: ["src/**/*.ts", "!src/**/*.d.ts"],
moduleFileExtensions: ["ts", "js"],
preset: "ts-jest",
roots: ["<rootDir>/src"],
testEnvironment: "node",
testMatch: ["**/*.test.ts"],
transform: {
"^.+\\.ts$": "ts-jest",
},
};
+3849 -62
View File
File diff suppressed because it is too large Load Diff
+16 -7
View File
@@ -10,13 +10,19 @@
"package": "ncc build -o dist/ruff-action src/ruff-action.ts && ncc build -o dist/update-known-checksums src/update-known-checksums.ts",
"act": "act pull_request -W .github/workflows/test.yml --container-architecture linux/amd64 -s GITHUB_TOKEN=\"$(gh auth token)\"",
"update-known-checksums": "RUNNER_TEMP=known_checksums node dist/update-known-checksums/index.js src/download/checksum/known-checksums.ts \"$(gh auth token)\"",
"all": "npm install && npm run build && npm run check && npm run package"
"test": "jest",
"all": "npm ci --ignore-scripts && npm run build && npm run check && npm run test && npm run package"
},
"repository": {
"type": "git",
"url": "git+https://github.com/astral-sh/ruff-action.git"
},
"keywords": ["actions", "python", "ruff", "action"],
"keywords": [
"actions",
"python",
"ruff",
"action"
],
"author": "@eifinger",
"license": "Apache-2.0",
"dependencies": {
@@ -26,16 +32,19 @@
"@octokit/core": "^7.0.3",
"@octokit/plugin-paginate-rest": "^13.1.1",
"@octokit/plugin-rest-endpoint-methods": "^16.0.0",
"@renovatebot/pep440": "^4.1.0",
"smol-toml": "^1.4.1"
"@renovatebot/pep440": "^4.2.1",
"smol-toml": "^1.6.0"
},
"devDependencies": {
"@biomejs/biome": "2.1.4",
"@biomejs/biome": "2.3.2",
"@types/jest": "^29.5.14",
"@types/js-yaml": "^4.0.9",
"@types/node": "^24.2.1",
"@types/semver": "^7.7.0",
"@types/node": "^24.10.9",
"@types/semver": "^7.7.1",
"@vercel/ncc": "^0.38.3",
"jest": "^29.7.0",
"js-yaml": "^4.1.0",
"ts-jest": "^29.2.5",
"typescript": "^5.9.2"
}
}
+468
View File
@@ -1,5 +1,473 @@
// AUTOGENERATED_DO_NOT_EDIT
export const KNOWN_CHECKSUMS: { [key: string]: string } = {
"aarch64-apple-darwin-0.14.14":
"76a9b0ebe57d0eee56940dbe0b62462578d1369cca8314ed0d2a6f2102292d4f",
"aarch64-pc-windows-msvc-0.14.14":
"449982699657bd68d170440dad958281b030bc05865fe012d043cd225e78eb79",
"aarch64-unknown-linux-gnu-0.14.14":
"1eee1ce3467fb5f348738bb5e4598859b55816a79c3cd6a26ca0dae03d7e2672",
"aarch64-unknown-linux-musl-0.14.14":
"a4d7302aa201a6f8e71dfa217cd8273fddd4e434a93ee3b4b07047fd7a684ac1",
"arm-unknown-linux-musleabihf-0.14.14":
"c225db82587780d1675e220db02c5209f406b29afb0a525628e11ffaca537068",
"armv7-unknown-linux-gnueabihf-0.14.14":
"cdc9596d6317e6cb32fbf3fd6c0e5817f96676b215957e6583db28abf4a15427",
"armv7-unknown-linux-musleabihf-0.14.14":
"0f1938426c50500bac09a09df5396aa19d6ce9f01a3a18a531dfaee5cc0d93e8",
"i686-pc-windows-msvc-0.14.14":
"4f6af9d82acae3d1308c55b0fa51b84d57eafc380aedf97a53a32314118c9a71",
"i686-unknown-linux-gnu-0.14.14":
"5ceb5e2f1906d85e444cb71503379e14d96ded423bd68906f1a539b78d9fc2c3",
"i686-unknown-linux-musl-0.14.14":
"878cebcaf3481295d22a1274cea94ec050455917669ccecac586dcfe6b4a557e",
"powerpc64-unknown-linux-gnu-0.14.14":
"e01a6db6bbf15db82052269887fb49e6be79923d188f1f60ed74f93b6b9a90d4",
"powerpc64le-unknown-linux-gnu-0.14.14":
"6048f270a46cce01228a53fde14fa6182a99d9e99169d7c252f706d7ba2a4845",
"riscv64gc-unknown-linux-gnu-0.14.14":
"6eca650195a22c0a568adc923b645b6317dad3ecc8a3d5c02c08768d6b333393",
"s390x-unknown-linux-gnu-0.14.14":
"dbde3ba91f84d8c183ed49bca0790777285d21381ad64a290584bd19038b83a4",
"x86_64-apple-darwin-0.14.14":
"749396c675c6f07205be6c4ef89e2e95123d790062d681059a355030e9d7d119",
"x86_64-pc-windows-msvc-0.14.14":
"81bfeed34f15296e6c81ecea912b6fff4430b957de8a1181ce9365434e3d6744",
"x86_64-unknown-linux-gnu-0.14.14":
"9876634f799d933bdaa1de864f47d26f898b2e20aa8f4f85d63235c3a231068d",
"x86_64-unknown-linux-musl-0.14.14":
"55a1ee65f5ac9416cc40f99c2df62f0d4525d40369fe371caff945c495174d57",
"aarch64-apple-darwin-0.14.13":
"067d1a90da8add55614eff91990425883a092d8279d9e503258ff8be0f8e9c18",
"aarch64-pc-windows-msvc-0.14.13":
"f7b5b9740ae893ac6abe9b9f68865073ffb9146a6f352ba9718d53b102ad02ef",
"aarch64-unknown-linux-gnu-0.14.13":
"84ce8fe1ef9b2eba018ba396fd018ac2bc22865a9e2a02573899ea6ee8e1e5fd",
"aarch64-unknown-linux-musl-0.14.13":
"25941b777ff712f4d9473d26c1b875034214a3d5de20ea99b2add939dcd0b367",
"arm-unknown-linux-musleabihf-0.14.13":
"3d833d451accb334f9cb91141083bbee5b835dcf0b49d14e5ccb13e0b6a7c387",
"armv7-unknown-linux-gnueabihf-0.14.13":
"90aa92a6de0f63eacb2d380c324039c101c6097956690fbaec05ed8d922f8766",
"armv7-unknown-linux-musleabihf-0.14.13":
"192deb53946b4309c56c1ad7c401ddac7557d0a517da7addfc636f1188bab30d",
"i686-pc-windows-msvc-0.14.13":
"4ead4d5fc89a1f02aa97dad944e69306ae4177a689a3818d3575fed11aa994fe",
"i686-unknown-linux-gnu-0.14.13":
"a321fc4862748563a663472a4458fe514e34542d0fe8d767d67b1463d585fb2f",
"i686-unknown-linux-musl-0.14.13":
"597541ac81d553c2fe97339680bfdb3e926714763ee37f0b5dbcc572d695e376",
"powerpc64-unknown-linux-gnu-0.14.13":
"cad4c05db54969608ec292b695397ddaef7452f759b976a60b69d9fefc6c5724",
"powerpc64le-unknown-linux-gnu-0.14.13":
"bc7faa37e496ae0198ee7e1c9e8958df3c55025ccf8be175b74533f87626e726",
"riscv64gc-unknown-linux-gnu-0.14.13":
"d9c6fd360347b9b0079994246ed08186f64629529e2fd2dc1a97a31da2a214d5",
"s390x-unknown-linux-gnu-0.14.13":
"1995227a65970cb2c1aa3b03c9a5418ee1fa56210c4577e6f8e1a14d1e79ed5d",
"x86_64-apple-darwin-0.14.13":
"69e424a42ac3a7c6c7032ad96deb757c35c93c848b6ea329a3f4c605e6d89ef9",
"x86_64-pc-windows-msvc-0.14.13":
"d2af4376053458f283d74980b49dc0d61d3ef9d9b8684c5b25bd64b73e11634a",
"x86_64-unknown-linux-gnu-0.14.13":
"b1e03e4cf245411f184106ba3d973b3902021bf5327e2fde0cfad163aacdc2c1",
"x86_64-unknown-linux-musl-0.14.13":
"2fe394f493318551f271277a2228e56b31ca69a4842483e5709af4548f342bc3",
"aarch64-apple-darwin-0.14.11":
"c3fab6bcad9cc2f8a342829dd4ea011c54b9671d023b71baac1cbf2b3526cefd",
"aarch64-pc-windows-msvc-0.14.11":
"43faade7e8f33a8ffab726aa44ee2b6bc1fd9d51407320db797dcb3dac068461",
"aarch64-unknown-linux-gnu-0.14.11":
"e5c018ac042ddeb9c02c3d96b6efe3a0dcd3406ba9bd695253d6111785f7abf6",
"aarch64-unknown-linux-musl-0.14.11":
"4779a99b51812b56d56d180174be46ddb2fed98fecaea7565b450d37cff1b8c6",
"arm-unknown-linux-musleabihf-0.14.11":
"a400347f59192992b61dc0bb9dfdfe640f8063403112d9e3a70f6275d34ae386",
"armv7-unknown-linux-gnueabihf-0.14.11":
"7938729417dcd33b7078ae0a77440cc152bba33518bb095e19cb108c132b2602",
"armv7-unknown-linux-musleabihf-0.14.11":
"57da6726050047ff2989554734deb94eb053789fc92c297a1a722a6723106a77",
"i686-pc-windows-msvc-0.14.11":
"51bec5b8cdc4008fb76e11eba4cbb62b8617ff242d316465fa2247dabfd2dcb9",
"i686-unknown-linux-gnu-0.14.11":
"9051f2529d36e38b58b03b6e605d77f62b6378d5afe70eba692f9a214794b273",
"i686-unknown-linux-musl-0.14.11":
"3f94ba805fd14bd8c088b710c950cd89d9968294fa3cff68a618e50ad9dea73d",
"powerpc64-unknown-linux-gnu-0.14.11":
"eb69c9da0285717f39ed25f666a0860d7d6a50359a1de0bf76fba6f83d59e1ea",
"powerpc64le-unknown-linux-gnu-0.14.11":
"001b43b7558d32f320fa775c74af0035952a724d323bb5204b6f83017297c6db",
"riscv64gc-unknown-linux-gnu-0.14.11":
"8901e1a36846c59a94ef468808e4a1af58f74e9c2830f40e045f5f9e70d6867c",
"s390x-unknown-linux-gnu-0.14.11":
"d29ba2740b7735ab20663225dd420acfb0797b29358d902afc7b87ee0f1f4b08",
"x86_64-apple-darwin-0.14.11":
"b301d1c04facba1004d180c8fd9ae36d868b780900682c97ecf324015c75f0b3",
"x86_64-pc-windows-msvc-0.14.11":
"e254f04e054e095215b8f74d5cdb7288f2d3f226bdc42b35cd44751fc7a55b2d",
"x86_64-unknown-linux-gnu-0.14.11":
"b98f19bb2cc99e0ea4de1625fbc43661902a1db45ff49a72e7f4a58cfedaabfb",
"x86_64-unknown-linux-musl-0.14.11":
"8e8b7a3f791e0faf3a1728d808133f6f9bd5c1422eccb9956e7e7376ff5404b8",
"aarch64-apple-darwin-0.14.10":
"dd0f3ec914604d802658ae0d271ff9d767c117d1702a44222170dd2ffbad8d2c",
"aarch64-pc-windows-msvc-0.14.10":
"a5b5bb9525a47dfff0ce8ad31546549b31dc1184f54027517838b1bbc9d81129",
"aarch64-unknown-linux-gnu-0.14.10":
"f6c8735bf175d449d79151f6bfe84251770ca6032e86bea0d327bc3789179027",
"aarch64-unknown-linux-musl-0.14.10":
"0888883f71199ca3af3569052d0cc1aee8b316390ffe75bc19f9a8047ffd0158",
"arm-unknown-linux-musleabihf-0.14.10":
"5102cff6cbed54953d6cd9c9d920a9dd6fbe283e047136a6e9bc732ae14a5cf3",
"armv7-unknown-linux-gnueabihf-0.14.10":
"94a3ad56d89c39ed47d4e864a18ea31baf989384840d5e182c3f94d5f35a4c93",
"armv7-unknown-linux-musleabihf-0.14.10":
"2a051d384d5d5fa84521f843424454620ff5d22580f90cd882512373c36933b0",
"i686-pc-windows-msvc-0.14.10":
"29e7519db7afed48e3729d16289a467acae7c6c34113d50bdd1e7e1077e1c7b5",
"i686-unknown-linux-gnu-0.14.10":
"56f98f880933907b809de3180e866e72342971024445144c409a6d0a46237c1a",
"i686-unknown-linux-musl-0.14.10":
"0cce7104a85d2891a9f62d9ee2decb942b91888d6156e4e858c1cb350a71a57c",
"powerpc64-unknown-linux-gnu-0.14.10":
"7685d9de6c1b139fd767f70310598a79d5b6c613d744a366b2fe99e420d19c32",
"powerpc64le-unknown-linux-gnu-0.14.10":
"620476793ed106c1f6bfa15e3b0d7834a55cad048a853d63f0c118b9fb7c7337",
"riscv64gc-unknown-linux-gnu-0.14.10":
"922872274af2b681381b46a242e77fa9bf427fa745313e818b89a6246be81d77",
"s390x-unknown-linux-gnu-0.14.10":
"da9cf8172369821dfaabfc8861238f565fdbcec1aebe897d900020ce561572de",
"x86_64-apple-darwin-0.14.10":
"7d5af84e84a189b49ac235d7970d35588cbed0d087f4237c96e5ac3c392bc6fb",
"x86_64-pc-windows-msvc-0.14.10":
"9c3340d322fff7a6dc132b8783ba734f5eaf4c46f7dd8bc828abdf850b3bebe1",
"x86_64-unknown-linux-gnu-0.14.10":
"4695e6375b1fa2b9c5f839218d695d8e701cfccb15d3f622b6a6feedb086bffb",
"x86_64-unknown-linux-musl-0.14.10":
"e1fac6f2705057f48f3d000694d0f41c95b06e738cf4825315c670f3b9d24933",
"aarch64-apple-darwin-0.14.9":
"ea132e6d6af23dbcf21c81d7fd8c5a94ccf16b1fb36a8bc60da971e339301f10",
"aarch64-pc-windows-msvc-0.14.9":
"dcc2c8a687b9682ab345418ba2793bc8594ae1f2bdb78af520b363e17cf2e271",
"aarch64-unknown-linux-gnu-0.14.9":
"423a07140aca7d007d63a42ff9322c0c2017dfe0ed23efe8bcbc36ed21d1cfd7",
"aarch64-unknown-linux-musl-0.14.9":
"9bdedf2e8d6398e193c2b2feccb2b4c9f8d37a6dc87cc0b587340a60e87d14e2",
"arm-unknown-linux-musleabihf-0.14.9":
"5d04fe5dac3a625c576f48d441238896d164128ec5ba64c9964e5d9502e92b1e",
"armv7-unknown-linux-gnueabihf-0.14.9":
"1404c9aace1216ad5cf8b977be5b967ab507f7245eec7bc9bb3fab80010a7769",
"armv7-unknown-linux-musleabihf-0.14.9":
"e90707e761fb9ce528c3728e5e12ddbadd60ad45dbacfb1ab9dff4b308f10ae3",
"i686-pc-windows-msvc-0.14.9":
"a7e19280ec509dbefdffd097e29f0ca411cca7196a7272198d022d22d5fad6c3",
"i686-unknown-linux-gnu-0.14.9":
"33494807d987983f1a91e486cc6a028364aa3291c96c3784620f75a3f477411a",
"i686-unknown-linux-musl-0.14.9":
"816e6fdefd899f2dcca7261dc6575ecac82907b94238569cbfef2b1639680865",
"powerpc64-unknown-linux-gnu-0.14.9":
"6786baf11e8b59c29d19c0da127451606837243472797aa5084eecccd9a74445",
"powerpc64le-unknown-linux-gnu-0.14.9":
"ba7219c9dce6f2d931d9851ac9623923b3fc5dafeb08c640885c7e33a6074775",
"riscv64gc-unknown-linux-gnu-0.14.9":
"8f46292b808c5ce0d72d1a4428e189a641d9f41b3af0b077537ddb7631f48b8d",
"s390x-unknown-linux-gnu-0.14.9":
"d795afb56c7f4ba55a7a08eda03bce1fd8b32d71c9cf1741218ac6b5578d8b84",
"x86_64-apple-darwin-0.14.9":
"ce980eb4b44a84cbf278686f8cf71a21b353888b29472ca269ffe385ce4f2351",
"x86_64-pc-windows-msvc-0.14.9":
"98727a845f01782b78efe1a3f0913aa9ec76c9a24e09aca89e26b3b684ca86a0",
"x86_64-unknown-linux-gnu-0.14.9":
"b012ebe5dee8d8c125f4d553fccda058249fbb1c914c17175c6edda14a1fb7da",
"x86_64-unknown-linux-musl-0.14.9":
"3bdbdb32f95bcf2c5bc45502a2050f30706f1c205fa0087ee3d4c688f67854fc",
"aarch64-apple-darwin-0.14.8":
"4efc019832a6b9225f650ee256d31b2e875021cae662963d533c78b5cf865f52",
"aarch64-pc-windows-msvc-0.14.8":
"965217e69f6d43e4df25abeec7b51a5ea014dbec219b9b2866ca37dcd312405e",
"aarch64-unknown-linux-gnu-0.14.8":
"9bbce62639bb30abf76202f2ec32c4234498de3c93c21b4c32c99d51c802cc41",
"aarch64-unknown-linux-musl-0.14.8":
"0b3464f54fa56f514c29e92bcf05867b914ad6c246e2ddbe4cce5c0700f2a3d9",
"arm-unknown-linux-musleabihf-0.14.8":
"5496ae4d581e7f6cdf509f56d33830056d1f8a432aa489bf9e40fc9754fbf1fa",
"armv7-unknown-linux-gnueabihf-0.14.8":
"203de1734ffddac18f02e3756ba0c02bd1770665031aba617ccf488ccfe78b25",
"armv7-unknown-linux-musleabihf-0.14.8":
"5e424ba3ebc90306f73e05914244245b66b27c3a44dcdf9029d97bfc56131491",
"i686-pc-windows-msvc-0.14.8":
"2bdff511119eb9d94e5a240c15bef668c43b0640e61c549b32242d7b04efd062",
"i686-unknown-linux-gnu-0.14.8":
"8f0c15e9518d1b9c0423986d3d1045ed5c4005e1037589a6772eee724ec3ba02",
"i686-unknown-linux-musl-0.14.8":
"55326d64201ff99dc96e93b23de951c2656825089ee581fc8aee099140d4d310",
"powerpc64-unknown-linux-gnu-0.14.8":
"52ffb3434ca8ada1d2703df0c4b929758444c24d9a47a8608a0775ddf6dbfa6c",
"powerpc64le-unknown-linux-gnu-0.14.8":
"3a8808f7b02f37e649e1cc1145ad3d2e4d23b4154637525480c7f6536f4152b9",
"riscv64gc-unknown-linux-gnu-0.14.8":
"8e6f1f660c1145bfe1b13fe41b7e6f4e829be3351bd536acbd41f91478d8932c",
"s390x-unknown-linux-gnu-0.14.8":
"f3ed19ba06face77e21c682846a4e5b3d4d9bfe5132eea86e30a84522b70d2b3",
"x86_64-apple-darwin-0.14.8":
"c53af0ba3cbc5e9e8f7768d28a7ff2d0795843e39302891093227bc6df343e94",
"x86_64-pc-windows-msvc-0.14.8":
"a837e98f5e6a21222a896f60521f563aea2c686a07cad17da9f5b5f2c4e04f8a",
"x86_64-unknown-linux-gnu-0.14.8":
"dce933cd68e3ca69c64c277ce6671dcdee7adeeaa6ac5a15047a4c973b30741f",
"x86_64-unknown-linux-musl-0.14.8":
"0f5496a3d2413b3cb85bbf9e4a6f95b5db127ac10989ecb3d8c0c0a0a74a892b",
"aarch64-apple-darwin-0.14.7":
"24631da81fe9ce5f4112e8caeb71957e81682e752a563f0a50715735f923e3c4",
"aarch64-pc-windows-msvc-0.14.7":
"24ca141d57fcd5bd303ca51af002cb9a815f072d9076b40ec2813835d46c4a82",
"aarch64-unknown-linux-gnu-0.14.7":
"8cc84635155dfc11acca297af25ed6c8a30e36146729a90df9e7d348a8fc0a4d",
"aarch64-unknown-linux-musl-0.14.7":
"8d429dbc2c308377c33874dc71d4c2388728f0d01c0a5869d2c878d21a6ced87",
"arm-unknown-linux-musleabihf-0.14.7":
"3cf1d9fdfd58a113b0b629e0ef2d247bbadbc8deec25724d6dc7d6f6ca7e7304",
"armv7-unknown-linux-gnueabihf-0.14.7":
"058f52b31c88056291b0e917ea909eea036570dcdee32af1ce62eacff98c4e2a",
"armv7-unknown-linux-musleabihf-0.14.7":
"9dddf78485ba0b5da8d8a73b24332ecf759a4de95ca5700c5141067683b5b615",
"i686-pc-windows-msvc-0.14.7":
"46d16810e1a0e7efd5c25efc60b719225c3a8b8a7fb662b61f293eeb62ccafdb",
"i686-unknown-linux-gnu-0.14.7":
"29242e501fea264ef4cb03164d9c375e426fad5c298412f64a4d50bc9ea19bc1",
"i686-unknown-linux-musl-0.14.7":
"5b1eeea3f27745e7e68b19bd214267aa653ef64c62c25ef4cd8bb57af8477171",
"powerpc64-unknown-linux-gnu-0.14.7":
"3cc47bf9943a46839d847746ccae59a3147982c5bf93bdc786fa5279d7d28681",
"powerpc64le-unknown-linux-gnu-0.14.7":
"1dabc7d0251f6f11ade20620538daeed1c4d27223576a04ddb2a87adfed2ca11",
"riscv64gc-unknown-linux-gnu-0.14.7":
"075232dfa5a03ef399d183879848cdb5d71485639c2a07fc62a27f4d4a68af3d",
"s390x-unknown-linux-gnu-0.14.7":
"a83cb05567dd4bb59fa8fd36b8337b21d475dd6f82fe0600a2364f1de6c295c3",
"x86_64-apple-darwin-0.14.7":
"c3035811c5354d923f3d7fd6320cfb23de30600f1eb86aa1518bac27c3d7fffd",
"x86_64-pc-windows-msvc-0.14.7":
"9a54b82e12574ea068e0914cdb1398993cbf78338c0799b6f9003a783fec779b",
"x86_64-unknown-linux-gnu-0.14.7":
"8a545d346b3f6f979574df96b4fb2a983f2568fe200f1c1f690bd2cbdce5ea51",
"x86_64-unknown-linux-musl-0.14.7":
"0f6cd59aa2b266758f1083c73f1b8303e3aedde0d953f0e79777faf174d8104f",
"aarch64-apple-darwin-0.14.6":
"b2ace677f51d0f2b91ca27d312ac8b069658502049015f4891c16f8864136282",
"aarch64-pc-windows-msvc-0.14.6":
"90518b6d16fe8b705c891dcdd77b20ab41da5e042b085aced7bbc647f6f2fdcd",
"aarch64-unknown-linux-gnu-0.14.6":
"bf3d592d5f879f072520afaa9c4a76a3ad0f6cf4b7bf7e27fb5d0e728e863f14",
"aarch64-unknown-linux-musl-0.14.6":
"4d3c113e59c5fbc31f1def566cebf28732bb45ff6b83df8e142bc1c055b3afa3",
"arm-unknown-linux-musleabihf-0.14.6":
"d0a3ed0a773f8e7edc44d63644b952d446dba771fdbb3eefd02853c323373f90",
"armv7-unknown-linux-gnueabihf-0.14.6":
"d6b71f6a951963f8dd0f2e099206b0aabf95d9bb49451a607da3e5823b800596",
"armv7-unknown-linux-musleabihf-0.14.6":
"a048f1e9a97afe8ac2a63785f5733d5736b9d6e6767b4d5b6434916d38f888e1",
"i686-pc-windows-msvc-0.14.6":
"c7b76311939f0ed7fbf4fe1be7c6c96c05b26a73e500650dff2586cbbe5c0b45",
"i686-unknown-linux-gnu-0.14.6":
"fe3fbd9227a7f2c1277306c31cf7627ab1dc61c25fa30854d66d8db138a74872",
"i686-unknown-linux-musl-0.14.6":
"5a184f4c1e6a665f56f980464dd87eeb75f32e37bf67d195efdaa41bba634a5d",
"powerpc64-unknown-linux-gnu-0.14.6":
"fe54fda27408241e9bee7bc5c9740a9a47a87a073ecd3d9bb166c32329c33958",
"powerpc64le-unknown-linux-gnu-0.14.6":
"d4296a0f41ed25cbf56a04b04bda7f3661b8be9d3220b89cc342e6cb4e6ee259",
"riscv64gc-unknown-linux-gnu-0.14.6":
"e06b714ebb8846421ed6b998beac66a7fd1fad09f7bee89e4e6b671c6e8c3fc3",
"s390x-unknown-linux-gnu-0.14.6":
"2ba3e5b6e66d9ba60d6fac9b699f77dd79402c872fc244259db7fc7815180b3d",
"x86_64-apple-darwin-0.14.6":
"efe45a6defcf4f1b6de87d56ce94635f53b00f88ddc2fcb8e25e2c4e3a61261c",
"x86_64-pc-windows-msvc-0.14.6":
"3a8bb3499484c7f9e86060c89d0e61c47dac7f9fb4d7fe46bc59dca400b322c9",
"x86_64-unknown-linux-gnu-0.14.6":
"b0ee141ada4749c7ee16ba21465b4ef035455b495aa3ab951bbcb9bde9f4d001",
"x86_64-unknown-linux-musl-0.14.6":
"7ef1743875c7c469cc1c4bb6da6a9bbff3f3a7b89a75632d6cd2944ede470a5e",
"aarch64-apple-darwin-0.14.5":
"c07616663ac63792c16269d6798a47fb1f45b29997706178d60e90da698a9970",
"aarch64-pc-windows-msvc-0.14.5":
"c09ff1cdaafd6cc3733586dc517bfd3e0d0ddc39360c90343ab7b610c8ade130",
"aarch64-unknown-linux-gnu-0.14.5":
"da5692a609e728dd1773aebf087113c5c3561aafdfa9fe574b30de9438c60a23",
"aarch64-unknown-linux-musl-0.14.5":
"ebef9d7119119e67b1065a5a35128148898e1581037e7d68c3aa9223983af0a4",
"arm-unknown-linux-musleabihf-0.14.5":
"00c937e44474d21878bdb2e9e214d74005fddc8c43a4c76d8e71a9085c7cc6af",
"armv7-unknown-linux-gnueabihf-0.14.5":
"aa54fcaba5d7029180139491213f504e5789b36e0017c0a67aff7b6ec0c04c45",
"armv7-unknown-linux-musleabihf-0.14.5":
"5e06c211d5dc4e85eeafd29e87af4aed690a41b02f9296537d4d4ebe62fded9a",
"i686-pc-windows-msvc-0.14.5":
"6b54cf61dad3276995d157d000f501917f1aa54735391150bf93282329253c92",
"i686-unknown-linux-gnu-0.14.5":
"81aadc05c630e7e7c4ca68c510f5ce462e0645fa03650ca3f844cb4d9b2efc27",
"i686-unknown-linux-musl-0.14.5":
"556c63188c8bc7e253a4eaef8727857a808a81af6fef02f76f27a71e800554a0",
"powerpc64-unknown-linux-gnu-0.14.5":
"df85081b5e776d934188f9eb67a1d2d17dba1e986f7e76668ffeed6e541858d1",
"powerpc64le-unknown-linux-gnu-0.14.5":
"4a02aa69a73bc5d9e579b08f5081e0fec412e353bacafa6b4a0705d89b3486e6",
"riscv64gc-unknown-linux-gnu-0.14.5":
"a1a20ddca6e776a8f38d533da4aa1eeb543ecbfa08813c482e3cb7d5ef0c39fc",
"s390x-unknown-linux-gnu-0.14.5":
"242bf290de417e8c9e8ca5c844be933e611cca3f3b301dc8537f72d051ceb3b9",
"x86_64-apple-darwin-0.14.5":
"d7285770c5098be00c9b4ff099d6ef7f8b2a54b4019c9507b628ee9f0d404c06",
"x86_64-pc-windows-msvc-0.14.5":
"9b998bf1a790a18b829fab3368ee7404a8f1f2cec2acb650aa1fd1b74962d023",
"x86_64-unknown-linux-gnu-0.14.5":
"5bc52346f81098e42beecd622f49c4336a5361eb38b7b51d466b0a9647e99e33",
"x86_64-unknown-linux-musl-0.14.5":
"69ddecf374a4f53eeda238399614ed6f92c5e75fe04436c604fb78435d5658eb",
"aarch64-apple-darwin-0.14.4":
"ab26cd2b03d5b2ec42dc7ac1886a29055eb2003aa2db14b26c7091c7cd6b4c68",
"aarch64-pc-windows-msvc-0.14.4":
"270773b34836e5b546d3ec9fe3b6cab4057881eff69828566f230baffff7634a",
"aarch64-unknown-linux-gnu-0.14.4":
"8bf03ef4bb8ce42321ea0e59a505739b29b18d85b1d4f220736e242248b7da31",
"aarch64-unknown-linux-musl-0.14.4":
"c77b72e565e9044eddce02e71f9214edea045047b786bb2bc973a6d8f94fb13e",
"arm-unknown-linux-musleabihf-0.14.4":
"5211b338bf1c48faa2fc045bd68c56b50e1e3d898f2255c39a3a7040033738f1",
"armv7-unknown-linux-gnueabihf-0.14.4":
"62e05c9a4571ea1aca80db377b4a11dd2325100db9ca0d7db16b61b87cb3d0b5",
"armv7-unknown-linux-musleabihf-0.14.4":
"b20725ed5be925b58120172b2395bdbea9857bc562c3a7a7e47a4d9281bafb7f",
"i686-pc-windows-msvc-0.14.4":
"bbe517649a5c6134b424b3065db7b5dcfaed72c2f5e848ec87cb2b33be7a133f",
"i686-unknown-linux-gnu-0.14.4":
"a68939e63f7b384351172ff1535d37e73ecf81a94b0c89f369f3f41aabcccede",
"i686-unknown-linux-musl-0.14.4":
"ff05a300bbb06211ec9cc43daec05da197ed116b5f6a5ea9ac8fc80fc00df39f",
"powerpc64-unknown-linux-gnu-0.14.4":
"394eae2ad3485eb3530db3e9b51feacbf0b03e63ec8e93f2134a137c59da4abe",
"powerpc64le-unknown-linux-gnu-0.14.4":
"b12b41763fa3c1068d2378669fa2740b11e0dd3dea3f667f732241a25fb06c9f",
"riscv64gc-unknown-linux-gnu-0.14.4":
"c6385274d7a3b1d0c7ed05b36101faf2c7206e8adc0c7c107d32fc8e5d57628c",
"s390x-unknown-linux-gnu-0.14.4":
"dcbf1dce38298dccfea7edffb1ea237ab2ccf2ea5dbae6d5b2dc4fe88177b094",
"x86_64-apple-darwin-0.14.4":
"041b9429400bfc3aca8402940fe6fa0ec33f9d79e8f50fbfb3063f70b4327fa3",
"x86_64-pc-windows-msvc-0.14.4":
"5541af69b1f342d843f8fca6218bd0d5d9064e987d14405a2abf60ce94c615a4",
"x86_64-unknown-linux-gnu-0.14.4":
"c9120e68e358eb0f850123537afe18945f9095e9f17967944fd23585fc88bb0b",
"x86_64-unknown-linux-musl-0.14.4":
"dcb5b42fd364c9e837b6800886564a891d023c8b87c967224351399cb1cda154",
"aarch64-apple-darwin-0.14.3":
"fc4c2c153656bc4082fb6c928fbd6867d5eb932240b663b329365f3f1821fc82",
"aarch64-pc-windows-msvc-0.14.3":
"b7ed5d2006b1c43559e78d90e65f2fa1982bec3976de74978485660fcdd67548",
"aarch64-unknown-linux-gnu-0.14.3":
"daa9edc586b669079fbe204bf5f5b48ee05c5dac862d2daf5ad72d3c2777834b",
"aarch64-unknown-linux-musl-0.14.3":
"571058fe7e3381ad54bec8b3d9d127013e332d822b35978b503722147aa3b9cf",
"arm-unknown-linux-musleabihf-0.14.3":
"f5e9b79cea63116ad582ffb514a61a506978762b67859b9e9e9cdee4b2ad065d",
"armv7-unknown-linux-gnueabihf-0.14.3":
"07094c107682c58260d652708a0c8b2f3d38bdffd5e7ec9a81785e665154a137",
"armv7-unknown-linux-musleabihf-0.14.3":
"edfd2491e25383de77f60aafcbd5451350b2cb6f9af38b6cf5a2e725193333cd",
"i686-pc-windows-msvc-0.14.3":
"f46525c0684a220c063c1c1f8d516c8cccab8ec9f62417e17e02cd4c1a138417",
"i686-unknown-linux-gnu-0.14.3":
"c7180e275ccaa97eae1528a15a08828cd9aaa15b57d3828f8722b0edd347046d",
"i686-unknown-linux-musl-0.14.3":
"60d1db56b1b4064b00f349b5fc8e11f2e63b8fa3bce4679f9c9da91356d6c3f6",
"powerpc64-unknown-linux-gnu-0.14.3":
"b9bf7191d023fcdd938e51fa53b63226897a23896f82057fe32fde9df10b1649",
"powerpc64le-unknown-linux-gnu-0.14.3":
"c1f5e497fe183dc1e0b6bb984573a0703182b68ac07587add1cbc370957ebd20",
"riscv64gc-unknown-linux-gnu-0.14.3":
"909e92469524b80520af17537df55f245d6ba018928bc486fd8418e9983b539f",
"s390x-unknown-linux-gnu-0.14.3":
"d8c56807e9827f391e1266bd19e0235fa470a0620cf166975365862e5bf9e908",
"x86_64-apple-darwin-0.14.3":
"076e88da3dcb38d3fef61daccc759bf29b605a490143ae707c0e067ebf8d7050",
"x86_64-pc-windows-msvc-0.14.3":
"ccc1bd362cca52a7fb7f9ee2cec7317c139ccb86e0964a5c1d4b14efbf2118ff",
"x86_64-unknown-linux-gnu-0.14.3":
"cb8a88912aa91a1864ad662c24df4514699ddfcbc52e684218aaf5ac57d7de0d",
"x86_64-unknown-linux-musl-0.14.3":
"58fd05427420df7b7b51bc6bbd5a430f38d2dfd63c74660f27625a4632f12532",
"aarch64-apple-darwin-0.14.2":
"33225f67ce61188fce91b801ab50a4028f8b0d66abbf81810841dd7d42371e38",
"aarch64-pc-windows-msvc-0.14.2":
"4fb68c66c719b337c2364aeb8210326a28b8ae046ef9a9c90407d473264515dd",
"aarch64-unknown-linux-gnu-0.14.2":
"a907d6a13120679b7194eb61beace09103f04b90e32cf7c2ac11979e6f618e35",
"aarch64-unknown-linux-musl-0.14.2":
"e323e9716661c9e18152aefe62e3fada497c10c9b3ef3095359c31b4df4f866a",
"arm-unknown-linux-musleabihf-0.14.2":
"2b3ccfd36718b29e0f5d1dcc10540b61205c72ee1c6a43331e6a97f2a17f12d0",
"armv7-unknown-linux-gnueabihf-0.14.2":
"5539a66c2723670dbf54eadf615e106aa038decbc701b9d47f7ed535ac677e1d",
"armv7-unknown-linux-musleabihf-0.14.2":
"c59be0daa3144ba317c88dd6cb3af68cff0f8dfbf2f495bebfb5b630d6f4c7cd",
"i686-pc-windows-msvc-0.14.2":
"125e2010b28ccb01ed2a4596e3db8d8dc0a46ccba2ee08e6038cc56ebbfbcb96",
"i686-unknown-linux-gnu-0.14.2":
"e2accde14cb371ca1b60935028c72138390f552cd77fc8c52a75f28c68eaa963",
"i686-unknown-linux-musl-0.14.2":
"d11f67f949e909412c523edcc1944c16dfecde49ed3709bca40631e371300da1",
"powerpc64-unknown-linux-gnu-0.14.2":
"99cc0f2cf83a7f82bb4e0db9ff1de8bcc5bf966054c0c82d25e189ee4565b0d5",
"powerpc64le-unknown-linux-gnu-0.14.2":
"81ac087a458bcaac7905c9afe84ef58061394a71264e8dd115889be0bc96fc6e",
"riscv64gc-unknown-linux-gnu-0.14.2":
"7917eb80fbae72040ad199f634361ce6001bc6225c165caa09c6d983c90692b0",
"s390x-unknown-linux-gnu-0.14.2":
"e24bfabe70535ffeedbba74ff6ecdf6c6bb09c5d9bf2c6c902e5540b569d6236",
"x86_64-apple-darwin-0.14.2":
"f119057618599e8983bdeed64e949af54f67d7a62464d11de0ba1237619a9990",
"x86_64-pc-windows-msvc-0.14.2":
"0a1160f45263cc847acd4b42392bf0484c9420806eeb7f776e1384fb557aeade",
"x86_64-unknown-linux-gnu-0.14.2":
"b4457ef6c130165655e0fb91081dbef09011ec41955115aaa22c94f7655c97c2",
"x86_64-unknown-linux-musl-0.14.2":
"e5e177a829b370376abb6a1dc9edc8c59ac519ebe64b1366b65e2952fa524a8d",
"aarch64-apple-darwin-0.14.1":
"ee12f441b4c14eff354784a52f8a16767573bd6285627cad2ade04551e8a678b",
"aarch64-pc-windows-msvc-0.14.1":
"3bd0b34cc645faaf88b4010a639d9b0ec6c313359774ad7e48daaef4ddb3c4f7",
"aarch64-unknown-linux-gnu-0.14.1":
"8203922d5f55a04089005184942f2f449f9736a06e96854230ba5991bb91ee9a",
"aarch64-unknown-linux-musl-0.14.1":
"ddfc9df5c879a1984fef4e29838e46fa8e979adc3fdab5967f096363427e8790",
"arm-unknown-linux-musleabihf-0.14.1":
"a29be1acc5f29ee8cb5a5add223a7ed07e8ffd0f9a78219e115e57041c63b416",
"armv7-unknown-linux-gnueabihf-0.14.1":
"dd8ead33fc3158618a29f02d76fd7ff4f6914272b5d94a65e348b8b8c0753d78",
"armv7-unknown-linux-musleabihf-0.14.1":
"16d79262e9fc98ceef167577a391d54d9c8a2d8fe90de22266f456bf4644f7e5",
"i686-pc-windows-msvc-0.14.1":
"ffe525c5e641f3bef31d9bc6e1e3585f9f796dda1254c15e5a18ef51a91917c3",
"i686-unknown-linux-gnu-0.14.1":
"37f10652706cdf1f107c620970bf37591b0be44111614101509f56e596f866b3",
"i686-unknown-linux-musl-0.14.1":
"e39c79642ec4e3d95d31a0ae77fb648946f2a639cb3cbf876c0f5e1e2571e94e",
"powerpc64-unknown-linux-gnu-0.14.1":
"1ec026aef1c670715d5c197bbf18b4edd81e140fbecee51ed169e05b042c6045",
"powerpc64le-unknown-linux-gnu-0.14.1":
"193d66f5ed6e21a46b244118c983ab91628ed65ae542f7345f8e37a8c555bff0",
"riscv64gc-unknown-linux-gnu-0.14.1":
"4cbea006f37927abac8c32575212f982b86aaa4f73a32983e4a8934320ef7e9c",
"s390x-unknown-linux-gnu-0.14.1":
"5cd7f6e6e2de3b03ada4821de444e92bb87ce5c57981c1d8ba8128dc62f02668",
"x86_64-apple-darwin-0.14.1":
"7fda94bd7fc6114eecb67b858a8c93f1b4aa658aa1f5e887b37a2b95bf6f26a7",
"x86_64-pc-windows-msvc-0.14.1":
"ab0bc1876a16e1afa4177fe9f58d568fbe85921efb253395bd03d01e1e2c467d",
"x86_64-unknown-linux-gnu-0.14.1":
"8798f5892db7dc70a3250f89d3ef613f87f1fa5fdb4242921ee31427daf78e87",
"x86_64-unknown-linux-musl-0.14.1":
"ec5b8eb318ff9e2412988420eb78f965aca02e9f67df34eeea7609e0c5a0fb7f",
"aarch64-apple-darwin-0.14.0":
"0b7c193d5c45eda02226720eb75239fabeca995d5a0eb3830fd2973caa3030ec",
"aarch64-pc-windows-msvc-0.14.0":
@@ -1,11 +1,5 @@
import { promises as fs } from "node:fs";
import * as tc from "@actions/tool-cache";
import {
isRetryableError,
NonRetryableError,
RetryableError,
withRetry,
} from "../../utils/retry";
import { KNOWN_CHECKSUMS } from "./known-checksums";
export async function updateChecksums(
filePath: string,
@@ -66,27 +60,6 @@ async function getOrDownloadChecksum(
}
async function downloadAssetContent(downloadUrl: string): Promise<string> {
return await withRetry(
async () => {
try {
const downloadPath = await tc.downloadTool(downloadUrl);
return await fs.readFile(downloadPath, "utf8");
} catch (error) {
const err = error as Error;
if (isRetryableError(err)) {
throw new RetryableError(
`Failed to download checksum file: ${err.message}`,
err,
);
} else {
throw new NonRetryableError(
`Failed to download checksum file: ${err.message}`,
err,
);
}
}
},
{ maxRetries: 3, timeoutMs: 30000 },
"download checksum file",
);
}
+10 -114
View File
@@ -9,12 +9,6 @@ import * as pep440 from "@renovatebot/pep440";
import * as semver from "semver";
import { OWNER, REPO, TOOL_CACHE_NAME } from "../utils/constants";
import type { Architecture, Platform } from "../utils/platforms";
import {
isRetryableError,
NonRetryableError,
RetryableError,
withRetry,
} from "../utils/retry";
import { validateChecksum } from "./checksum/checksum";
const PaginatingOctokit = Octokit.plugin(paginateRest, restEndpointMethods);
@@ -49,29 +43,11 @@ export async function downloadVersion(
const downloadUrl = constructDownloadUrl(version, platform, arch);
core.debug(`Downloading ruff from "${downloadUrl}" ...`);
const downloadPath = await withRetry(
async () => {
try {
return await tc.downloadTool(downloadUrl, undefined, githubToken);
} catch (error) {
const err = error as Error;
if (isRetryableError(err)) {
throw new RetryableError(
`Failed to download ruff binary: ${err.message}`,
err,
const downloadPath = await tc.downloadTool(
downloadUrl,
undefined,
githubToken,
);
} else {
throw new NonRetryableError(
`Failed to download ruff binary: ${err.message}`,
err,
);
}
}
},
{ maxRetries: 3, timeoutMs: 60000 }, // 60 second timeout for downloads
"download ruff binary",
);
core.debug(`Downloaded ruff to "${downloadPath}"`);
await validateChecksum(checkSum, downloadPath, arch, platform, version);
@@ -158,70 +134,30 @@ export async function resolveVersion(
}
async function getAvailableVersions(githubToken: string): Promise<string[]> {
return await withRetry(
async () => {
try {
const octokit = new PaginatingOctokit({
auth: githubToken,
});
return await getReleaseTagNames(octokit);
} catch (err) {
const error = err as Error;
if (error.message.includes("Bad credentials")) {
if ((err as Error).message.includes("Bad credentials")) {
core.info(
"No (valid) GitHub token provided. Falling back to anonymous. Requests might be rate limited.",
);
const octokit = new PaginatingOctokit();
return await getReleaseTagNames(octokit);
}
if (isRetryableError(error)) {
throw new RetryableError(
`Failed to get available versions: ${error.message}`,
error,
);
} else {
throw new NonRetryableError(
`Failed to get available versions: ${error.message}`,
error,
);
throw err;
}
}
},
{ maxRetries: 3, timeoutMs: 30000 }, // 30 second timeout for API calls
"get available versions",
);
}
async function getReleaseTagNames(
octokit: InstanceType<typeof PaginatingOctokit>,
): Promise<string[]> {
const response = await withRetry(
async () => {
try {
return await octokit.paginate(octokit.rest.repos.listReleases, {
const response = await octokit.paginate(octokit.rest.repos.listReleases, {
owner: OWNER,
repo: REPO,
});
} catch (error) {
const err = error as Error;
if (isRetryableError(err)) {
throw new RetryableError(
`Failed to list GitHub releases: ${err.message}`,
err,
);
} else {
throw new NonRetryableError(
`Failed to list GitHub releases: ${err.message}`,
err,
);
}
}
},
{ maxRetries: 3, timeoutMs: 30000 },
"list GitHub releases",
);
const releaseTagNames = response.map((release) => release.tag_name);
if (releaseTagNames.length === 0) {
throw Error(
@@ -232,8 +168,6 @@ async function getReleaseTagNames(
}
async function getLatestVersion(githubToken: string) {
return await withRetry(
async () => {
const octokit = new PaginatingOctokit({
auth: githubToken,
});
@@ -242,8 +176,7 @@ async function getLatestVersion(githubToken: string) {
try {
latestRelease = await getLatestRelease(octokit);
} catch (err) {
const error = err as Error;
if (error.message.includes("Bad credentials")) {
if ((err as Error).message.includes("Bad credentials")) {
core.info(
"No (valid) GitHub token provided. Falling back to anonymous. Requests might be rate limited.",
);
@@ -253,18 +186,7 @@ async function getLatestVersion(githubToken: string) {
core.error(
"Github API request failed while getting latest release. Check the GitHub status page for outages. Try again later.",
);
if (isRetryableError(error)) {
throw new RetryableError(
`Failed to get latest version: ${error.message}`,
error,
);
} else {
throw new NonRetryableError(
`Failed to get latest version: ${error.message}`,
error,
);
}
throw err;
}
}
@@ -272,42 +194,16 @@ async function getLatestVersion(githubToken: string) {
throw new Error("Could not determine latest release.");
}
return latestRelease.tag_name;
},
{ maxRetries: 3, timeoutMs: 30000 },
"get latest version",
);
}
async function getLatestRelease(
octokit: InstanceType<typeof PaginatingOctokit>,
) {
return await withRetry(
async () => {
try {
const { data: latestRelease } =
await octokit.rest.repos.getLatestRelease({
const { data: latestRelease } = await octokit.rest.repos.getLatestRelease({
owner: OWNER,
repo: REPO,
});
return latestRelease;
} catch (error) {
const err = error as Error;
if (isRetryableError(err)) {
throw new RetryableError(
`Failed to get latest release: ${err.message}`,
err,
);
} else {
throw new NonRetryableError(
`Failed to get latest release: ${err.message}`,
err,
);
}
}
},
{ maxRetries: 3, timeoutMs: 30000 },
"get latest release",
);
}
function maxSatisfying(
+7 -4
View File
@@ -1,4 +1,3 @@
import * as fs from "node:fs";
import * as path from "node:path";
import * as core from "@actions/core";
import * as exec from "@actions/exec";
@@ -23,6 +22,7 @@ import {
type Platform,
} from "./utils/platforms";
import { getRuffVersionFromRequirementsFile } from "./utils/pyproject";
import { findPyprojectToml } from "./utils/pyproject-finder";
async function run(): Promise<void> {
const platform = getPlatform();
@@ -107,9 +107,12 @@ async function determineVersion(): Promise<string> {
}
return await resolveVersion(versionFromPyproject || "latest", githubToken);
}
const pyProjectPath = path.join(src, "pyproject.toml");
if (!fs.existsSync(pyProjectPath)) {
core.info(`Could not find ${pyProjectPath}. Using latest version.`);
const pyProjectPath = findPyprojectToml(
src,
process.env.GITHUB_WORKSPACE || ".",
);
if (!pyProjectPath) {
core.info(`Could not find pyproject.toml. Using latest version.`);
return await resolveVersion("latest", githubToken);
}
const versionFromPyproject =
+2 -29
View File
@@ -5,12 +5,6 @@ import { restEndpointMethods } from "@octokit/plugin-rest-endpoint-methods";
import * as semver from "semver";
import { updateChecksums } from "./download/checksum/update-known-checksums";
import { OWNER, REPO } from "./utils/constants";
import {
isRetryableError,
NonRetryableError,
RetryableError,
withRetry,
} from "./utils/retry";
const PaginatingOctokit = Octokit.plugin(paginateRest, restEndpointMethods);
@@ -18,33 +12,12 @@ async function run(): Promise<void> {
const checksumFilePath = process.argv.slice(2)[0];
const github_token = process.argv.slice(2)[1];
const response = await withRetry(
async () => {
try {
const octokit = new PaginatingOctokit({ auth: github_token });
return await octokit.paginate(octokit.rest.repos.listReleases, {
const response = await octokit.paginate(octokit.rest.repos.listReleases, {
owner: OWNER,
repo: REPO,
});
} catch (error) {
const err = error as Error;
if (isRetryableError(err)) {
throw new RetryableError(
`Failed to list releases for checksum update: ${err.message}`,
err,
);
} else {
throw new NonRetryableError(
`Failed to list releases for checksum update: ${err.message}`,
err,
);
}
}
},
{ maxRetries: 3, timeoutMs: 60000 },
"list releases for checksum update",
);
const downloadUrls: string[] = response.flatMap((release) =>
release.assets
.filter((asset) => asset.name.endsWith(".sha256"))
+183
View File
@@ -0,0 +1,183 @@
import * as path from "node:path";
import * as core from "@actions/core";
import { findPyprojectToml } from "./pyproject-finder";
jest.mock("@actions/core", () => ({
debug: jest.fn(),
info: jest.fn(),
}));
describe("findPyprojectToml", () => {
beforeEach(() => {
jest.clearAllMocks();
});
describe("when pyproject.toml exists in src directory", () => {
it("should return the exact path", () => {
const fixturesDir = path.join(
__dirname,
"..",
"..",
"__tests__",
"fixtures",
);
const workspaceRoot = path.join(__dirname, "..", "..");
const result = findPyprojectToml(fixturesDir, workspaceRoot);
expect(result).toContain("pyproject.toml");
expect(result).toContain("fixtures");
expect(core.info).toHaveBeenCalled();
});
});
describe("when pyproject.toml exists only in parent directory", () => {
it("should search upwards and find the parent's pyproject.toml", () => {
// subproject doesn't have a pyproject.toml, but its parent (parent-config-project) does
const subprojectDir = path.join(
__dirname,
"..",
"..",
"__tests__",
"fixtures",
"parent-config-project",
"subproject",
);
const workspaceRoot = path.join(__dirname, "..", "..");
const result = findPyprojectToml(subprojectDir, workspaceRoot);
expect(result).toBeTruthy();
expect(result).toContain("pyproject.toml");
expect(result).toContain("parent-config-project");
expect(core.info).toHaveBeenCalled();
});
});
describe("boundary conditions", () => {
it("should stop searching at workspace root and return undefined when not found", () => {
// Create a path that won't have pyproject.toml above it
const nodeModulesDir = path.join(
__dirname,
"..",
"..",
"node_modules",
"@actions",
);
const workspaceRoot = path.join(__dirname, "..", "..");
const result = findPyprojectToml(nodeModulesDir, workspaceRoot);
// Should return undefined since there's no pyproject.toml in the search path
expect(result).toBeUndefined();
expect(core.info).not.toHaveBeenCalledWith(
expect.stringContaining("Found pyproject.toml"),
);
});
it("should find pyproject.toml when it exists at workspace root", () => {
// Use parent-config-project as the "workspace root" for this test
// Start from subproject (which has no pyproject.toml) to search up to workspace root
const subprojectDir = path.join(
__dirname,
"..",
"..",
"__tests__",
"fixtures",
"parent-config-project",
"subproject",
);
const workspaceRoot = path.join(
__dirname,
"..",
"..",
"__tests__",
"fixtures",
"parent-config-project",
);
const result = findPyprojectToml(subprojectDir, workspaceRoot);
expect(result).toBeTruthy();
expect(result).toContain("pyproject.toml");
expect(result).toContain("parent-config-project");
});
it("should stop at workspace root even if searching from it", () => {
const workspaceRoot = path.join(
__dirname,
"..",
"..",
"__tests__",
"fixtures",
);
const result = findPyprojectToml(workspaceRoot, workspaceRoot);
// Should find pyproject.toml at workspace root
expect(result).toBeTruthy();
expect(result).toContain("pyproject.toml");
expect(result).toContain("fixtures");
});
});
describe("edge cases", () => {
it("should handle relative paths", () => {
const srcDir = "./__tests__/fixtures";
const workspaceRoot = ".";
const result = findPyprojectToml(srcDir, workspaceRoot);
// Should work with relative paths
expect(result).toBeTruthy();
expect(result).toContain("pyproject.toml");
});
it("should handle when src equals workspace root", () => {
const workspaceRoot = path.join(
__dirname,
"..",
"..",
"__tests__",
"fixtures",
);
const result = findPyprojectToml(workspaceRoot, workspaceRoot);
expect(result).toBeTruthy();
expect(result).toContain("pyproject.toml");
expect(result).toContain("fixtures");
});
it("should log debug messages for each checked path", () => {
const pythonProjectDir = path.join(
__dirname,
"..",
"..",
"__tests__",
"fixtures",
"python-project",
);
const workspaceRoot = path.join(__dirname, "..", "..");
findPyprojectToml(pythonProjectDir, workspaceRoot);
expect(core.debug).toHaveBeenCalled();
const debugCalls = (core.debug as jest.Mock).mock.calls;
expect(debugCalls.length).toBeGreaterThan(0);
// First debug call should be for the starting directory
expect(debugCalls[0][0]).toContain("Checking for");
expect(debugCalls[0][0]).toContain("python-project");
});
it("should handle paths with trailing slashes", () => {
const fixturesDir = `${path.join(__dirname, "..", "..", "__tests__", "fixtures")}/`;
const workspaceRoot = path.join(__dirname, "..", "..");
const result = findPyprojectToml(fixturesDir, workspaceRoot);
expect(result).toBeTruthy();
expect(result).toContain("pyproject.toml");
});
});
});
+79
View File
@@ -0,0 +1,79 @@
import * as fs from "node:fs";
import * as path from "node:path";
import * as core from "@actions/core";
/**
* Search for a pyproject.toml file starting from the given directory
* and traversing upwards through parent directories until reaching
* the GitHub workspace root.
*
* @param startDir The directory to start the search from (e.g., the src input)
* @param workspaceRoot The GitHub workspace directory (GITHUB_WORKSPACE)
* @returns The path to the found pyproject.toml, or undefined if not found
*/
export function findPyprojectToml(
startDir: string,
workspaceRoot: string,
): string | undefined {
let currentDir = path.resolve(startDir);
const resolvedWorkspaceRoot = path.resolve(workspaceRoot);
while (true) {
const pyprojectPath = path.join(currentDir, "pyproject.toml");
core.debug(`Checking for ${pyprojectPath}`);
if (fs.existsSync(pyprojectPath)) {
core.info(`Found pyproject.toml at ${pyprojectPath}`);
return pyprojectPath;
}
// Check if we've reached the workspace root
if (currentDir === resolvedWorkspaceRoot) {
// If we're at workspace root and didn't find it, stop searching
break;
}
// Move up to parent directory
const parentDir = path.dirname(currentDir);
// If parent is the same as current, we've reached the filesystem root
if (parentDir === currentDir) {
break;
}
currentDir = parentDir;
// If we've gone past the workspace root, stop searching
if (isPathWithinWorkspace(currentDir, resolvedWorkspaceRoot) === false) {
break;
}
}
return undefined;
}
/**
* Check if a given path is within or equal to the workspace root.
*
* @param checkPath The path to check
* @param workspaceRoot The workspace root directory
* @returns true if within or equal to workspace, false if outside, undefined if can't determine
*/
function isPathWithinWorkspace(
checkPath: string,
workspaceRoot: string,
): boolean | undefined {
try {
const checkPathResolved = path.resolve(checkPath);
const workspaceRootResolved = path.resolve(workspaceRoot);
// Check if checkPath starts with workspaceRoot (case-insensitive on Windows)
const relativePath = path.relative(
workspaceRootResolved,
checkPathResolved,
);
return !relativePath.startsWith("..") && !path.isAbsolute(relativePath);
} catch {
return undefined;
}
}
+188
View File
@@ -0,0 +1,188 @@
import * as core from "@actions/core";
import { findRuffVersionInSpec } from "./pyproject";
jest.mock("@actions/core", () => ({
info: jest.fn(),
warning: jest.fn(),
}));
describe("findRuffVersionInSpec", () => {
beforeEach(() => {
jest.clearAllMocks();
});
describe("ruff dependency strings", () => {
it("should extract version from 'ruff==0.9.3'", () => {
const result = findRuffVersionInSpec("ruff==0.9.3");
expect(result).toBe("0.9.3");
expect(core.info).toHaveBeenCalledWith(
"Found ruff version in requirements file: 0.9.3",
);
expect(core.warning).not.toHaveBeenCalled();
});
it("should extract version from 'ruff>=0.14'", () => {
const result = findRuffVersionInSpec("ruff>=0.14");
expect(result).toBe(">=0.14");
expect(core.warning).not.toHaveBeenCalled();
});
it("should extract version from 'ruff ~=1.0.0'", () => {
const result = findRuffVersionInSpec("ruff ~=1.0.0");
expect(result).toBe("~=1.0.0");
expect(core.warning).not.toHaveBeenCalled();
});
it("should extract version from 'ruff>=0.14,<1.0'", () => {
const result = findRuffVersionInSpec("ruff>=0.14,<1.0");
expect(result).toBe(">=0.14,<1.0");
expect(core.warning).not.toHaveBeenCalled();
});
it("should extract version from 'ruff>=0.14,<2.0,!=1.5.0'", () => {
const result = findRuffVersionInSpec("ruff>=0.14,<2.0,!=1.5.0");
expect(result).toBe(">=0.14,<2.0,!=1.5.0");
expect(core.warning).not.toHaveBeenCalled();
});
it("should return undefined for non-ruff dependency 'another-dep 0.1.6'", () => {
const result = findRuffVersionInSpec("another-dep 0.1.6");
expect(result).toBeUndefined();
expect(core.info).not.toHaveBeenCalled();
expect(core.warning).not.toHaveBeenCalled();
});
it("should return undefined for non-ruff dependency 'another-dep==0.1.6'", () => {
const result = findRuffVersionInSpec("another-dep==0.1.6");
expect(result).toBeUndefined();
expect(core.info).not.toHaveBeenCalled();
expect(core.warning).not.toHaveBeenCalled();
});
it("should strip trailing backslash", () => {
const result = findRuffVersionInSpec("ruff==0.9.3 \\");
expect(result).toBe("0.9.3");
expect(core.info).toHaveBeenCalledWith(
"Found ruff version in requirements file: 0.9.3",
);
expect(core.warning).not.toHaveBeenCalled();
});
it("should strip trailing backslash with whitespace", () => {
const result = findRuffVersionInSpec(" ruff==0.9.3 \\ ");
expect(result).toBe("0.9.3");
expect(core.warning).not.toHaveBeenCalled();
});
});
describe("environment markers", () => {
it("should strip python_version environment marker", () => {
const result = findRuffVersionInSpec(
'ruff>=0.14 ; python_version >= "3.11"',
);
expect(result).toBe(">=0.14");
expect(core.info).toHaveBeenCalledWith(
"Found ruff version in requirements file: >=0.14",
);
expect(core.warning).toHaveBeenCalledWith(
"Environment markers are ignored. ruff is a standalone tool that works independently of Python version.",
);
});
it("should strip sys_platform environment marker", () => {
const result = findRuffVersionInSpec(
"ruff==0.9.3 ; sys_platform == 'linux'",
);
expect(result).toBe("0.9.3");
expect(core.warning).toHaveBeenCalledWith(
"Environment markers are ignored. ruff is a standalone tool that works independently of Python version.",
);
});
it("should strip multiple environment markers", () => {
const result = findRuffVersionInSpec(
'ruff>=0.14 ; python_version >= "3.11" and sys_platform == "linux"',
);
expect(result).toBe(">=0.14");
expect(core.warning).toHaveBeenCalledWith(
"Environment markers are ignored. ruff is a standalone tool that works independently of Python version.",
);
});
it("should handle environment markers with multiple constraints", () => {
const result = findRuffVersionInSpec(
'ruff>=0.14,<1.0 ; python_version >= "3.11"',
);
expect(result).toBe(">=0.14,<1.0");
expect(core.warning).toHaveBeenCalledWith(
"Environment markers are ignored. ruff is a standalone tool that works independently of Python version.",
);
});
});
describe("edge cases", () => {
it("should handle whitespace", () => {
const result = findRuffVersionInSpec(" ruff >=0.14 ");
expect(result).toBe(">=0.14");
expect(core.warning).not.toHaveBeenCalled();
});
it("should handle whitespace with environment markers", () => {
const result = findRuffVersionInSpec(
" ruff >=0.14 ; python_version >= '3.11' ",
);
expect(result).toBe(">=0.14");
expect(core.warning).toHaveBeenCalled();
});
it("should return undefined for empty string", () => {
const result = findRuffVersionInSpec("");
expect(result).toBeUndefined();
expect(core.info).not.toHaveBeenCalled();
expect(core.warning).not.toHaveBeenCalled();
});
it("should return undefined for whitespace only", () => {
const result = findRuffVersionInSpec(" ");
expect(result).toBeUndefined();
expect(core.info).not.toHaveBeenCalled();
expect(core.warning).not.toHaveBeenCalled();
});
it("should return undefined for just semicolon", () => {
const result = findRuffVersionInSpec(";");
expect(result).toBeUndefined();
expect(core.info).not.toHaveBeenCalled();
expect(core.warning).not.toHaveBeenCalled();
});
it("should handle exact example from issue #256", () => {
const result = findRuffVersionInSpec(
'ruff>=0.14 ; python_version >= "3.11"',
);
expect(result).toBe(">=0.14");
expect(core.info).toHaveBeenCalledWith(
"Found ruff version in requirements file: >=0.14",
);
expect(core.warning).toHaveBeenCalledWith(
"Environment markers are ignored. ruff is a standalone tool that works independently of Python version.",
);
});
it("should handle single-quoted environment markers", () => {
const result = findRuffVersionInSpec(
"ruff>=0.14 ; python_version >= '3.11'",
);
expect(result).toBe(">=0.14");
expect(core.warning).toHaveBeenCalled();
});
it("should handle double-quoted environment markers", () => {
const result = findRuffVersionInSpec(
'ruff>=0.14 ; python_version >= "3.11"',
);
expect(result).toBe(">=0.14");
expect(core.warning).toHaveBeenCalled();
});
});
});
+50 -15
View File
@@ -2,27 +2,60 @@ import * as fs from "node:fs";
import * as core from "@actions/core";
import * as toml from "smol-toml";
function getRuffVersionFromAllDependencies(
allDependencies: string[],
): string | undefined {
const ruffVersionDefinition = allDependencies.find((dep: string) =>
dep.startsWith("ruff"),
);
/**
* Find ruff version in a dependency specification.
* Only handles strings that start with "ruff" (e.g., "ruff==0.9.3").
* Returns undefined for non-ruff dependencies.
* Strips environment markers (everything after ';').
* Strips leading '==' from exact version specifiers (PEP 440) for downstream compatibility.
*
* @internal This is exported for testing purposes only.
*/
export function findRuffVersionInSpec(spec: string): string | undefined {
const trimmedSpec = spec.trim();
if (ruffVersionDefinition) {
const ruffVersion = ruffVersionDefinition
.match(/^ruff([^A-Z0-9._-]+.*)$/)?.[1]
.trim();
if (ruffVersion?.startsWith("==")) {
return ruffVersion.slice(2);
const fullDepMatch = trimmedSpec.match(/^ruff\s*(.+)$/);
let versionSpec: string;
if (fullDepMatch) {
versionSpec = fullDepMatch[1];
} else {
return undefined;
}
// Strip trailing backslash (line continuation)
versionSpec = versionSpec.replace(/\\$/, "").trim();
// Strip environment markers (everything after ';')
const match = versionSpec.match(/^([^;]+)(?:;.*)?$/);
if (match) {
let version = match[1].trim();
if (version) {
// Strip leading '==' from exact version specifiers for compatibility with semver
if (version.startsWith("==")) {
version = version.slice(2);
}
if (trimmedSpec.includes(";")) {
core.warning(
"Environment markers are ignored. ruff is a standalone tool that works independently of Python version.",
);
}
core.info(`Found ruff version in requirements file: ${version}`);
return version;
}
core.info(`Found ruff version in pyproject.toml: ${ruffVersion}`);
return ruffVersion;
}
return undefined;
}
function getRuffVersionFromAllDependencies(
allDependencies: string[],
): string | undefined {
return allDependencies
.map((dep) => findRuffVersionInSpec(dep))
.find((version) => version !== undefined);
}
interface Pyproject {
project?: {
dependencies?: string[];
@@ -68,7 +101,9 @@ function getRuffVersionFromPoetryGroups(
return poetryGroups
.flatMap((group) => Object.entries(group.dependencies))
.map(([name, spec]) => {
if (name === "ruff" && typeof spec === "string") return spec;
if (typeof spec === "string") {
return findRuffVersionInSpec(`${name} ${spec}`);
}
return undefined;
})
.find((version) => version !== undefined);
-176
View File
@@ -1,176 +0,0 @@
import * as core from "@actions/core";
export interface RetryOptions {
maxRetries: number;
initialDelayMs: number;
maxDelayMs: number;
backoffMultiplier: number;
timeoutMs?: number;
}
export const DEFAULT_RETRY_OPTIONS: RetryOptions = {
backoffMultiplier: 2,
initialDelayMs: 1000,
maxDelayMs: 10000,
maxRetries: 3,
timeoutMs: 30000, // 30 second timeout
};
export class RetryableError extends Error {
constructor(
message: string,
public readonly cause?: Error,
) {
super(message);
this.name = "RetryableError";
}
}
export class NonRetryableError extends Error {
constructor(
message: string,
public readonly cause?: Error,
) {
super(message);
this.name = "NonRetryableError";
}
}
export async function withRetry<T>(
operation: () => Promise<T>,
options: Partial<RetryOptions> = {},
operationName = "operation",
): Promise<T> {
const opts = { ...DEFAULT_RETRY_OPTIONS, ...options };
let lastError: Error | undefined;
for (let attempt = 0; attempt <= opts.maxRetries; attempt++) {
try {
if (attempt > 0) {
const delay = Math.min(
opts.initialDelayMs * opts.backoffMultiplier ** (attempt - 1),
opts.maxDelayMs,
);
core.info(
`Retrying ${operationName} (attempt ${attempt + 1}/${opts.maxRetries + 1}) after ${delay}ms delay...`,
);
await sleep(delay);
}
// Wrap operation with timeout if specified
if (opts.timeoutMs) {
return await withTimeout(operation(), opts.timeoutMs, operationName);
} else {
return await operation();
}
} catch (error) {
lastError = error as Error;
// Don't retry on non-retryable errors
if (lastError instanceof NonRetryableError) {
core.debug(
`Non-retryable error in ${operationName}: ${lastError.message}`,
);
throw lastError.cause || lastError;
}
// Log the error for debugging
core.debug(
`Attempt ${attempt + 1} failed for ${operationName}: ${lastError.message}`,
);
// If this was the last attempt, throw the error
if (attempt === opts.maxRetries) {
core.error(
`${operationName} failed after ${opts.maxRetries + 1} attempts. Last error: ${lastError.message}`,
);
throw lastError;
}
}
}
throw lastError || new Error(`${operationName} failed for unknown reason`);
}
export async function withTimeout<T>(
promise: Promise<T>,
timeoutMs: number,
operationName = "operation",
): Promise<T> {
const timeoutPromise = new Promise<never>((_, reject) => {
setTimeout(() => {
reject(
new RetryableError(`${operationName} timed out after ${timeoutMs}ms`),
);
}, timeoutMs);
});
return Promise.race([promise, timeoutPromise]);
}
function sleep(ms: number): Promise<void> {
return new Promise((resolve) => setTimeout(resolve, ms));
}
export function isRetryableError(error: Error): boolean {
const message = error.message.toLowerCase();
// Network-related errors that should be retried
const retryableMessages = [
"connect timeout",
"connection timeout",
"timeout",
"econnreset",
"econnrefused",
"enotfound",
"network error",
"request timeout",
"socket timeout",
"fetch failed",
"connect etimedout",
];
// HTTP status codes that should be retried
const retryableStatusCodes = [408, 429, 500, 502, 503, 504];
// Check for retryable messages
if (retryableMessages.some((msg) => message.includes(msg))) {
return true;
}
// Check for HTTP status codes in error message
const statusMatch = message.match(/status.*?(\d{3})/);
if (statusMatch) {
const statusCode = parseInt(statusMatch[1], 10);
if (retryableStatusCodes.includes(statusCode)) {
return true;
}
}
return false;
}
export function wrapWithRetryLogic<T>(
operation: () => Promise<T>,
operationName: string,
options: Partial<RetryOptions> = {},
): () => Promise<T> {
return async () => {
try {
return await withRetry(operation, options, operationName);
} catch (error) {
const err = error as Error;
if (isRetryableError(err)) {
throw new RetryableError(
`${operationName} failed: ${err.message}`,
err,
);
} else {
throw new NonRetryableError(
`${operationName} failed: ${err.message}`,
err,
);
}
}
};
}