Compare commits

...

76 Commits

Author SHA1 Message Date
Taiki Endo
47943d5b8d Release 2.39.1 2024-06-15 19:27:13 +09:00
Taiki Endo
5b20f8136e Update cargo-binstall@latest to 1.7.1 2024-06-15 18:38:26 +09:00
Taiki Endo
6a5e5c2027 Release 2.39.0 2024-06-15 16:38:52 +09:00
Taiki Endo
69538e2103 Update cargo-binstall@latest to 1.7.0 (#539) 2024-06-15 06:22:13 +00:00
Taiki Endo
a8a128c2d2 Release 2.38.7 2024-06-15 11:38:52 +09:00
Taiki Endo
2bc1761887 Update syft@latest to 1.7.0 2024-06-15 06:52:17 +09:00
Taiki Endo
8a60518f4e Update just@latest to 1.29.1 2024-06-15 06:52:17 +09:00
Taiki Endo
30a11dbd9e Update rclone@latest to 1.67.0 2024-06-15 03:52:33 +09:00
Taiki Endo
3e3b268956 Release 2.38.6 2024-06-15 01:11:08 +09:00
Taiki Endo
19a89ed24b Update just@latest to 1.29.0 2024-06-14 13:05:32 +09:00
Taiki Endo
309ee82715 Release 2.38.5 2024-06-13 09:43:25 +09:00
Taiki Endo
d5ce3a6de4 Update typos@latest to 1.22.7 2024-06-13 03:58:19 +09:00
Taiki Endo
9531aeedc3 Update espup@latest to 0.12.0 2024-06-13 03:58:19 +09:00
Taiki Endo
07a34f8347 Release 2.38.4 2024-06-12 02:16:44 +09:00
Taiki Endo
e626313db4 Workaround Cygwin bash's buggy behavior 2024-06-12 02:15:37 +09:00
Taiki Endo
01c63d291f Improve diagnostics for non-default bash on Windows 2024-06-12 00:58:48 +09:00
Taiki Endo
43f5aa7172 Release 2.38.3 2024-06-11 23:28:33 +09:00
Taiki Endo
1330af6455 Update changelog 2024-06-11 23:28:01 +09:00
Taiki Endo
01ad6befc0 Workaround msys64 bash's buggy behavior 2024-06-11 23:23:23 +09:00
Taiki Endo
0a18e2472c Update typos@latest to 1.22.4 2024-06-11 10:11:32 +09:00
Taiki Endo
ca13ba3e0d Update earthly@latest to 0.8.14 2024-06-11 05:42:24 +09:00
Taiki Endo
fa446e93ef Update cargo-rdme manifest 2024-06-11 05:42:24 +09:00
Taiki Endo
3c1a9d610d codegen: Mark cargo-rdme 1.4.4 as broken
Same as a86757441d.
2024-06-11 04:55:02 +09:00
Taiki Endo
5ee12b2568 Release 2.38.2 2024-06-11 04:41:32 +09:00
Taiki Endo
02185b5b43 Update syft@latest to 1.6.0 2024-06-11 02:05:45 +09:00
Taiki Endo
56182455cc Release 2.38.1 2024-06-11 00:51:33 +09:00
Taiki Endo
b67c820ac3 Update biome@latest to 1.8.1 2024-06-11 00:41:43 +09:00
Taiki Endo
d0c2bb4cff Release 2.38.0 2024-06-10 00:41:06 +09:00
Taiki Endo
a36362bfc6 Update changelog 2024-06-09 22:23:43 +09:00
Taiki Endo
2d1ca68f02 Add fallback input option to ensure that fallback is not used 2024-06-09 22:22:33 +09:00
John Vandenberg
f6578d890d Add deepsource (#522) 2024-06-09 18:10:54 +09:00
John Vandenberg
e7b91e1d2b Add earthly (#520) 2024-06-09 18:10:43 +09:00
Taiki Endo
5a6e4c785f Add manifest for cargo-nextest 2024-06-09 16:41:17 +09:00
John Vandenberg
762078b2b9 Update dprint 2024-06-09 15:04:20 +09:00
John Vandenberg
feb3c20d8e Workaround archlinux jq failure 2024-06-09 15:04:20 +09:00
John Vandenberg
4306070abe Allow running CI for branches ci-* 2024-06-09 15:04:20 +09:00
Taiki Endo
23b90ae71a Release 2.37.0 2024-06-08 19:10:13 +09:00
Taiki Endo
f9c15f1341 Update license links to Cargo.toml 2024-06-08 18:33:05 +09:00
Taiki Endo
61977646cd Update changelog 2024-06-08 18:04:50 +09:00
John Vandenberg
a6bc18a46c Add jaq (#513)
* Add jaq

* switch to musl

* update markdown
2024-06-08 08:22:08 +00:00
John Vandenberg
df5666f536 Add xh (#512) 2024-06-08 17:33:29 +10:00
Taiki Endo
8d078757e8 Update cargo-binstall@latest to 1.6.9 2024-06-08 16:21:03 +09:00
John Vandenberg
a0060a7f49 Add wait-for-them (#514)
* Add wait-for-them

* add to glibc_pre_2_34_incompat

* ignore --help/--version check

* update markdown
2024-06-08 16:58:09 +10:00
John Vandenberg
66c4dcc03d Add rclone (#511)
* Add rclone

* fix cspell

* specify bin dir
2024-06-08 16:07:49 +10:00
Taiki Endo
16647abe1b Update typos@latest to 1.22.3 2024-06-08 03:40:58 +09:00
Taiki Endo
3eb90b20bc Release 2.36.0 2024-06-07 10:42:06 +09:00
Taiki Endo
c2a32441ec Update changelog 2024-06-07 10:41:56 +09:00
John Vandenberg
45b6915b2c Add cargo-zigbuild (#508) 2024-06-06 18:37:27 +10:00
Taiki Endo
eb4a68d3da Release 2.35.0 2024-06-06 07:48:25 +09:00
Taiki Endo
dcea075c55 Update changelog 2024-06-06 07:36:18 +09:00
John Vandenberg
ecb44a0aaf Add cargo-semver-checks (#507) 2024-06-06 07:29:14 +09:00
Nate Daines
ef498a3640 Update codegen and manifest for osv-scanner due to file name format change (#506) 2024-06-06 07:28:45 +09:00
Taiki Endo
8de2a00cdd Update typos@latest to 1.22.1 2024-06-06 06:35:20 +09:00
Taiki Endo
38127ecf47 Update protoc@latest to 3.27.1 2024-06-06 06:35:20 +09:00
Taiki Endo
cf54022d62 Update just@latest to 1.28.0 2024-06-06 06:35:20 +09:00
Taiki Endo
8faf1ae00d Release 2.34.3 2024-06-05 00:08:52 +09:00
John Vandenberg
6ebd8c0cb0 Generate TOOLS.md header/footer (#504) 2024-06-04 21:59:23 +09:00
Taiki Endo
e59163289d Update biome@latest to 1.8.0 2024-06-04 21:38:09 +09:00
Taiki Endo
03897c74e4 Tweak docs 2024-06-04 04:03:00 +09:00
John Vandenberg
d7080cb663 Generate Markdown table of tools (#473) 2024-06-04 03:56:04 +09:00
Taiki Endo
9b00020f6f Release 2.34.2 2024-06-04 03:26:16 +09:00
Taiki Endo
2c14471598 tools: Update tidy.sh 2024-06-04 03:26:03 +09:00
Taiki Endo
544b987e85 Update typos@latest to 1.22.0 2024-06-04 03:13:11 +09:00
Taiki Endo
1014a1e7a6 Release 2.34.1 2024-06-03 22:18:17 +09:00
Taiki Endo
df03a8f339 tools: Update tidy.sh 2024-06-03 21:58:51 +09:00
Taiki Endo
1bd25cfd26 Update git-cliff@latest to 2.3.0 2024-06-03 21:50:37 +09:00
Taiki Endo
4e38715ddc Release 2.34.0 2024-06-02 01:14:31 +09:00
Taiki Endo
2d4372270d Support cargo-binstall fallback without cargo 2024-06-02 01:13:32 +09:00
Taiki Endo
e5240ce0c5 Release 2.33.36 2024-06-02 00:14:03 +09:00
Taiki Endo
cd2b50cd20 Update cargo-llvm-cov@latest to 0.6.10 2024-06-02 00:12:05 +09:00
Taiki Endo
08b0c77d33 Update cspell dictionary 2024-05-31 00:23:30 +09:00
Taiki Endo
51b8ba088c Release 2.33.35 2024-05-29 03:20:16 +09:00
Taiki Endo
c46ebac92e Ignore more lints at workspace level 2024-05-29 03:15:59 +09:00
Taiki Endo
6058afcbf2 Update syft@latest to 1.5.0 2024-05-29 03:11:44 +09:00
Taiki Endo
60784cb1f4 Release 2.33.34 2024-05-27 08:51:32 +09:00
Taiki Endo
ccdec58fd9 Update dprint@latest to 0.46.1 2024-05-27 06:11:24 +09:00
91 changed files with 3691 additions and 626 deletions

View File

@@ -44,7 +44,7 @@
"languageSettings": [ "languageSettings": [
{ {
"languageId": ["*"], "languageId": ["*"],
"dictionaries": ["rust"] "dictionaries": ["bash", "rust"]
} }
], ],
"ignorePaths": [] "ignorePaths": []

View File

@@ -2,8 +2,11 @@ almalinux
archlinux archlinux
bindgen bindgen
binstall binstall
choco
coreutils coreutils
cyclonedx cyclonedx
cygdrive
deepsource
distro distro
doas doas
dprint dprint
@@ -20,12 +23,14 @@ protoc
pubkey pubkey
pwsh pwsh
quickinstall quickinstall
rclone
rdme rdme
requirechecksums
sccache sccache
shfmt
syft syft
udeps udeps
wasmtime wasmtime
watchexec watchexec
xbuild xbuild
xscale xscale
zigbuild

View File

@@ -9,6 +9,7 @@ on:
branches: branches:
- main - main
- dev - dev
- ci-*
schedule: schedule:
- cron: '0 0,3,6,9,12,15,18,21 * * *' - cron: '0 0,3,6,9,12,15,18,21 * * *'
workflow_dispatch: workflow_dispatch:
@@ -52,6 +53,11 @@ jobs:
- os: macos-14 - os: macos-14
- os: windows-2019 - os: windows-2019
- os: windows-2022 - os: windows-2022
# https://github.com/taiki-e/install-action/pull/518#issuecomment-2160736760
- os: windows-2022
bash: msys64
- os: windows-2022
bash: cygwin
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
timeout-minutes: 60 timeout-minutes: 60
steps: steps:
@@ -61,15 +67,27 @@ jobs:
- name: Generate tool list - name: Generate tool list
id: tool-list id: tool-list
run: tools/ci/tool-list.sh "${{ matrix.tool }}" >>"${GITHUB_OUTPUT}" run: tools/ci/tool-list.sh "${{ matrix.tool }}" >>"${GITHUB_OUTPUT}"
- run: |
set -eEuxo pipefail
echo "C:\msys64\mingw32\bin" >> $GITHUB_PATH
echo "C:\msys64\usr\bin" >> $GITHUB_PATH
if: matrix.bash == 'msys64'
- run: |
set -eEuxo pipefail
choco install --no-progress --requirechecksums cygwin
echo "C:\tools\cygwin\bin" >> $GITHUB_PATH
echo "C:\tools\cygwin\usr\bin" >> $GITHUB_PATH
if: matrix.bash == 'cygwin'
- run: env
- uses: ./ - uses: ./
with: with:
tool: ${{ steps.tool-list.outputs.tool }} tool: ${{ steps.tool-list.outputs.tool }}
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsshell # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsshell
- name: Test bash - name: Test bash
run: just --version; shfmt --version; protoc --version run: just --version && shfmt --version && protoc --version
shell: bash shell: bash
- name: Test sh - name: Test sh
run: just --version; shfmt --version; protoc --version run: just --version && shfmt --version && protoc --version
shell: sh shell: sh
if: startsWith(matrix.os, 'ubuntu') || startsWith(matrix.os, 'macos') if: startsWith(matrix.os, 'ubuntu') || startsWith(matrix.os, 'macos')
- name: Test pwsh - name: Test pwsh
@@ -83,7 +101,7 @@ jobs:
run: just --version & shfmt --version & protoc --version run: just --version & shfmt --version & protoc --version
shell: cmd shell: cmd
if: startsWith(matrix.os, 'windows') if: startsWith(matrix.os, 'windows')
# We use the version output to check the version of binstall, but they # We use the version output to check the version of cargo-binstall, but they
# several times change the version output format in the past so we need to # several times change the version output format in the past so we need to
# check it with CI. (e.g., 0.14.0->0.16.0 update change it # check it with CI. (e.g., 0.14.0->0.16.0 update change it
# from "cargo-binstall <version>" to "<version>") # from "cargo-binstall <version>" to "<version>")
@@ -91,6 +109,7 @@ jobs:
if [[ "$(cargo binstall -V)" != "$(jq -r '.latest.version' manifests/cargo-binstall.json)" ]]; then if [[ "$(cargo binstall -V)" != "$(jq -r '.latest.version' manifests/cargo-binstall.json)" ]]; then
exit 1 exit 1
fi fi
if: matrix.bash != 'cygwin'
test-container: test-container:
strategy: strategy:
@@ -118,29 +137,8 @@ jobs:
timeout-minutes: 60 timeout-minutes: 60
container: ${{ matrix.container }} container: ${{ matrix.container }}
steps: steps:
- name: Install requirements (ubuntu/debian)
run: |
set -eEuxo pipefail
apt-get -o Acquire::Retries=10 -qq update
apt-get -o Acquire::Retries=10 -o Dpkg::Use-Pty=0 install -y --no-install-recommends cargo
if: startsWith(matrix.container, 'ubuntu') || startsWith(matrix.container, 'debian')
- name: Install requirements (fedora/almalinux/centos)
run: |
set -eEuxo pipefail
curl --proto '=https' --tlsv1.2 -fsSL --retry 10 https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain stable --no-modify-path
echo "$HOME/.cargo/bin" >>"${GITHUB_PATH}"
if: startsWith(matrix.container, 'fedora') || startsWith(matrix.container, 'almalinux') || startsWith(matrix.container, 'centos')
- name: Install requirements (opensuse)
run: |
set -eEuxo pipefail
zypper install -y rustup
rustup toolchain add stable --profile minimal
if: startsWith(matrix.container, 'opensuse')
- name: Install requirements (archlinux)
run: pacman -Sy --noconfirm rust
if: startsWith(matrix.container, 'archlinux')
- name: Install requirements (alpine) - name: Install requirements (alpine)
run: apk --no-cache add bash cargo run: apk --no-cache add bash
shell: sh shell: sh
if: startsWith(matrix.container, 'alpine') if: startsWith(matrix.container, 'alpine')
- uses: taiki-e/checkout-action@v1 - uses: taiki-e/checkout-action@v1
@@ -153,19 +151,6 @@ jobs:
with: with:
tool: ${{ steps.tool-list.outputs.tool }} tool: ${{ steps.tool-list.outputs.tool }}
test-no-cargo:
runs-on: ubuntu-latest
timeout-minutes: 60
container: ubuntu
steps:
- uses: taiki-e/checkout-action@v1
- name: Generate tool list
id: tool-list
run: tools/ci/tool-list.sh >>"${GITHUB_OUTPUT}"
- uses: ./
with:
tool: ${{ steps.tool-list.outputs.tool }}
manifest: manifest:
runs-on: ubuntu-latest runs-on: ubuntu-latest
timeout-minutes: 60 timeout-minutes: 60

View File

@@ -10,6 +10,135 @@ Note: In this file, do not use the hard wrap in the middle of a sentence for com
## [Unreleased] ## [Unreleased]
## [2.39.1] - 2024-06-15
- Update `cargo-binstall@latest` to 1.7.1.
## [2.39.0] - 2024-06-15
- Update `cargo-binstall@latest` to 1.7.0.
## [2.38.7] - 2024-06-15
- Update `syft@latest` to 1.7.0.
- Update `just@latest` to 1.29.1.
- Update `rclone@latest` to 1.67.0.
## [2.38.6] - 2024-06-14
- Update `just@latest` to 1.29.0.
## [2.38.5] - 2024-06-13
- Update `typos@latest` to 1.22.7.
- Update `espup@latest` to 0.12.0.
## [2.38.4] - 2024-06-11
- Workaround Cygwin bash's buggy behavior. ([#534](https://github.com/taiki-e/install-action/pull/534))
This fixes an installation issue when default bash was overridden like the following:
```sh
echo "C:\tools\cygwin\bin" >> $GITHUB_PATH
```
## [2.38.3] - 2024-06-11
- Workaround MSYS64 bash's buggy behavior. ([#533](https://github.com/taiki-e/install-action/pull/533))
This fixes an installation issue when default bash was overridden like the following:
```sh
echo "C:\msys64\usr\bin" >> $GITHUB_PATH
```
- Update `typos@latest` to 1.22.4.
- Update `earthly@latest` to 0.8.14.
## [2.38.2] - 2024-06-10
- Update `syft@latest` to 1.6.0.
## [2.38.1] - 2024-06-10
- Update `biome@latest` to 1.8.1.
## [2.38.0] - 2024-06-09
- Support `earthly`. ([#520](https://github.com/taiki-e/install-action/pull/520), thanks @jayvdb)
- Support `deepsource`. ([#522](https://github.com/taiki-e/install-action/pull/522), thanks @jayvdb)
- Add `fallback: none` input option to ensure that fallback is not used. ([#517](https://github.com/taiki-e/install-action/pull/517))
- `cargo-nextest` installation no longer use `cargo-binstall`. ([#518](https://github.com/taiki-e/install-action/pull/518))
This improves security, performance, robustness of installation. See [#487](https://github.com/taiki-e/install-action/issues/487) for more.
- Update `dprint@latest` to 0.46.2.
- Workaround glibc compatibility issue on archlinux. ([#525](https://github.com/taiki-e/install-action/pull/525), thanks @jayvdb)
## [2.37.0] - 2024-06-08
- Support `rclone`. ([#511](https://github.com/taiki-e/install-action/pull/511), thanks @jayvdb)
- Support `xh`. ([#512](https://github.com/taiki-e/install-action/pull/512), thanks @jayvdb)
- Support `jaq`. ([#513](https://github.com/taiki-e/install-action/pull/513), thanks @jayvdb)
- Support `wait-for-them`. ([#514](https://github.com/taiki-e/install-action/pull/514), thanks @jayvdb)
- Update `cargo-binstall@latest` to 1.6.9.
- Update `typos@latest` to 1.22.3.
## [2.36.0] - 2024-06-07
- Support `cargo-zigbuild`. ([#508](https://github.com/taiki-e/install-action/pull/508), thanks @jayvdb)
## [2.35.0] - 2024-06-05
- Support `cargo-semver-checks`. ([#507](https://github.com/taiki-e/install-action/pull/507), thanks @jayvdb)
- Update `osv-scanner@latest` to 1.7.4. ([#506](https://github.com/taiki-e/install-action/pull/506), thanks @nmcdaines)
- Update `typos@latest` to 1.22.1.
- Update `protoc@latest` to 3.27.1.
- Update `just@latest` to 1.28.0.
## [2.34.3] - 2024-06-04
- Update `biome@latest` to 1.8.0.
## [2.34.2] - 2024-06-03
- Update `typos@latest` to 1.22.0.
## [2.34.1] - 2024-06-03
- Update `git-cliff@latest` to 2.3.0.
## [2.34.0] - 2024-06-01
- Support cargo-binstall fallback without cargo. ([#501](https://github.com/taiki-e/install-action/pull/501))
## [2.33.36] - 2024-06-01
- Update `cargo-llvm-cov@latest` to 0.6.10.
## [2.33.35] - 2024-05-28
- Update `syft@latest` to 1.5.0.
## [2.33.34] - 2024-05-26
- Update `dprint@latest` to 0.46.1.
## [2.33.33] - 2024-05-25 ## [2.33.33] - 2024-05-25
- Update `dprint@latest` to 0.46.0. - Update `dprint@latest` to 0.46.0.
@@ -2215,7 +2344,27 @@ Note: This release is considered a breaking change because installing on version
Initial release Initial release
[Unreleased]: https://github.com/taiki-e/install-action/compare/v2.33.33...HEAD [Unreleased]: https://github.com/taiki-e/install-action/compare/v2.39.1...HEAD
[2.39.1]: https://github.com/taiki-e/install-action/compare/v2.39.0...v2.39.1
[2.39.0]: https://github.com/taiki-e/install-action/compare/v2.38.7...v2.39.0
[2.38.7]: https://github.com/taiki-e/install-action/compare/v2.38.6...v2.38.7
[2.38.6]: https://github.com/taiki-e/install-action/compare/v2.38.5...v2.38.6
[2.38.5]: https://github.com/taiki-e/install-action/compare/v2.38.4...v2.38.5
[2.38.4]: https://github.com/taiki-e/install-action/compare/v2.38.3...v2.38.4
[2.38.3]: https://github.com/taiki-e/install-action/compare/v2.38.2...v2.38.3
[2.38.2]: https://github.com/taiki-e/install-action/compare/v2.38.1...v2.38.2
[2.38.1]: https://github.com/taiki-e/install-action/compare/v2.38.0...v2.38.1
[2.38.0]: https://github.com/taiki-e/install-action/compare/v2.37.0...v2.38.0
[2.37.0]: https://github.com/taiki-e/install-action/compare/v2.36.0...v2.37.0
[2.36.0]: https://github.com/taiki-e/install-action/compare/v2.35.0...v2.36.0
[2.35.0]: https://github.com/taiki-e/install-action/compare/v2.34.3...v2.35.0
[2.34.3]: https://github.com/taiki-e/install-action/compare/v2.34.2...v2.34.3
[2.34.2]: https://github.com/taiki-e/install-action/compare/v2.34.1...v2.34.2
[2.34.1]: https://github.com/taiki-e/install-action/compare/v2.34.0...v2.34.1
[2.34.0]: https://github.com/taiki-e/install-action/compare/v2.33.36...v2.34.0
[2.33.36]: https://github.com/taiki-e/install-action/compare/v2.33.35...v2.33.36
[2.33.35]: https://github.com/taiki-e/install-action/compare/v2.33.34...v2.33.35
[2.33.34]: https://github.com/taiki-e/install-action/compare/v2.33.33...v2.33.34
[2.33.33]: https://github.com/taiki-e/install-action/compare/v2.33.32...v2.33.33 [2.33.33]: https://github.com/taiki-e/install-action/compare/v2.33.32...v2.33.33
[2.33.32]: https://github.com/taiki-e/install-action/compare/v2.33.31...v2.33.32 [2.33.32]: https://github.com/taiki-e/install-action/compare/v2.33.31...v2.33.32
[2.33.31]: https://github.com/taiki-e/install-action/compare/v2.33.30...v2.33.31 [2.33.31]: https://github.com/taiki-e/install-action/compare/v2.33.30...v2.33.31

View File

@@ -10,6 +10,8 @@ improper_ctypes_definitions = "warn"
non_ascii_idents = "warn" non_ascii_idents = "warn"
rust_2018_idioms = "warn" rust_2018_idioms = "warn"
single_use_lifetimes = "warn" single_use_lifetimes = "warn"
unexpected_cfgs = { level = "warn", check-cfg = [
] }
unreachable_pub = "warn" unreachable_pub = "warn"
unsafe_op_in_unsafe_fn = "warn" unsafe_op_in_unsafe_fn = "warn"
[workspace.lints.clippy] [workspace.lints.clippy]
@@ -27,12 +29,13 @@ borrow_as_ptr = { level = "allow", priority = 1 } # https://github.com/rust-lang
declare_interior_mutable_const = { level = "allow", priority = 1 } # https://github.com/rust-lang/rust-clippy/issues/7665 declare_interior_mutable_const = { level = "allow", priority = 1 } # https://github.com/rust-lang/rust-clippy/issues/7665
doc_markdown = { level = "allow", priority = 1 } doc_markdown = { level = "allow", priority = 1 }
float_cmp = { level = "allow", priority = 1 } # https://github.com/rust-lang/rust-clippy/issues/7725 float_cmp = { level = "allow", priority = 1 } # https://github.com/rust-lang/rust-clippy/issues/7725
lint_groups_priority = { level = "allow", priority = 1 } # clippy bug: https://github.com/rust-lang/rust-clippy/issues/12270 incompatible_msrv = { level = "allow", priority = 1 } # buggy: doesn't consider cfg, https://github.com/rust-lang/rust-clippy/issues/12280, https://github.com/rust-lang/rust-clippy/issues/12257#issuecomment-2093667187
lint_groups_priority = { level = "allow", priority = 1 } # https://github.com/rust-lang/rust-clippy/issues/12270
manual_assert = { level = "allow", priority = 1 } manual_assert = { level = "allow", priority = 1 }
manual_range_contains = { level = "allow", priority = 1 } # https://github.com/rust-lang/rust-clippy/issues/6455#issuecomment-1225966395 manual_range_contains = { level = "allow", priority = 1 } # https://github.com/rust-lang/rust-clippy/issues/6455#issuecomment-1225966395
missing_errors_doc = { level = "allow", priority = 1 } missing_errors_doc = { level = "allow", priority = 1 }
module_name_repetitions = { level = "allow", priority = 1 } module_name_repetitions = { level = "allow", priority = 1 }
nonminimal_bool = { level = "allow", priority = 1 } # buggy https://github.com/rust-lang/rust-clippy/issues?q=is%3Aissue+is%3Aopen+nonminimal_bool nonminimal_bool = { level = "allow", priority = 1 } # buggy: https://github.com/rust-lang/rust-clippy/issues?q=is%3Aissue+is%3Aopen+nonminimal_bool
similar_names = { level = "allow", priority = 1 } similar_names = { level = "allow", priority = 1 }
single_match = { level = "allow", priority = 1 } single_match = { level = "allow", priority = 1 }
single_match_else = { level = "allow", priority = 1 } single_match_else = { level = "allow", priority = 1 }

View File

@@ -4,13 +4,11 @@
(Example: [ffbd316](https://github.com/taiki-e/install-action/commit/ffbd316e0fe98cb460dae3a66cd2ef9deb398bb1)) (Example: [ffbd316](https://github.com/taiki-e/install-action/commit/ffbd316e0fe98cb460dae3a66cd2ef9deb398bb1))
1\. Add tool name to the table in ["Supported tools" section in `README.md`](https://github.com/taiki-e/install-action#supported-tools). 1\. Add base manifest to [`tools/codegen/base`](tools/codegen/base) directory.
2\. Add base manifest to [`tools/codegen/base`](tools/codegen/base) directory.
See JSON files in `tools/codegen/base` directory for examples of the manifest. See JSON files in `tools/codegen/base` directory for examples of the manifest.
3\. Generate manifest with the following command (replace `<tool>` with the tool name). 2\. Generate manifest with the following command (replace `<tool>` with the tool name).
```sh ```sh
./tools/manifest.sh <tool> ./tools/manifest.sh <tool>
@@ -23,6 +21,14 @@ See JSON files in `tools/codegen/base` directory for examples of the manifest.
> GITHUB_TOKEN=$(gh auth status --show-token 2>&1 | sed -n 's/^.*Token: \(.*\)$/\1/p') ./tools/manifest.sh <tool> > GITHUB_TOKEN=$(gh auth status --show-token 2>&1 | sed -n 's/^.*Token: \(.*\)$/\1/p') ./tools/manifest.sh <tool>
> ``` > ```
## Refresh TOOLS.md
To update `TOOLS.md`, run
```sh
./tools/update-markdown.sh
```
## Troubleshooting ## Troubleshooting
If one of the CI builds fails due to a bin path or release asset_name, fix the problem in the base If one of the CI builds fails due to a bin path or release asset_name, fix the problem in the base

View File

@@ -1,3 +1,4 @@
<!-- omit in toc -->
# install-action # install-action
[![release](https://img.shields.io/github/release/taiki-e/install-action?style=flat-square&logo=github)](https://github.com/taiki-e/install-action/releases/latest) [![release](https://img.shields.io/github/release/taiki-e/install-action?style=flat-square&logo=github)](https://github.com/taiki-e/install-action/releases/latest)
@@ -74,63 +75,21 @@ Or:
## Supported tools ## Supported tools
<!-- See [TOOLS.md](TOOLS.md) for the list of tools that are installed from manifests managed in this action.
License should use SPDX license identifiers.
https://spdx.org/licenses
-->
| Name | Where binaries will be installed | Where will it be installed from | Supported platform | License | If a tool not included in the list above is specified, this action uses [cargo-binstall] as a fallback.
| ---- | -------------------------------- | ------------------------------- | ------------------ | ------- |
| [**biome**](https://biomejs.dev)| `/usr/local/bin` | [GitHub Releases](https://github.com/biomejs/biome/releases) | Linux, macOS, Windows | [MIT](https://github.com/biomejs/biome/blob/HEAD/LICENSE) |
| [**cargo-audit**](https://github.com/rustsec/rustsec/tree/HEAD/cargo-audit) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/rustsec/rustsec/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/rustsec/rustsec/blob/HEAD/cargo-audit/LICENSE-APACHE) OR [MIT](https://github.com/rustsec/rustsec/blob/HEAD/cargo-audit/LICENSE-MIT) |
| [**cargo-binstall**][cargo-binstall] | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/cargo-bins/cargo-binstall/releases) | Linux, macOS, Windows | [GPL-3.0](https://github.com/cargo-bins/cargo-binstall/blob/HEAD/crates/bin/LICENSE) |
| [**cargo-careful**](https://github.com/RalfJung/cargo-careful) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/RalfJung/cargo-careful/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/RalfJung/cargo-careful/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/RalfJung/cargo-careful/blob/HEAD/LICENSE-MIT) |
| [**cargo-cyclonedx**](https://github.com/CycloneDX/cyclonedx-rust-cargo) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/CycloneDX/cyclonedx-rust-cargo/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/CycloneDX/cyclonedx-rust-cargo/blob/HEAD/LICENSE) |
| [**cargo-deny**](https://github.com/EmbarkStudios/cargo-deny) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/EmbarkStudios/cargo-deny/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/EmbarkStudios/cargo-deny/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/EmbarkStudios/cargo-deny/blob/HEAD/LICENSE-MIT) |
| [**cargo-dinghy**](https://github.com/sonos/dinghy) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/sonos/dinghy/releases) | Linux, macOS | [Apache-2.0](https://github.com/sonos/dinghy/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/sonos/dinghy/blob/HEAD/LICENSE-MIT) |
| [**cargo-export**](https://github.com/bazhenov/cargo-export) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/bazhenov/cargo-export/releases) | Linux, macOS, Windows | [MIT](https://github.com/bazhenov/cargo-export/blob/HEAD/LICENSE) |
| [**cargo-hack**](https://github.com/taiki-e/cargo-hack) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/taiki-e/cargo-hack/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/taiki-e/cargo-hack/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/cargo-hack/blob/HEAD/LICENSE-MIT) |
| [**cargo-llvm-cov**](https://github.com/taiki-e/cargo-llvm-cov) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/taiki-e/cargo-llvm-cov/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/taiki-e/cargo-llvm-cov/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/cargo-llvm-cov/blob/HEAD/LICENSE-MIT) |
| [**cargo-machete**](https://github.com/bnjbvr/cargo-machete) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/bnjbvr/cargo-machete/releases) | Linux, macOS, Windows | [MIT](https://github.com/bnjbvr/cargo-machete/blob/HEAD/LICENSE.md) |
| [**cargo-make**](https://github.com/sagiegurari/cargo-make) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/sagiegurari/cargo-make/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/sagiegurari/cargo-make/blob/HEAD/LICENSE) |
| [**cargo-minimal-versions**](https://github.com/taiki-e/cargo-minimal-versions) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/taiki-e/cargo-minimal-versions/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/taiki-e/cargo-minimal-versions/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/cargo-minimal-versions/blob/HEAD/LICENSE-MIT) |
| [**cargo-no-dev-deps**](https://github.com/taiki-e/cargo-no-dev-deps) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/taiki-e/cargo-no-dev-deps/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/taiki-e/cargo-no-dev-deps/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/cargo-no-dev-deps/blob/HEAD/LICENSE-MIT) |
| [**cargo-rdme**](https://github.com/orium/cargo-rdme) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/orium/cargo-rdme/releases) | Linux, macOS, Windows | [MPL-2.0](https://github.com/orium/cargo-rdme/blob/HEAD/LICENSE.md) |
| [**cargo-sort**](https://github.com/DevinR528/cargo-sort) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/DevinR528/cargo-sort/releases) | Linux, macOS, Windows | [Apache-2.0 OR MIT](https://github.com/DevinR528/cargo-sort/blob/55ec89082466f6bb246d870a8d56d166a8e1f08b/Cargo.toml#L5) |
| [**cargo-spellcheck**](https://github.com/drahnr/cargo-spellcheck) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/drahnr/cargo-spellcheck/releases) | Linux and Windows | [LGPLv2.1](https://github.com/drahnr/cargo-spellcheck/blob/f60c81ad0134c12faf08715f08d14f66e749f6e7/docs/checkers.md#nlprules) |
| [**cargo-tarpaulin**](https://github.com/xd009642/tarpaulin) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/xd009642/tarpaulin/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/xd009642/tarpaulin/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/xd009642/tarpaulin/blob/HEAD/LICENSE-MIT) |
| [**cargo-udeps**](https://github.com/est31/cargo-udeps) | `$CARGO_HOME/bin` | [GitHub Release](https://github.com/est31/cargo-udeps/releases) | Linux, macOS, Windows | [Apache-2.0 OR MIT](https://github.com/est31/cargo-udeps/blob/HEAD/LICENSE) |
| [**cargo-valgrind**](https://github.com/jfrimmel/cargo-valgrind) | `$CARGO_HOME/bin` | [GitHub Release](https://github.com/jfrimmel/cargo-valgrind/releases) | Linux, macOS, Windows | [MIT](https://github.com/jfrimmel/cargo-valgrind/blob/HEAD/LICENSE-MIT) or [Apache-2.0](https://github.com/jfrimmel/cargo-valgrind/blob/HEAD/LICENSE-APACHE) |
| [**cross**](https://github.com/cross-rs/cross) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/cross-rs/cross/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/cross-rs/cross/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/cross-rs/cross/blob/HEAD/LICENSE-MIT) |
| [**dprint**](https://github.com/dprint/dprint) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/dprint/dprint/releases) | Linux, macOS, Windows | [MIT](https://github.com/dprint/dprint/blob/HEAD/LICENSE) |
| [**espup**](https://github.com/esp-rs/espup) | `$CARGO_HOME/bin` | [GitHub Release](https://github.com/esp-rs/espup/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/esp-rs/espup/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/esp-rs/espup/blob/HEAD/LICENSE-MIT) |
| [**git-cliff**](https://github.com/orhun/git-cliff) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/orhun/git-cliff/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/orhun/git-cliff/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/orhun/git-cliff/blob/HEAD/LICENSE-MIT) |
| [**grcov**](https://github.com/mozilla/grcov) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/mozilla/grcov/releases) | Linux, macOS, Windows | [MPL-2.0](https://github.com/mozilla/grcov/blob/HEAD/LICENSE-MPL-2.0) |
| [**hyperfine**](https://github.com/sharkdp/hyperfine) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/sharkdp/hyperfine/releases) | Linux, macOS, Windows | [MIT](https://github.com/sharkdp/hyperfine/blob/HEAD/LICENSE-MIT) or [Apache-2.0](https://github.com/sharkdp/hyperfine/blob/HEAD/LICENSE-APACHE) |
| [**just**](https://github.com/casey/just) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/casey/just/releases) | Linux, macOS, Windows | [CC0-1.0](https://github.com/casey/just/blob/HEAD/LICENSE) |
| [**mdbook-linkcheck**](https://github.com/Michael-F-Bryan/mdbook-linkcheck) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/Michael-F-Bryan/mdbook-linkcheck/releases) | Linux, macOS, Windows | [MIT](https://github.com/Michael-F-Bryan/mdbook-linkcheck/blob/HEAD/LICENSE) |
| [**mdbook**](https://github.com/rust-lang/mdBook) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/rust-lang/mdBook/releases) | Linux, macOS, Windows | [MPL-2.0](https://github.com/rust-lang/mdBook/blob/HEAD/LICENSE) |
| [**nextest**](https://github.com/nextest-rs/nextest) (alias: `cargo-nextest`) | `$CARGO_HOME/bin` | cargo-binstall | Linux, macOS, Windows | [Apache-2.0](https://github.com/nextest-rs/nextest/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/nextest-rs/nextest/blob/HEAD/LICENSE-MIT) |
| [**osv-scanner**]( https://github.com/google/osv-scanner) | `/usr/local/bin` | [GitHub Releases]( https://github.com/google/osv-scanner/releases) | Linux, macOS, Windows | [Apache-2](https://github.com/google/osv-scanner/blob/HEAD/LICENSE) |
| [**parse-changelog**](https://github.com/taiki-e/parse-changelog) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/taiki-e/parse-changelog/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/taiki-e/parse-changelog/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/parse-changelog/blob/HEAD/LICENSE-MIT) |
| [**protoc**](https://github.com/protocolbuffers/protobuf) | `$HOME/.install-action/bin` | [GitHub Releases](https://github.com/protocolbuffers/protobuf/releases) | Linux, macOS, Windows | [BSD-3-Clause](https://github.com/protocolbuffers/protobuf/blob/HEAD/LICENSE) |
| [**sccache**](https://github.com/mozilla/sccache) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/mozilla/sccache/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/mozilla/sccache/blob/HEAD/LICENSE) |
| [**shellcheck**](https://www.shellcheck.net) | `/usr/local/bin` | [GitHub Releases](https://github.com/koalaman/shellcheck/releases) | Linux, macOS, Windows | [GPL-3.0-or-later](https://github.com/koalaman/shellcheck/blob/HEAD/LICENSE) |
| [**shfmt**](https://github.com/mvdan/sh) | `/usr/local/bin` | [GitHub Releases](https://github.com/mvdan/sh/releases) | Linux, macOS, Windows | [BSD-3-Clause](https://github.com/mvdan/sh/blob/HEAD/LICENSE) |
| [**syft**](https://github.com/anchore/syft) | `/usr/local/bin` | [Github Releases](https://github.com/anchore/syft/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/anchore/syft/blob/HEAD/LICENSE) |
| [**typos**](https://github.com/crate-ci/typos) | `$CARGO_HOME/bin` | [Github Releases](https://github.com/crate-ci/typos/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/crate-ci/typos/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/crate-ci/typos/blob/HEAD/LICENSE-MIT) |
| [**valgrind**](https://valgrind.org) | `/snap/bin` | [snap](https://snapcraft.io/install/valgrind/ubuntu) | Linux | [GPL-2.0-or-later](https://valgrind.org/docs/manual/license.gpl.html) |
| [**wasm-bindgen**](https://github.com/rustwasm/wasm-bindgen) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/rustwasm/wasm-bindgen/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/rustwasm/wasm-bindgen/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/rustwasm/wasm-bindgen/blob/HEAD/LICENSE-MIT) |
| [**wasm-pack**](https://github.com/rustwasm/wasm-pack) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/rustwasm/wasm-pack/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/rustwasm/wasm-pack/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/rustwasm/wasm-pack/blob/HEAD/LICENSE-MIT) |
| [**wasmtime**](https://github.com/bytecodealliance/wasmtime) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/bytecodealliance/wasmtime/releases) | Linux, macOS, Windows | [Apache-2.0 WITH LLVM-exception](https://github.com/bytecodealliance/wasmtime/blob/HEAD/LICENSE) |
| [**xbuild**](https://github.com/rust-mobile/xbuild) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/rust-mobile/xbuild/releases) | Linux, macOS, Windows | Apache-2.0 OR MIT |
| [**zola**](https://github.com/getzola/zola) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/getzola/zola/releases) | Linux, macOS, Windows | [MIT](https://github.com/getzola/zola/blob/HEAD/LICENSE) |
If `$CARGO_HOME/bin` is not available, Rust-related binaries will be installed to `$HOME/.cargo/bin`.<br> If you want to ensure that fallback is not used, use `fallback: none`.
If `$HOME/.cargo/bin` is not available, Rust-related binaries will be installed to `/usr/local/bin`.<br>
If `/usr/local/bin` is not available, binaries will be installed to `$HOME/.install-action/bin`.<br>
**If a tool not included in the list above is specified, this action uses [cargo-binstall] as a fallback.** ```yaml
- uses: taiki-e/install-action@v2
with:
tool: cargo-hack
# Possible values:
# - none: disable all fallback
# - cargo-binstall (default): cargo-binstall (includes quickinstall)
fallback: none
```
### Add support for new tool ### Add support for new tool
@@ -146,13 +105,14 @@ Additionally, we also verify signature if the tool distributes signed archives.
See the linked documentation for information on security when installed using [snap](https://snapcraft.io/docs) or [cargo-binstall](https://github.com/cargo-bins/cargo-binstall#faq). See the linked documentation for information on security when installed using [snap](https://snapcraft.io/docs) or [cargo-binstall](https://github.com/cargo-bins/cargo-binstall#faq).
See the [Supported tools section](#supported-tools) for how to ensure that fallback is not used.
## Compatibility ## Compatibility
This action has been tested for GitHub-hosted runners (Ubuntu, macOS, Windows) and containers (Ubuntu, Debian, Fedora, CentOS, Alma, openSUSE, Arch, Alpine). This action has been tested for GitHub-hosted runners (Ubuntu, macOS, Windows) and containers (Ubuntu, Debian, Fedora, CentOS, Alma, openSUSE, Arch, Alpine).
To use this action in self-hosted runners or in containers, at least the following tools are required: To use this action in self-hosted runners or in containers, at least the following tools are required:
- bash - bash
- cargo (if you use cargo-binstall fallback)
## Related Projects ## Related Projects

69
TOOLS.md Normal file
View File

@@ -0,0 +1,69 @@
# Tools
This is a list of tools that are installed from manifests managed in this action.
If a tool not included in the list below is specified, this action uses [cargo-binstall] as a fallback.
See the [Supported tools section in README.md](README.md#supported-tools) for how to ensure that fallback is not used.
> If `$CARGO_HOME/bin` is not available, Rust-related binaries will be installed to `$HOME/.cargo/bin`.<br>
> If `$HOME/.cargo/bin` is not available, Rust-related binaries will be installed to `/usr/local/bin`.<br>
> If `/usr/local/bin` is not available, binaries will be installed to `$HOME/.install-action/bin`.<br>
| Name | Where binaries will be installed | Where will it be installed from | Supported platform | License |
| ---- | -------------------------------- | ------------------------------- | ------------------ | ------- |
| [**biome**](https://biomejs.dev) | `/usr/local/bin` | [GitHub Releases](https://github.com/biomejs/biome/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/biomejs/biome/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/biomejs/biome/blob/main/LICENSE-MIT) |
| [**cargo-audit**](https://github.com/rustsec/rustsec/tree/HEAD/cargo-audit) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/rustsec/rustsec/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/rustsec/rustsec/blob/HEAD/cargo-audit/LICENSE-APACHE) OR [MIT](https://github.com/rustsec/rustsec/blob/HEAD/cargo-audit/LICENSE-MIT) |
| [**cargo-binstall**](https://github.com/cargo-bins/cargo-binstall) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/cargo-bins/cargo-binstall/releases) | Linux, macOS, Windows | [GPL-3.0](https://github.com/cargo-bins/cargo-binstall/blob/HEAD/crates/bin/LICENSE) |
| [**cargo-careful**](https://github.com/RalfJung/cargo-careful) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/RalfJung/cargo-careful/releases) | Linux, macOS, Windows | [MIT](https://github.com/RalfJung/cargo-careful/blob/master/LICENSE-MIT) OR [Apache-2.0](https://github.com/RalfJung/cargo-careful/blob/master/LICENSE-APACHE) |
| [**cargo-cyclonedx**](https://github.com/CycloneDX/cyclonedx-rust-cargo) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/CycloneDX/cyclonedx-rust-cargo/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/CycloneDX/cyclonedx-rust-cargo/blob/main/LICENSE) |
| [**cargo-deny**](https://github.com/EmbarkStudios/cargo-deny) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/EmbarkStudios/cargo-deny/releases) | Linux, macOS, Windows | [MIT](https://github.com/EmbarkStudios/cargo-deny/blob/main/LICENSE-MIT) OR [Apache-2.0](https://github.com/EmbarkStudios/cargo-deny/blob/main/LICENSE-APACHE) |
| [**cargo-dinghy**](https://github.com/sonos/dinghy) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/sonos/dinghy/releases) | Linux, macOS | [MIT](https://github.com/sonos/dinghy/blob/main/LICENSE-MIT) OR [Apache-2.0](https://github.com/sonos/dinghy/blob/main/LICENSE-APACHE) |
| [**cargo-export**](https://github.com/bazhenov/cargo-export) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/bazhenov/cargo-export/releases) | Linux, macOS, Windows | [MIT](https://github.com/bazhenov/cargo-export/blob/master/LICENSE) |
| [**cargo-hack**](https://github.com/taiki-e/cargo-hack) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/taiki-e/cargo-hack/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/taiki-e/cargo-hack/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/cargo-hack/blob/main/LICENSE-MIT) |
| [**cargo-llvm-cov**](https://github.com/taiki-e/cargo-llvm-cov) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/taiki-e/cargo-llvm-cov/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/taiki-e/cargo-llvm-cov/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/cargo-llvm-cov/blob/main/LICENSE-MIT) |
| [**cargo-machete**](https://github.com/bnjbvr/cargo-machete) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/bnjbvr/cargo-machete/releases) | Linux, macOS, Windows | [MIT](https://github.com/bnjbvr/cargo-machete/blob/main/LICENSE.md) |
| [**cargo-make**](https://github.com/sagiegurari/cargo-make) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/sagiegurari/cargo-make/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/sagiegurari/cargo-make/blob/master/LICENSE) |
| [**cargo-minimal-versions**](https://github.com/taiki-e/cargo-minimal-versions) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/taiki-e/cargo-minimal-versions/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/taiki-e/cargo-minimal-versions/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/cargo-minimal-versions/blob/main/LICENSE-MIT) |
| [**cargo-nextest**](https://github.com/nextest-rs/nextest) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/nextest-rs/nextest/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/nextest-rs/nextest/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/nextest-rs/nextest/blob/main/LICENSE-MIT) |
| [**cargo-no-dev-deps**](https://github.com/taiki-e/cargo-no-dev-deps) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/taiki-e/cargo-no-dev-deps/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/taiki-e/cargo-no-dev-deps/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/cargo-no-dev-deps/blob/main/LICENSE-MIT) |
| [**cargo-rdme**](https://github.com/orium/cargo-rdme) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/orium/cargo-rdme/releases) | Linux, macOS, Windows | [MPL-2.0](https://github.com/orium/cargo-rdme/blob/main/LICENSE.md) |
| [**cargo-semver-checks**](https://github.com/obi1kenobi/cargo-semver-checks) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/obi1kenobi/cargo-semver-checks/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/obi1kenobi/cargo-semver-checks/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/obi1kenobi/cargo-semver-checks/blob/main/LICENSE-MIT) |
| [**cargo-sort**](https://github.com/DevinR528/cargo-sort) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/DevinR528/cargo-sort/releases) | Linux, macOS, Windows | [Apache-2.0 OR MIT](https://github.com/DevinR528/cargo-sort/blob/v1.0.9/Cargo.toml#L5) |
| [**cargo-spellcheck**](https://github.com/drahnr/cargo-spellcheck) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/drahnr/cargo-spellcheck/releases) | Linux, Windows | [LGPLv2.1](https://github.com/drahnr/cargo-spellcheck/blob/master/LICENSE-LGPL) |
| [**cargo-tarpaulin**](https://github.com/xd009642/tarpaulin) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/xd009642/tarpaulin/releases) | Linux, macOS, Windows | [MIT](https://github.com/xd009642/tarpaulin/blob/develop/LICENSE-MIT) OR [Apache-2.0](https://github.com/xd009642/tarpaulin/blob/develop/LICENSE-APACHE) |
| [**cargo-udeps**](https://github.com/est31/cargo-udeps) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/est31/cargo-udeps/releases) | Linux, macOS, Windows | [Apache-2.0 OR MIT](https://github.com/est31/cargo-udeps/blob/HEAD/LICENSE) |
| [**cargo-valgrind**](https://github.com/jfrimmel/cargo-valgrind) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/jfrimmel/cargo-valgrind/releases) | Linux, macOS, Windows | [MIT](https://github.com/jfrimmel/cargo-valgrind/blob/master/LICENSE-MIT) OR [Apache-2.0](https://github.com/jfrimmel/cargo-valgrind/blob/master/LICENSE-APACHE) |
| [**cargo-zigbuild**](https://github.com/rust-cross/cargo-zigbuild) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/rust-cross/cargo-zigbuild/releases) | Linux, macOS, Windows | [MIT](https://github.com/rust-cross/cargo-zigbuild/blob/main/LICENSE) |
| [**cross**](https://github.com/cross-rs/cross) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/cross-rs/cross/releases) | Linux, macOS, Windows | [MIT](https://github.com/cross-rs/cross/blob/main/LICENSE-MIT) OR [Apache-2.0](https://github.com/cross-rs/cross/blob/main/LICENSE-APACHE) |
| [**deepsource**](https://github.com/DeepSourceCorp/cli) | `/usr/local/bin` | [GitHub Releases](https://github.com/DeepSourceCorp/cli/releases) | Linux, macOS, Windows | [BSD-2-Clause](https://github.com/DeepSourceCorp/cli/blob/master/LICENSE) |
| [**dprint**](https://github.com/dprint/dprint) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/dprint/dprint/releases) | Linux, macOS, Windows | [MIT](https://github.com/dprint/dprint/blob/main/LICENSE) |
| [**earthly**](https://github.com/earthly/earthly) | `/usr/local/bin` | [GitHub Releases](https://github.com/earthly/earthly/releases) | Linux, macOS, Windows | [MPL-2.0](https://github.com/earthly/earthly/blob/main/LICENSE) |
| [**editorconfig-checker**](https://github.com/editorconfig-checker/editorconfig-checker) | `/usr/local/bin` | [GitHub Releases](https://github.com/editorconfig-checker/editorconfig-checker/releases) | Linux, macOS, Windows | [MIT](https://github.com/editorconfig-checker/editorconfig-checker/blob/main/LICENSE) |
| [**espup**](https://github.com/esp-rs/espup) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/esp-rs/espup/releases) | Linux, macOS, Windows | [MIT](https://github.com/esp-rs/espup/blob/main/LICENSE-MIT) OR [Apache-2.0](https://github.com/esp-rs/espup/blob/main/LICENSE-APACHE) |
| [**git-cliff**](https://github.com/orhun/git-cliff) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/orhun/git-cliff/releases) | Linux, macOS, Windows | [MIT](https://github.com/orhun/git-cliff/blob/main/LICENSE-MIT) OR [Apache-2.0](https://github.com/orhun/git-cliff/blob/main/LICENSE-APACHE) |
| [**grcov**](https://github.com/mozilla/grcov) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/mozilla/grcov/releases) | Linux, macOS, Windows | [MPL-2.0](https://github.com/mozilla/grcov/blob/HEAD/LICENSE-MPL-2.0) |
| [**hyperfine**](https://github.com/sharkdp/hyperfine) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/sharkdp/hyperfine/releases) | Linux, macOS, Windows | [MIT](https://github.com/sharkdp/hyperfine/blob/master/LICENSE-MIT) OR [Apache-2.0](https://github.com/sharkdp/hyperfine/blob/master/LICENSE-APACHE) |
| [**jaq**](https://github.com/01mf02/jaq) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/01mf02/jaq/releases) | Linux, macOS, Windows | [MIT](https://github.com/01mf02/jaq/blob/main/LICENSE-MIT) |
| [**just**](https://github.com/casey/just) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/casey/just/releases) | Linux, macOS, Windows | [CC0-1.0](https://github.com/casey/just/blob/master/LICENSE) |
| [**mdbook**](https://github.com/rust-lang/mdBook) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/rust-lang/mdBook/releases) | Linux, macOS, Windows | [MPL-2.0](https://github.com/rust-lang/mdBook/blob/master/LICENSE) |
| [**mdbook-linkcheck**](https://github.com/Michael-F-Bryan/mdbook-linkcheck) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/Michael-F-Bryan/mdbook-linkcheck/releases) | Linux, macOS, Windows | [MIT](https://github.com/Michael-F-Bryan/mdbook-linkcheck/blob/master/LICENSE) |
| [**osv-scanner**](https://github.com/google/osv-scanner) | `/usr/local/bin` | [GitHub Releases](https://github.com/google/osv-scanner/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/google/osv-scanner/blob/main/LICENSE) |
| [**parse-changelog**](https://github.com/taiki-e/parse-changelog) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/taiki-e/parse-changelog/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/taiki-e/parse-changelog/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/parse-changelog/blob/main/LICENSE-MIT) |
| [**protoc**](https://github.com/protocolbuffers/protobuf) | `/usr/local/bin` | [GitHub Releases](https://github.com/protocolbuffers/protobuf/releases) | Linux, macOS, Windows | [BSD-3-Clause](https://github.com/protocolbuffers/protobuf/blob/HEAD/LICENSE) |
| [**rclone**](https://github.com/rclone/rclone) | `/usr/local/bin` | [GitHub Releases](https://github.com/rclone/rclone/releases) | Linux, macOS, Windows | [MIT](https://github.com/rclone/rclone/blob/master/COPYING) |
| [**sccache**](https://github.com/mozilla/sccache) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/mozilla/sccache/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/mozilla/sccache/blob/main/LICENSE) |
| [**shellcheck**](https://www.shellcheck.net) | `/usr/local/bin` | [GitHub Releases](https://github.com/koalaman/shellcheck/releases) | Linux, macOS, Windows | [GPL-3.0](https://github.com/koalaman/shellcheck/blob/master/LICENSE) |
| [**shfmt**](https://github.com/mvdan/sh) | `/usr/local/bin` | [GitHub Releases](https://github.com/mvdan/sh/releases) | Linux, macOS, Windows | [BSD-3-Clause](https://github.com/mvdan/sh/blob/master/LICENSE) |
| [**syft**](https://github.com/anchore/syft) | `/usr/local/bin` | [GitHub Releases](https://github.com/anchore/syft/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/anchore/syft/blob/main/LICENSE) |
| [**typos**](https://github.com/crate-ci/typos) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/crate-ci/typos/releases) | Linux, macOS, Windows | [MIT](https://github.com/crate-ci/typos/blob/master/LICENSE-MIT) OR [Apache-2.0](https://github.com/crate-ci/typos/blob/master/LICENSE-APACHE) |
| [**valgrind**](https://valgrind.org/) | `/snap/bin` | [snap](https://snapcraft.io/install/valgrind/ubuntu) | Linux | [GPL-2.0](https://sourceware.org/git/?p=valgrind.git;a=blob;f=COPYING;hb=HEAD) |
| [**wait-for-them**](https://github.com/shenek/wait-for-them) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/shenek/wait-for-them/releases) | Linux, macOS, Windows | [GPL-3.0](https://github.com/shenek/wait-for-them/blob/v0.4.0/Cargo.toml#L7) |
| [**wasm-bindgen**](https://github.com/rustwasm/wasm-bindgen) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/rustwasm/wasm-bindgen/releases) | Linux, macOS, Windows | [MIT](https://github.com/rustwasm/wasm-bindgen/blob/main/LICENSE-MIT) OR [Apache-2.0](https://github.com/rustwasm/wasm-bindgen/blob/main/LICENSE-APACHE) |
| [**wasm-pack**](https://github.com/rustwasm/wasm-pack) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/rustwasm/wasm-pack/releases) | Linux, macOS, Windows | [MIT](https://github.com/rustwasm/wasm-pack/blob/master/LICENSE-MIT) OR [Apache-2.0](https://github.com/rustwasm/wasm-pack/blob/master/LICENSE-APACHE) |
| [**wasmtime**](https://github.com/bytecodealliance/wasmtime) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/bytecodealliance/wasmtime/releases) | Linux, macOS, Windows | [Apache-2.0 WITH LLVM-exception](https://github.com/bytecodealliance/wasmtime/blob/main/LICENSE) |
| [**xbuild**](https://github.com/rust-mobile/xbuild) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/rust-mobile/xbuild/releases) | Linux, macOS, Windows | [Apache-2.0 OR MIT](https://github.com/rust-mobile/xbuild/blob/v0.2.0/xbuild/Cargo.toml#L7) |
| [**xh**](https://github.com/ducaale/xh) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/ducaale/xh/releases) | Linux, macOS, Windows | [MIT](https://github.com/ducaale/xh/blob/master/LICENSE) |
| [**zola**](https://github.com/getzola/zola) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/getzola/zola/releases) | Linux, macOS, Windows | [MIT](https://github.com/getzola/zola/blob/master/LICENSE) |
[cargo-binstall]: https://github.com/cargo-bins/cargo-binstall

View File

@@ -10,6 +10,10 @@ inputs:
description: Whether to enable checksums description: Whether to enable checksums
required: false required: false
default: 'true' default: 'true'
fallback:
description: Whether to use fallback (none or cargo-binstall)
required: false
default: 'cargo-binstall'
# Note: # Note:
# - inputs.* should be manually mapped to INPUT_* due to https://github.com/actions/runner/issues/665 # - inputs.* should be manually mapped to INPUT_* due to https://github.com/actions/runner/issues/665
@@ -22,3 +26,4 @@ runs:
env: env:
INPUT_TOOL: ${{ inputs.tool }} INPUT_TOOL: ${{ inputs.tool }}
INPUT_CHECKSUM: ${{ inputs.checksum }} INPUT_CHECKSUM: ${{ inputs.checksum }}
INPUT_FALLBACK: ${{ inputs.fallback }}

99
main.sh
View File

@@ -197,7 +197,29 @@ read_manifest() {
exact_version="${version}" exact_version="${version}"
else else
manifest=$(call_jq -r ".\"${exact_version}\"" "${manifest_dir}/${tool}.json") manifest=$(call_jq -r ".\"${exact_version}\"" "${manifest_dir}/${tool}.json")
if [[ "${rust_crate}" != "null" ]]; then
# TODO: don't hardcode tool name and use 'immediate_yank_reflection' field in base manifest.
case "${tool}" in
cargo-nextest | nextest)
crate_info=$(retry curl --proto '=https' --tlsv1.2 -fsSL --retry 10 "https://crates.io/api/v1/crates/${rust_crate}")
while true; do
yanked=$(jq <<<"${crate_info}" -r ".versions[] | select(.num == \"${exact_version}\") | .yanked")
if [[ "${yanked}" != "true" ]]; then
break
fi fi
previous_stable_version=$(jq <<<"${manifest}" -r '.previous_stable_version')
if [[ "${previous_stable_version}" == "null" ]]; then
break
fi
info "${tool}@${exact_version} is yanked; downgrade to ${previous_stable_version}"
exact_version="${previous_stable_version}"
manifest=$(jq -r ".\"${exact_version}\"" "${manifest_dir}/${tool}.json")
done
;;
esac
fi
fi
case "${host_os}" in case "${host_os}" in
linux) linux)
# Static-linked binaries compiled for linux-musl will also work on linux-gnu systems and are # Static-linked binaries compiled for linux-musl will also work on linux-gnu systems and are
@@ -212,6 +234,21 @@ read_manifest() {
# TODO: However, a warning may make sense. # TODO: However, a warning may make sense.
host_platform="${host_arch}_linux_gnu" host_platform="${host_arch}_linux_gnu"
download_info=$(call_jq <<<"${manifest}" -r ".${host_platform}") download_info=$(call_jq <<<"${manifest}" -r ".${host_platform}")
elif [[ "${host_env}" == "gnu" ]]; then
# TODO: don't hardcode tool name and use 'prefer_linux_gnu' field in base manifest.
case "${tool}" in
cargo-nextest | nextest)
# TODO: don't hardcode required glibc version
required_glibc_version=2.27
higher_glibc_version=$(sort <<<"${required_glibc_version}"$'\n'"${host_glibc_version}" -Vu | tail -1)
if [[ "${higher_glibc_version}" == "${host_glibc_version}" ]]; then
# musl build of nextest is slow, so use glibc build if host_env is gnu.
# https://github.com/taiki-e/install-action/issues/13
host_platform="${host_arch}_linux_gnu"
download_info=$(jq <<<"${manifest}" -r ".${host_platform}")
fi
;;
esac
fi fi
;; ;;
macos | windows) macos | windows)
@@ -363,7 +400,7 @@ init_install_action_bin_dir() {
} }
canonicalize_windows_path() { canonicalize_windows_path() {
case "${host_os}" in case "${host_os}" in
windows) sed <<<"$1" 's/^\/c\//C:\\/; s/\//\\/g' ;; windows) sed <<<"$1" 's/^\/cygdrive\//\//; s/^\/c\//C:\\/; s/\//\\/g' ;;
*) echo "$1" ;; *) echo "$1" ;;
esac esac
} }
@@ -402,12 +439,25 @@ case "${enable_checksum}" in
*) bail "'checksum' input option must be 'true' or 'false': '${enable_checksum}'" ;; *) bail "'checksum' input option must be 'true' or 'false': '${enable_checksum}'" ;;
esac esac
fallback="${INPUT_FALLBACK:-}"
case "${fallback}" in
none | cargo-binstall) ;;
*) bail "'fallback' input option must be 'none' or 'cargo-binstall': '${fallback}'" ;;
esac
# Refs: https://github.com/rust-lang/rustup/blob/HEAD/rustup-init.sh # Refs: https://github.com/rust-lang/rustup/blob/HEAD/rustup-init.sh
base_distro="" base_distro=""
exe="" exe=""
case "$(uname -s)" in case "$(uname -s)" in
Linux) Linux)
host_os=linux host_os=linux
ldd_version=$(ldd --version 2>&1 || true)
if grep <<<"${ldd_version}" -q 'musl'; then
host_env="musl"
else
host_env="gnu"
host_glibc_version=$(grep <<<"${ldd_version}" -E "GLIBC|GNU libc" | sed "s/.* //g")
fi
if grep -q '^ID_LIKE=' /etc/os-release; then if grep -q '^ID_LIKE=' /etc/os-release; then
base_distro=$(grep '^ID_LIKE=' /etc/os-release | cut -d= -f2) base_distro=$(grep '^ID_LIKE=' /etc/os-release | cut -d= -f2)
case "${base_distro}" in case "${base_distro}" in
@@ -465,17 +515,38 @@ case "$(uname -m)" in
esac esac
info "host platform: ${host_arch}_${host_os}" info "host platform: ${host_arch}_${host_os}"
install_action_dir="${HOME}/.install-action" home="${HOME}"
if [[ "${host_os}" == "windows" ]]; then
if [[ "${home}" == "/home/"* ]]; then
if [[ -d "${home/\/home\//\/c\/Users\/}" ]]; then
# MSYS2 https://github.com/taiki-e/install-action/pull/518#issuecomment-2160736760
home="${home/\/home\//\/c\/Users\/}"
elif [[ -d "${home/\/home\//\/cygdrive\/c\/Users\/}" ]]; then
# Cygwin https://github.com/taiki-e/install-action/issues/224#issuecomment-1720196288
home="${home/\/home\//\/cygdrive\/c\/Users\/}"
else
warn "\$HOME starting /home/ (${home}) on Windows bash is usually fake path, this may cause installation issue"
fi
fi
fi
install_action_dir="${home}/.install-action"
tmp_dir="${install_action_dir}/tmp" tmp_dir="${install_action_dir}/tmp"
cargo_bin="${CARGO_HOME:-"${HOME}/.cargo"}/bin" cargo_bin="${CARGO_HOME:-"${home}/.cargo"}/bin"
# If $CARGO_HOME does not exist, or cargo installed outside of $CARGO_HOME/bin # If $CARGO_HOME does not exist, or cargo installed outside of $CARGO_HOME/bin
# is used ($CARGO_HOME/bin is most likely not included in the PATH), fallback to # is used ($CARGO_HOME/bin is most likely not included in the PATH), fallback to
# /usr/local/bin or $install_action_dir/bin. # /usr/local/bin or $install_action_dir/bin.
if [[ ! -e "${cargo_bin}" ]] || [[ "$(type -P cargo || true)" != "${cargo_bin}/cargo"* ]]; then if [[ "${host_os}" == "windows" ]]; then
if type -P cargo &>/dev/null; then
info "cargo is located at $(type -P cargo)"
cargo_bin=$(dirname "$(type -P cargo)")
else
cargo_bin="${install_action_dir}/bin"
fi
elif [[ ! -e "${cargo_bin}" ]] || [[ "$(type -P cargo || true)" != "${cargo_bin}/cargo"* ]]; then
if type -P cargo &>/dev/null; then if type -P cargo &>/dev/null; then
info "cargo is located at $(type -P cargo)" info "cargo is located at $(type -P cargo)"
fi fi
if [[ "${host_os}" == "windows" ]] || [[ ! -e /usr/local/bin ]]; then if [[ ! -e /usr/local/bin ]]; then
cargo_bin="${install_action_dir}/bin" cargo_bin="${install_action_dir}/bin"
else else
cargo_bin=/usr/local/bin cargo_bin=/usr/local/bin
@@ -507,6 +578,10 @@ case "${host_os}" in
fi fi
else else
if ! type -P jq &>/dev/null; then if ! type -P jq &>/dev/null; then
# https://github.com/taiki-e/install-action/issues/521
if [[ "${base_distro}" == "arch" ]]; then
sys_packages+=(glibc)
fi
sys_packages+=(jq) sys_packages+=(jq)
fi fi
sys_install "${sys_packages[@]}" sys_install "${sys_packages[@]}"
@@ -714,7 +789,8 @@ for tool in "${tools[@]}"; do
case "${tool_bin_stem}" in case "${tool_bin_stem}" in
# biome up to 1.2.2 exits with 1 on both --version and --help flags. # biome up to 1.2.2 exits with 1 on both --version and --help flags.
# cargo-machete up to 0.6.0 does not support --version flag. # cargo-machete up to 0.6.0 does not support --version flag.
biome | cargo-machete) rx "${tool_bin_stem}" --version || true ;; # wait-for-them 0.4.0 exits with 1 on both --version and --help flags.
biome | cargo-machete | wait-for-them) rx "${tool_bin_stem}" --version || true ;;
# these packages support neither --version nor --help flag. # these packages support neither --version nor --help flag.
cargo-careful | wasm-bindgen-test-runner) ;; cargo-careful | wasm-bindgen-test-runner) ;;
# wasm2es6js does not support --version flag and --help flag doesn't contains version info. # wasm2es6js does not support --version flag and --help flag doesn't contains version info.
@@ -742,11 +818,20 @@ done
if [[ ${#unsupported_tools[@]} -gt 0 ]]; then if [[ ${#unsupported_tools[@]} -gt 0 ]]; then
IFS=',' IFS=','
case "${fallback}" in
none) bail "install-action does not support ${unsupported_tools[*]} (fallback is disabled by 'fallback: none' input option)" ;;
esac
info "install-action does not support ${unsupported_tools[*]}; fallback to cargo-binstall" info "install-action does not support ${unsupported_tools[*]}; fallback to cargo-binstall"
IFS=$'\n\t' IFS=$'\n\t'
install_cargo_binstall install_cargo_binstall
# By default, cargo-binstall enforce downloads over secure transports only. # By default, cargo-binstall enforce downloads over secure transports only.
# As a result, http will be disabled, and it will also set # As a result, http will be disabled, and it will also set
# min tls version to be 1.2 # min tls version to be 1.2
cargo binstall --force --no-confirm --locked "${unsupported_tools[@]}" cargo-binstall binstall --force --no-confirm --locked "${unsupported_tools[@]}"
if ! type -P cargo >/dev/null; then
_bin_dir=$(canonicalize_windows_path "${home}/.cargo/bin")
# TODO: avoid this when already added
info "adding '${_bin_dir}' to PATH"
echo "${_bin_dir}" >>"${GITHUB_PATH}"
fi
fi fi

48
manifests/biome.json generated
View File

@@ -34,11 +34,55 @@
"bin": "biome.exe" "bin": "biome.exe"
} }
}, },
"license_markdown": "[Apache-2.0](https://github.com/biomejs/biome/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/biomejs/biome/blob/main/LICENSE-MIT)",
"latest": { "latest": {
"version": "1.7.3" "version": "1.8.1"
}, },
"1": { "1": {
"version": "1.7.3" "version": "1.8.1"
},
"1.8": {
"version": "1.8.1"
},
"1.8.1": {
"x86_64_linux_musl": {
"checksum": "344a08e4300074612dbf71d417e54816234175e7095f58ce7f10559349d9bc82"
},
"x86_64_macos": {
"checksum": "777cf17639d33ee9a4272176dfec3aa74a0860b46a33f1b8e7e2a4f2266027a0"
},
"x86_64_windows": {
"checksum": "ae12100af43da3c188b59889baf2f7a9748dc62fb3eff15f48feb082351e288c"
},
"aarch64_linux_musl": {
"checksum": "c0dfd1bb4cef5ca36c9aec8b4c7ae478ba81331f013a74f23807f20232988008"
},
"aarch64_macos": {
"checksum": "2433998fcf918069b217d7f379e7adbaa5a758a8aec0a1cdbf626778f3f873e7"
},
"aarch64_windows": {
"checksum": "e865748ffeee8c81f4556a60d389c631eb6c93d29875006524f422024f3a174a"
}
},
"1.8.0": {
"x86_64_linux_musl": {
"checksum": "02130f183b65583da5eb4cb8ca023c8565b5e8613904f65a8dd7f02755d66ee2"
},
"x86_64_macos": {
"checksum": "a42d7dc5642d15561b96bffd4a95ee8f644a90ba1d654fdeb1c7040e6d52d2ae"
},
"x86_64_windows": {
"checksum": "087de9c67effdf9d99ca9700d1a9b7fbefc0d493b5d328322524b4fbddda4a10"
},
"aarch64_linux_musl": {
"checksum": "806bce8f838139011f97942e0cb3dfe385858c7bdbbbbac4a2c128b4d7239a41"
},
"aarch64_macos": {
"checksum": "3ed5faee598c576b306d968f3da442e56e5710e05f146ca74182649ed1c94dd0"
},
"aarch64_windows": {
"checksum": "7f11c2bab3412e06b3c12232e1df3e68dbc5be104f889f1f2bba3aba9bb4db67"
}
}, },
"1.7": { "1.7": {
"version": "1.7.3" "version": "1.7.3"

View File

@@ -18,6 +18,7 @@
"bin": "cargo-audit-aarch64-unknown-linux-gnu-v${version}/cargo-audit" "bin": "cargo-audit-aarch64-unknown-linux-gnu-v${version}/cargo-audit"
} }
}, },
"license_markdown": "[Apache-2.0](https://github.com/rustsec/rustsec/blob/HEAD/cargo-audit/LICENSE-APACHE) OR [MIT](https://github.com/rustsec/rustsec/blob/HEAD/cargo-audit/LICENSE-MIT)",
"latest": { "latest": {
"version": "0.20.0" "version": "0.20.0"
}, },

View File

@@ -20,27 +20,28 @@
"url": "https://github.com/cargo-bins/cargo-binstall/releases/download/v${version}/cargo-binstall-aarch64-pc-windows-msvc.zip" "url": "https://github.com/cargo-bins/cargo-binstall/releases/download/v${version}/cargo-binstall-aarch64-pc-windows-msvc.zip"
} }
}, },
"license_markdown": "[GPL-3.0](https://github.com/cargo-bins/cargo-binstall/blob/HEAD/crates/bin/LICENSE)",
"latest": { "latest": {
"version": "1.6.8" "version": "1.7.1"
}, },
"1.6.8": { "1.7.1": {
"x86_64_linux_musl": { "x86_64_linux_musl": {
"checksum": "581eb7c97b2767a468afb0505c416eb727b469c029b36470288fc30b26517101" "checksum": "3a2f849becb60f070e416cc30d48f366d040c8db38dd7dda714f26cec15f4e2a"
}, },
"x86_64_macos": { "x86_64_macos": {
"checksum": "590ff2a4b50d67ce52b35895e4cb8d75fefdc591988dafb2687c6461b50e3885" "checksum": "e68cd4c7688ee0378f63c2718c3ff982da02f161f1b9d20d7ecefa26fc463abd"
}, },
"x86_64_windows": { "x86_64_windows": {
"checksum": "0c1cd165f4460a9d5c1f5c2a67e5faf53913694ba207ddc18b44f6c5de6ba6c5" "checksum": "a6abfc2279632c85db91fb49cd11fd3e1cf8bd4bd4e6f64abc6cc22bcef55d4c"
}, },
"aarch64_linux_musl": { "aarch64_linux_musl": {
"checksum": "2433118983ade85388be17d442b430c4932eb2dad834143f9a6a25646563281f" "checksum": "93fbed7fb5ec054fb134a8b31a3d0c6e86dd856b85dce5f63dd4438153a20779"
}, },
"aarch64_macos": { "aarch64_macos": {
"checksum": "1b0ea154b639dc7d8b49c6a2fa300964357a67a1b2441e9f29b61c7b7b79d23d" "checksum": "76a4f22e19111d9a6393fa1c60131951646067bb37093d7103cecad8d4ac7d14"
}, },
"aarch64_windows": { "aarch64_windows": {
"checksum": "f440401a77b284a8b52ba0052fe26628e8658d4febc91108c28542a0843d341a" "checksum": "46e3050690269ac6b53b8fed4b8828d2acd9ae72da72270b4d1ccb1824b394b4"
} }
} }
} }

View File

@@ -11,6 +11,7 @@
"url": "https://github.com/RalfJung/cargo-careful/releases/download/v${version}/cargo-careful.exe" "url": "https://github.com/RalfJung/cargo-careful/releases/download/v${version}/cargo-careful.exe"
} }
}, },
"license_markdown": "[MIT](https://github.com/RalfJung/cargo-careful/blob/master/LICENSE-MIT) OR [Apache-2.0](https://github.com/RalfJung/cargo-careful/blob/master/LICENSE-APACHE)",
"latest": { "latest": {
"version": "0.4.2" "version": "0.4.2"
}, },

View File

@@ -11,6 +11,7 @@
"url": "https://github.com/CycloneDX/cyclonedx-rust-cargo/releases/download/cargo-cyclonedx-${version}/cargo-cyclonedx-Win-x86_64.zip" "url": "https://github.com/CycloneDX/cyclonedx-rust-cargo/releases/download/cargo-cyclonedx-${version}/cargo-cyclonedx-Win-x86_64.zip"
} }
}, },
"license_markdown": "[Apache-2.0](https://github.com/CycloneDX/cyclonedx-rust-cargo/blob/main/LICENSE)",
"latest": { "latest": {
"version": "0.5.0" "version": "0.5.0"
}, },

View File

@@ -22,6 +22,7 @@
"bin": "cargo-deny-${version}-aarch64-apple-darwin/cargo-deny" "bin": "cargo-deny-${version}-aarch64-apple-darwin/cargo-deny"
} }
}, },
"license_markdown": "[MIT](https://github.com/EmbarkStudios/cargo-deny/blob/main/LICENSE-MIT) OR [Apache-2.0](https://github.com/EmbarkStudios/cargo-deny/blob/main/LICENSE-APACHE)",
"latest": { "latest": {
"version": "0.14.24" "version": "0.14.24"
}, },

View File

@@ -10,6 +10,7 @@
"bin": "cargo-dinghy-${version}/cargo-dinghy" "bin": "cargo-dinghy-${version}/cargo-dinghy"
} }
}, },
"license_markdown": "[MIT](https://github.com/sonos/dinghy/blob/main/LICENSE-MIT) OR [Apache-2.0](https://github.com/sonos/dinghy/blob/main/LICENSE-APACHE)",
"latest": { "latest": {
"version": "0.7.1" "version": "0.7.1"
}, },

View File

@@ -18,6 +18,7 @@
"bin": "cargo-export-v${version}-aarch64-apple-darwin/bin/cargo-export" "bin": "cargo-export-v${version}-aarch64-apple-darwin/bin/cargo-export"
} }
}, },
"license_markdown": "[MIT](https://github.com/bazhenov/cargo-export/blob/master/LICENSE)",
"latest": { "latest": {
"version": "0.2.5" "version": "0.2.5"
}, },

View File

@@ -1,6 +1,7 @@
{ {
"rust_crate": "cargo-hack", "rust_crate": "cargo-hack",
"template": null, "template": null,
"license_markdown": "[Apache-2.0](https://github.com/taiki-e/cargo-hack/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/cargo-hack/blob/main/LICENSE-MIT)",
"latest": { "latest": {
"version": "0.6.28" "version": "0.6.28"
}, },

View File

@@ -17,11 +17,29 @@
"url": "https://github.com/taiki-e/cargo-llvm-cov/releases/download/v${version}/cargo-llvm-cov-aarch64-apple-darwin.tar.gz" "url": "https://github.com/taiki-e/cargo-llvm-cov/releases/download/v${version}/cargo-llvm-cov-aarch64-apple-darwin.tar.gz"
} }
}, },
"license_markdown": "[Apache-2.0](https://github.com/taiki-e/cargo-llvm-cov/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/cargo-llvm-cov/blob/main/LICENSE-MIT)",
"latest": { "latest": {
"version": "0.6.9" "version": "0.6.10"
}, },
"0.6": { "0.6": {
"version": "0.6.9" "version": "0.6.10"
},
"0.6.10": {
"x86_64_linux_musl": {
"checksum": "2350d7d6586c8b1ac828ad5578225fafb6a43fa9c35fe835c28a5ed63499df60"
},
"x86_64_macos": {
"checksum": "6355b4536798ba0cea459729cc531f7bbf252d51c86b02683c0b4a4033d8cb96"
},
"x86_64_windows": {
"checksum": "3090e71ba2c0e16e593d338f4ed696f3829544f53dea63bdd966398f4379259c"
},
"aarch64_linux_musl": {
"checksum": "7921682e7bd925b69bbecaf9bf42f99a6404ef60049b1a9f87fe97dc697265f4"
},
"aarch64_macos": {
"checksum": "46fe1d529755ca1a39dc7995374eef4482a20f0f632dd113430641c06fc4b466"
}
}, },
"0.6.9": { "0.6.9": {
"x86_64_linux_musl": { "x86_64_linux_musl": {

View File

@@ -1,6 +1,7 @@
{ {
"rust_crate": "cargo-machete", "rust_crate": "cargo-machete",
"template": null, "template": null,
"license_markdown": "[MIT](https://github.com/bnjbvr/cargo-machete/blob/main/LICENSE.md)",
"latest": { "latest": {
"version": "0.6.2" "version": "0.6.2"
}, },

View File

@@ -18,6 +18,7 @@
"bin": "cargo-make-v${version}-aarch64-apple-darwin/cargo-make" "bin": "cargo-make-v${version}-aarch64-apple-darwin/cargo-make"
} }
}, },
"license_markdown": "[Apache-2.0](https://github.com/sagiegurari/cargo-make/blob/master/LICENSE)",
"latest": { "latest": {
"version": "0.37.12" "version": "0.37.12"
}, },

View File

@@ -20,6 +20,7 @@
"url": "https://github.com/taiki-e/cargo-minimal-versions/releases/download/v${version}/cargo-minimal-versions-aarch64-pc-windows-msvc.tar.gz" "url": "https://github.com/taiki-e/cargo-minimal-versions/releases/download/v${version}/cargo-minimal-versions-aarch64-pc-windows-msvc.tar.gz"
} }
}, },
"license_markdown": "[Apache-2.0](https://github.com/taiki-e/cargo-minimal-versions/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/cargo-minimal-versions/blob/main/LICENSE-MIT)",
"latest": { "latest": {
"version": "0.1.27" "version": "0.1.27"
}, },

1022
manifests/cargo-nextest.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -20,6 +20,7 @@
"url": "https://github.com/taiki-e/cargo-no-dev-deps/releases/download/v${version}/cargo-no-dev-deps-aarch64-pc-windows-msvc.tar.gz" "url": "https://github.com/taiki-e/cargo-no-dev-deps/releases/download/v${version}/cargo-no-dev-deps-aarch64-pc-windows-msvc.tar.gz"
} }
}, },
"license_markdown": "[Apache-2.0](https://github.com/taiki-e/cargo-no-dev-deps/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/cargo-no-dev-deps/blob/main/LICENSE-MIT)",
"latest": { "latest": {
"version": "0.2.12" "version": "0.2.12"
}, },

View File

@@ -11,6 +11,7 @@
"url": "https://github.com/orium/cargo-rdme/releases/download/v${version}/cargo-rdme_v${version}_x86_64-pc-windows-gnu.zip" "url": "https://github.com/orium/cargo-rdme/releases/download/v${version}/cargo-rdme_v${version}_x86_64-pc-windows-gnu.zip"
} }
}, },
"license_markdown": "[MPL-2.0](https://github.com/orium/cargo-rdme/blob/main/LICENSE.md)",
"latest": { "latest": {
"version": "1.4.2" "version": "1.4.2"
}, },
@@ -20,6 +21,11 @@
"1.4": { "1.4": {
"version": "1.4.2" "version": "1.4.2"
}, },
"1.4.4": {
"x86_64_windows": {
"checksum": "ff9b7a4d56a89451e8e0ae40716d47534fb08c5723a08fd560a66227b49e2694"
}
},
"1.4.3": { "1.4.3": {
"x86_64_windows": { "x86_64_windows": {
"checksum": "408ffb657c99bf4142521632306edc4ed130dd991a0cd4b62cf370c28b307daf" "checksum": "408ffb657c99bf4142521632306edc4ed130dd991a0cd4b62cf370c28b307daf"

38
manifests/cargo-semver-checks.json generated Normal file
View File

@@ -0,0 +1,38 @@
{
"rust_crate": "cargo-semver-checks",
"template": {
"x86_64_linux_musl": {
"url": "https://github.com/obi1kenobi/cargo-semver-checks/releases/download/v${version}/cargo-semver-checks-x86_64-unknown-linux-musl.tar.gz"
},
"x86_64_macos": {
"url": "https://github.com/obi1kenobi/cargo-semver-checks/releases/download/v${version}/cargo-semver-checks-x86_64-apple-darwin.tar.gz"
},
"x86_64_windows": {
"url": "https://github.com/obi1kenobi/cargo-semver-checks/releases/download/v${version}/cargo-semver-checks-x86_64-pc-windows-msvc.tar.gz"
},
"aarch64_macos": {
"url": "https://github.com/obi1kenobi/cargo-semver-checks/releases/download/v${version}/cargo-semver-checks-aarch64-apple-darwin.tar.gz"
}
},
"license_markdown": "[Apache-2.0](https://github.com/obi1kenobi/cargo-semver-checks/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/obi1kenobi/cargo-semver-checks/blob/main/LICENSE-MIT)",
"latest": {
"version": "0.31.0"
},
"0.31": {
"version": "0.31.0"
},
"0.31.0": {
"x86_64_linux_musl": {
"checksum": "4b40df7c8877451b3c31d33399f54bc1d988cad3a2712764ce632a7425cc57df"
},
"x86_64_macos": {
"checksum": "58809b0e431d19d6216552b222eb746b510b11dddb59dec93ae3efe302091748"
},
"x86_64_windows": {
"checksum": "6a819e7ef26590d78ce6c127b6c0d966bd2c5012ae823455e4370f01e5e22167"
},
"aarch64_macos": {
"checksum": "9e272af3f52835470d4f31e3791c83ee9dbf05a812af5d2f2077ec1e3c67aa67"
}
}
}

View File

@@ -11,6 +11,7 @@
"url": "https://github.com/DevinR528/cargo-sort/releases/download/v${version}/cargo-sort-x86_64-pc-windows-msvc.zip" "url": "https://github.com/DevinR528/cargo-sort/releases/download/v${version}/cargo-sort-x86_64-pc-windows-msvc.zip"
} }
}, },
"license_markdown": "[Apache-2.0 OR MIT](https://github.com/DevinR528/cargo-sort/blob/v1.0.9/Cargo.toml#L5)",
"latest": { "latest": {
"version": "1.0.9" "version": "1.0.9"
}, },

View File

@@ -8,6 +8,7 @@
"url": "https://github.com/drahnr/cargo-spellcheck/releases/download/v${version}/cargo-spellcheck-v${version}-x86_64-pc-windows-gnu.exe" "url": "https://github.com/drahnr/cargo-spellcheck/releases/download/v${version}/cargo-spellcheck-v${version}-x86_64-pc-windows-gnu.exe"
} }
}, },
"license_markdown": "[LGPLv2.1](https://github.com/drahnr/cargo-spellcheck/blob/master/LICENSE-LGPL)",
"latest": { "latest": {
"version": "0.14.0" "version": "0.14.0"
}, },

View File

@@ -17,6 +17,7 @@
"url": "https://github.com/xd009642/tarpaulin/releases/download/${version}/cargo-tarpaulin-aarch64-apple-darwin.tar.gz" "url": "https://github.com/xd009642/tarpaulin/releases/download/${version}/cargo-tarpaulin-aarch64-apple-darwin.tar.gz"
} }
}, },
"license_markdown": "[MIT](https://github.com/xd009642/tarpaulin/blob/develop/LICENSE-MIT) OR [Apache-2.0](https://github.com/xd009642/tarpaulin/blob/develop/LICENSE-APACHE)",
"latest": { "latest": {
"version": "0.30.0" "version": "0.30.0"
}, },

View File

@@ -30,6 +30,7 @@
"bin": "./cargo-udeps-v${version}-aarch64-pc-windows-msvc/cargo-udeps.exe" "bin": "./cargo-udeps-v${version}-aarch64-pc-windows-msvc/cargo-udeps.exe"
} }
}, },
"license_markdown": "[Apache-2.0 OR MIT](https://github.com/est31/cargo-udeps/blob/HEAD/LICENSE)",
"latest": { "latest": {
"version": "0.1.47" "version": "0.1.47"
}, },

View File

@@ -11,6 +11,7 @@
"url": "https://github.com/jfrimmel/cargo-valgrind/releases/download/v${version}/cargo-valgrind-${version}-x86_64-pc-windows-msvc.zip" "url": "https://github.com/jfrimmel/cargo-valgrind/releases/download/v${version}/cargo-valgrind-${version}-x86_64-pc-windows-msvc.zip"
} }
}, },
"license_markdown": "[MIT](https://github.com/jfrimmel/cargo-valgrind/blob/master/LICENSE-MIT) OR [Apache-2.0](https://github.com/jfrimmel/cargo-valgrind/blob/master/LICENSE-APACHE)",
"latest": { "latest": {
"version": "2.1.0" "version": "2.1.0"
}, },

44
manifests/cargo-zigbuild.json generated Normal file
View File

@@ -0,0 +1,44 @@
{
"rust_crate": "cargo-zigbuild",
"template": {
"x86_64_linux_musl": {
"url": "https://github.com/rust-cross/cargo-zigbuild/releases/download/v${version}/cargo-zigbuild-v${version}.x86_64-unknown-linux-musl.tar.gz"
},
"x86_64_windows": {
"url": "https://github.com/rust-cross/cargo-zigbuild/releases/download/v${version}/cargo-zigbuild-v${version}.windows-x64.zip"
},
"aarch64_linux_musl": {
"url": "https://github.com/rust-cross/cargo-zigbuild/releases/download/v${version}/cargo-zigbuild-v${version}.aarch64-unknown-linux-musl.tar.gz"
},
"aarch64_macos": {
"url": "https://github.com/rust-cross/cargo-zigbuild/releases/download/v${version}/cargo-zigbuild-v${version}.apple-darwin.tar.gz"
},
"aarch64_windows": {
"url": "https://github.com/rust-cross/cargo-zigbuild/releases/download/v${version}/cargo-zigbuild-v${version}.windows-arm64.zip"
}
},
"license_markdown": "[MIT](https://github.com/rust-cross/cargo-zigbuild/blob/main/LICENSE)",
"latest": {
"version": "0.18.4"
},
"0.18": {
"version": "0.18.4"
},
"0.18.4": {
"x86_64_linux_musl": {
"checksum": "bfcef631fe5ec5c0381d0028d47765dd4cef54ece10ebf2d76e62de6e7941d4e"
},
"x86_64_windows": {
"checksum": "5a5ea2b4d2dcd6d9196d5ca72e76c0d0714dae1ad287d313b89b1d78bcdc8364"
},
"aarch64_linux_musl": {
"checksum": "8271acf32a08fc6073153fffeca5d9289dce7ae13a3a9d64cacf0600904fa7f5"
},
"aarch64_macos": {
"checksum": "b04e989f6df22d46be292af8c4f799467d6e60305fe6ab55f9bdf1c795a0c70f"
},
"aarch64_windows": {
"checksum": "f5166b64a037508c4698e03bde3a57a53fde530fe604866050e1fef43cd5df6d"
}
}
}

1
manifests/cross.json generated
View File

@@ -1,6 +1,7 @@
{ {
"rust_crate": "cross", "rust_crate": "cross",
"template": null, "template": null,
"license_markdown": "[MIT](https://github.com/cross-rs/cross/blob/main/LICENSE-MIT) OR [Apache-2.0](https://github.com/cross-rs/cross/blob/main/LICENSE-APACHE)",
"latest": { "latest": {
"version": "0.2.5" "version": "0.2.5"
}, },

44
manifests/deepsource.json generated Normal file
View File

@@ -0,0 +1,44 @@
{
"rust_crate": null,
"template": {
"x86_64_linux_gnu": {
"url": "https://github.com/DeepSourceCorp/cli/releases/download/v${version}/deepsource_${version}_linux_amd64.tar.gz"
},
"x86_64_macos": {
"url": "https://github.com/DeepSourceCorp/cli/releases/download/v${version}/deepsource_${version}_darwin_amd64.tar.gz"
},
"x86_64_windows": {
"url": "https://github.com/DeepSourceCorp/cli/releases/download/v${version}/deepsource_${version}_windows_amd64.tar.gz"
},
"aarch64_linux_gnu": {
"url": "https://github.com/DeepSourceCorp/cli/releases/download/v${version}/deepsource_${version}_linux_arm64.tar.gz"
},
"aarch64_macos": {
"url": "https://github.com/DeepSourceCorp/cli/releases/download/v${version}/deepsource_${version}_darwin_arm64.tar.gz"
}
},
"license_markdown": "[BSD-2-Clause](https://github.com/DeepSourceCorp/cli/blob/master/LICENSE)",
"latest": {
"version": "0.8.6"
},
"0.8": {
"version": "0.8.6"
},
"0.8.6": {
"x86_64_linux_gnu": {
"checksum": "40490fa8403496d354ac5e69ba4a71c287bee579d4413b62ee54c5c3038792ca"
},
"x86_64_macos": {
"checksum": "0970061b4755ecce8736f1d9bc8932cdafb452528432267ce33a0d566a3ecdeb"
},
"x86_64_windows": {
"checksum": "10d7bf2d6d8073a20f47982fd1db4f285666c1a6be2d89f555b097676da106d2"
},
"aarch64_linux_gnu": {
"checksum": "9f4f2a22ec412ed826e011afca3bb49979e4ee89434abbf8086324c5b9ccc074"
},
"aarch64_macos": {
"checksum": "b4223a8a03f16853cdbc4d5d40a586fa9291167e55d21f051ae3bf0c359f693a"
}
}
}

39
manifests/dprint.json generated
View File

@@ -23,11 +23,46 @@
"url": "https://github.com/dprint/dprint/releases/download/${version}/dprint-aarch64-apple-darwin.zip" "url": "https://github.com/dprint/dprint/releases/download/${version}/dprint-aarch64-apple-darwin.zip"
} }
}, },
"license_markdown": "[MIT](https://github.com/dprint/dprint/blob/main/LICENSE)",
"latest": { "latest": {
"version": "0.46.0" "version": "0.46.2"
}, },
"0.46": { "0.46": {
"version": "0.46.0" "version": "0.46.2"
},
"0.46.2": {
"x86_64_linux_musl": {
"checksum": "bbe9fe8eae9abdcfccdeca97fd8c524efd6137de702ee96e82b0ecb4ad432ebf"
},
"x86_64_macos": {
"checksum": "88abd8a6f416b624fdfae338ae6fca440f4a36b35199f0d03438caeb7715d820"
},
"x86_64_windows": {
"checksum": "53ab1991d23be9de8bf3b920f8605aee55629321fcacccfc5df38d49b2eb5160"
},
"aarch64_linux_musl": {
"checksum": "d7b6f88c320bffcbb1dfeb6030d5a1ef23d18d81721e39abdbf4b8bdab389ba4"
},
"aarch64_macos": {
"checksum": "a331d1c9ad2abb96d46c33d25f1166bd5497dde0c48eb8a8f3d98143cd4bca5b"
}
},
"0.46.1": {
"x86_64_linux_musl": {
"checksum": "4a7d6fa6b920ab150f580965556086cdd7992e07078e627ab9a9d1c3bd30ba85"
},
"x86_64_macos": {
"checksum": "cdea84bce1d84c26e8eced2265d246b79a849ec2e7d1377d98dd7bdb21c7ce83"
},
"x86_64_windows": {
"checksum": "74e5ab38c744d5903862c2b5174d0fef9759b5506da775e1fb93b6a68c63101d"
},
"aarch64_linux_musl": {
"checksum": "e2b6d87167d21f1f01571790e79526ef9caff3b8b75f5cac348c4f06f60a8c16"
},
"aarch64_macos": {
"checksum": "f3ff4faef83d14c3b4ae262e79a40d4e0fc3fa1903d0b6e9b82f0b25b00e9499"
}
}, },
"0.46.0": { "0.46.0": {
"x86_64_linux_musl": { "x86_64_linux_musl": {

61
manifests/earthly.json generated Normal file
View File

@@ -0,0 +1,61 @@
{
"rust_crate": null,
"template": {
"x86_64_linux_gnu": {
"url": "https://github.com/earthly/earthly/releases/download/v${version}/earthly-linux-amd64"
},
"x86_64_macos": {
"url": "https://github.com/earthly/earthly/releases/download/v${version}/earthly-darwin-amd64"
},
"x86_64_windows": {
"url": "https://github.com/earthly/earthly/releases/download/v${version}/earthly-windows-amd64.exe"
},
"aarch64_linux_gnu": {
"url": "https://github.com/earthly/earthly/releases/download/v${version}/earthly-linux-arm64"
},
"aarch64_macos": {
"url": "https://github.com/earthly/earthly/releases/download/v${version}/earthly-darwin-arm64"
}
},
"license_markdown": "[MPL-2.0](https://github.com/earthly/earthly/blob/main/LICENSE)",
"latest": {
"version": "0.8.14"
},
"0.8": {
"version": "0.8.14"
},
"0.8.14": {
"x86_64_linux_gnu": {
"checksum": "9c184536faccf2e16e92ad06d2a2579e4b3ff6aaf6bf4c2f72b21228a6903bc2"
},
"x86_64_macos": {
"checksum": "09d749a4f5b9d71acb803ba229086b28f447ac2080492106f6f51536a64a0760"
},
"x86_64_windows": {
"checksum": "3244284dc9648d7cd3af350ab4a8bfd4c63b0e0e16e656c3e249fc1d58fe7e5f"
},
"aarch64_linux_gnu": {
"checksum": "a88786778964eb74b6b5db44734a4630dcedab49c4ed21fe432e9e6d08ff116c"
},
"aarch64_macos": {
"checksum": "0a0154bb94ef4c8692737156a74534d369947be1a4558e81603be3d2b4328d7b"
}
},
"0.8.13": {
"x86_64_linux_gnu": {
"checksum": "5e1d7a41cd7a5c22f7c5c71f08e99cab3964eb604ca223b36312c755fbbce4f8"
},
"x86_64_macos": {
"checksum": "8d50d07d24794fa284ae78a699c45df540e85347ea108374b86df45a7800ff55"
},
"x86_64_windows": {
"checksum": "8201bcdd20272e4e68c56ce3b070fd488e410aef6be1e75b3b1992b4cdd0caaa"
},
"aarch64_linux_gnu": {
"checksum": "6b33bb767f34a94c49fc5db668b3f5936daa01777f3083a217f73b8aefdd7859"
},
"aarch64_macos": {
"checksum": "8d4e2055a761b07f77b11deb2f75914fe20a7bc033eb1115d9b74731df0d3593"
}
}
}

View File

@@ -26,6 +26,7 @@
"bin": "bin/ec-windows-arm64.exe" "bin": "bin/ec-windows-arm64.exe"
} }
}, },
"license_markdown": "[MIT](https://github.com/editorconfig-checker/editorconfig-checker/blob/main/LICENSE)",
"latest": { "latest": {
"version": "3.0.1" "version": "3.0.1"
}, },

23
manifests/espup.json generated
View File

@@ -17,8 +17,29 @@
"url": "https://github.com/esp-rs/espup/releases/download/v${version}/espup-aarch64-apple-darwin.zip" "url": "https://github.com/esp-rs/espup/releases/download/v${version}/espup-aarch64-apple-darwin.zip"
} }
}, },
"license_markdown": "[MIT](https://github.com/esp-rs/espup/blob/main/LICENSE-MIT) OR [Apache-2.0](https://github.com/esp-rs/espup/blob/main/LICENSE-APACHE)",
"latest": { "latest": {
"version": "0.11.0" "version": "0.12.0"
},
"0.12": {
"version": "0.12.0"
},
"0.12.0": {
"x86_64_linux_gnu": {
"checksum": "2c89370a2cf2eaf2d300439d5f15fa89ae71d635b027965b1325effc8d84b383"
},
"x86_64_macos": {
"checksum": "00867da14720005dc0ef174e93164ca2934126840be7ddb7a9eaa2c17e940555"
},
"x86_64_windows": {
"checksum": "a7d128180d30e1d351c63a02436de8a75a8b90479fb49ce23b4eaadf03e637d1"
},
"aarch64_linux_gnu": {
"checksum": "b7259c225ad713f94b73e4f86f7daf37e7c02ba959b00a3f2f8327fbab639247"
},
"aarch64_macos": {
"checksum": "a91717477c816bc10b75a250a3d415ee1eea329dcc9a8bddb70d73bc4ebc521e"
}
}, },
"0.11": { "0.11": {
"version": "0.11.0" "version": "0.11.0"

View File

@@ -26,11 +26,35 @@
"bin": "git-cliff-${version}/git-cliff.exe" "bin": "git-cliff-${version}/git-cliff.exe"
} }
}, },
"license_markdown": "[MIT](https://github.com/orhun/git-cliff/blob/main/LICENSE-MIT) OR [Apache-2.0](https://github.com/orhun/git-cliff/blob/main/LICENSE-APACHE)",
"latest": { "latest": {
"version": "2.2.2" "version": "2.3.0"
}, },
"2": { "2": {
"version": "2.2.2" "version": "2.3.0"
},
"2.3": {
"version": "2.3.0"
},
"2.3.0": {
"x86_64_linux_musl": {
"checksum": "0371c0c2fd948a711d05198f719a2ec8ccb2a43ae5e4760394916d5cf6b45c6c"
},
"x86_64_macos": {
"checksum": "73ce46c671a593fe1acef725e7816c793968e3c315fd72107280e830eaa55820"
},
"x86_64_windows": {
"checksum": "90bc9c60b5db44a62fae51fb09e9565e2d460e107df3404ac5384a2f0bdd96d1"
},
"aarch64_linux_musl": {
"checksum": "aed0a6fba4d5b309be98ef71db75928c84c57495d46843791e95870582f0d1a6"
},
"aarch64_macos": {
"checksum": "1fd8e277212db52c791a20b6ecdb993ce47884a1aca3ee3d31066fd29acea6bb"
},
"aarch64_windows": {
"checksum": "059a29642ffe16ad720cb383290564df35bddd329fa34f6d1d1a4f633d6dad48"
}
}, },
"2.2": { "2.2": {
"version": "2.2.2" "version": "2.2.2"

1
manifests/grcov.json generated
View File

@@ -17,6 +17,7 @@
"url": "https://github.com/mozilla/grcov/releases/download/v${version}/grcov-aarch64-apple-darwin.tar.bz2" "url": "https://github.com/mozilla/grcov/releases/download/v${version}/grcov-aarch64-apple-darwin.tar.bz2"
} }
}, },
"license_markdown": "[MPL-2.0](https://github.com/mozilla/grcov/blob/HEAD/LICENSE-MPL-2.0)",
"latest": { "latest": {
"version": "0.8.19" "version": "0.8.19"
}, },

View File

@@ -18,6 +18,7 @@
"bin": "hyperfine-v${version}-aarch64-unknown-linux-gnu/hyperfine" "bin": "hyperfine-v${version}-aarch64-unknown-linux-gnu/hyperfine"
} }
}, },
"license_markdown": "[MIT](https://github.com/sharkdp/hyperfine/blob/master/LICENSE-MIT) OR [Apache-2.0](https://github.com/sharkdp/hyperfine/blob/master/LICENSE-APACHE)",
"latest": { "latest": {
"version": "1.18.0" "version": "1.18.0"
}, },

47
manifests/jaq.json generated Normal file
View File

@@ -0,0 +1,47 @@
{
"rust_crate": "jaq",
"template": {
"x86_64_linux_musl": {
"url": "https://github.com/01mf02/jaq/releases/download/v${version}/jaq-v${version}-x86_64-unknown-linux-musl"
},
"x86_64_macos": {
"url": "https://github.com/01mf02/jaq/releases/download/v${version}/jaq-v${version}-x86_64-apple-darwin"
},
"x86_64_windows": {
"url": "https://github.com/01mf02/jaq/releases/download/v${version}/jaq-v${version}-x86_64-pc-windows-msvc.exe"
},
"aarch64_linux_gnu": {
"url": "https://github.com/01mf02/jaq/releases/download/v${version}/jaq-v${version}-aarch64-unknown-linux-gnu"
},
"aarch64_macos": {
"url": "https://github.com/01mf02/jaq/releases/download/v${version}/jaq-v${version}-aarch64-apple-darwin"
}
},
"license_markdown": "[MIT](https://github.com/01mf02/jaq/blob/main/LICENSE-MIT)",
"latest": {
"version": "1.4.0"
},
"1": {
"version": "1.4.0"
},
"1.4": {
"version": "1.4.0"
},
"1.4.0": {
"x86_64_linux_musl": {
"checksum": "fce247e4b9693ff260293bdb7d4ef564f765ed6fe889c42cebfd5d2e36b591bf"
},
"x86_64_macos": {
"checksum": "f12c87eed86258b226c747ccbef55db95e78e6925eee55fe96e8a5eee4fe69f3"
},
"x86_64_windows": {
"checksum": "bb8189ee62b3b467f82e06484a7ab7478f8ddc1cc67ec95b7d2ebc2da38dd14d"
},
"aarch64_linux_gnu": {
"checksum": "2e6449091baf52bcb982e75685459464444ea8f29c7316d246f0bd407670c568"
},
"aarch64_macos": {
"checksum": "545e26ecd01b44468a894cd6576290cc8f787d0f06dd0ef8cc0b02bfe4c95c55"
}
}
}

62
manifests/just.json generated
View File

@@ -17,11 +17,69 @@
"url": "https://github.com/casey/just/releases/download/${version}/just-${version}-aarch64-apple-darwin.tar.gz" "url": "https://github.com/casey/just/releases/download/${version}/just-${version}-aarch64-apple-darwin.tar.gz"
} }
}, },
"license_markdown": "[CC0-1.0](https://github.com/casey/just/blob/master/LICENSE)",
"latest": { "latest": {
"version": "1.27.0" "version": "1.29.1"
}, },
"1": { "1": {
"version": "1.27.0" "version": "1.29.1"
},
"1.29": {
"version": "1.29.1"
},
"1.29.1": {
"x86_64_linux_musl": {
"checksum": "42c47bd34b511c43a4d51a13c425c0e0f51e59e20b9f390fbd8838b85ee8db1b"
},
"x86_64_macos": {
"checksum": "5415dfcf2640b10823c2157c3f5a634d93f0a4a7005f4955bdcc3f009b406727"
},
"x86_64_windows": {
"checksum": "194c49878a502d9b756367e8164e1abf00955cf45af0f1e699ea9c9a45a92ba8"
},
"aarch64_linux_musl": {
"checksum": "53f43c93497a1ae4045f09fa1b528dd800ce5046ad945f4d3cd92a4fc99da353"
},
"aarch64_macos": {
"checksum": "075ddcc42de6e90dc46a942c8b1914142563dff49f6e8dd2785da3c263e6663e"
}
},
"1.29.0": {
"x86_64_linux_musl": {
"checksum": "34a059a0cde8a801ae518a7ca7271fc65709110eebbe23ba768760bf0a0eb66a"
},
"x86_64_macos": {
"checksum": "64991d2b9476d89c936404d5149ceedd8fb19c66b0390aa1e959548d376e0acc"
},
"x86_64_windows": {
"checksum": "5ad04990eb4299ad7e802fe86f85a5c116cb9af13deae87c08ed7dbf49c930d6"
},
"aarch64_linux_musl": {
"checksum": "2072dc38e37e1bd6331d7f38a8a607f81b899e3f6f2685e858482f9650f762d3"
},
"aarch64_macos": {
"checksum": "1c7146005f0e1e8d60c8de38b2c75d86a1b5c199705f645d34b5396fac897599"
}
},
"1.28": {
"version": "1.28.0"
},
"1.28.0": {
"x86_64_linux_musl": {
"checksum": "a99cc9115c274af56355f87b979c0ac109eb250b0c8cf24375231c4e679f735f"
},
"x86_64_macos": {
"checksum": "7c8c59950541dfbd0a08456d90785c660556898df1e2ac46ab09335ca763f6f9"
},
"x86_64_windows": {
"checksum": "e5599c94a48247d8d8088d25ee142df99c63a317d1a786e4be41207fe7822cc1"
},
"aarch64_linux_musl": {
"checksum": "e6639a4355e7728c63d35c52eb8115c30398a35eece492a5c689c561b8f314fb"
},
"aarch64_macos": {
"checksum": "d11f9a23fe8263139acbca65cf6d023d8a8f7e76cb52ed7523c8f683b61f647f"
}
}, },
"1.27": { "1.27": {
"version": "1.27.0" "version": "1.27.0"

View File

@@ -11,6 +11,7 @@
"url": "https://github.com/Michael-F-Bryan/mdbook-linkcheck/releases/download/v${version}/mdbook-linkcheck.x86_64-pc-windows-msvc.zip" "url": "https://github.com/Michael-F-Bryan/mdbook-linkcheck/releases/download/v${version}/mdbook-linkcheck.x86_64-pc-windows-msvc.zip"
} }
}, },
"license_markdown": "[MIT](https://github.com/Michael-F-Bryan/mdbook-linkcheck/blob/master/LICENSE)",
"latest": { "latest": {
"version": "0.7.7" "version": "0.7.7"
}, },

1
manifests/mdbook.json generated
View File

@@ -17,6 +17,7 @@
"url": "https://github.com/rust-lang/mdBook/releases/download/v${version}/mdbook-v${version}-aarch64-unknown-linux-musl.tar.gz" "url": "https://github.com/rust-lang/mdBook/releases/download/v${version}/mdbook-v${version}-aarch64-unknown-linux-musl.tar.gz"
} }
}, },
"license_markdown": "[MPL-2.0](https://github.com/rust-lang/mdBook/blob/master/LICENSE)",
"latest": { "latest": {
"version": "0.4.40" "version": "0.4.40"
}, },

View File

@@ -1,71 +1,172 @@
{ {
"rust_crate": null, "rust_crate": null,
"template": { "template": null,
"x86_64_linux_musl": { "license_markdown": "[Apache-2.0](https://github.com/google/osv-scanner/blob/main/LICENSE)",
"url": "https://github.com/google/osv-scanner/releases/download/v${version}/osv-scanner_${version}_linux_amd64"
},
"x86_64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v${version}/osv-scanner_${version}_darwin_amd64"
},
"x86_64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v${version}/osv-scanner_${version}_windows_amd64.exe"
},
"aarch64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v${version}/osv-scanner_${version}_linux_arm64"
},
"aarch64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v${version}/osv-scanner_${version}_darwin_arm64"
},
"aarch64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v${version}/osv-scanner_${version}_windows_arm64.exe"
}
},
"latest": { "latest": {
"version": "1.6.2" "version": "1.7.4"
}, },
"1": { "1": {
"version": "1.6.2" "version": "1.7.4"
},
"1.7": {
"version": "1.7.4"
},
"1.7.4": {
"x86_64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.7.4/osv-scanner_linux_amd64",
"checksum": "0b35daf50d3a9992836e7f78f56cb21b870da58f15f75c516dfb2c2ab4789d0f"
},
"x86_64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.7.4/osv-scanner_darwin_amd64",
"checksum": "19bc3908787cba8c024f384552c429e58cd204641a29abfde48ec8f861c796e3"
},
"x86_64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.7.4/osv-scanner_windows_amd64.exe",
"checksum": "a658e56f6a3324b7e09d7bd407f025a20610176ac9f93d083b8ae13ee7788d94"
},
"aarch64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.7.4/osv-scanner_linux_arm64",
"checksum": "fe26a8bd00e38d2b70bd049a97e03f6c27ac8fd74d5608c2c48b425cf46568ae"
},
"aarch64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.7.4/osv-scanner_darwin_arm64",
"checksum": "9259dd6fef1f5f0a504a225e8c3edd6c8222a8a7ff7369a79f94b11bb2be13e1"
},
"aarch64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.7.4/osv-scanner_windows_arm64.exe",
"checksum": "5aabb5aeeccb0c4e3df1cac269fa907c19112c553452a045f159d9d5b5314108"
}
},
"1.7.3": {
"x86_64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.7.3/osv-scanner_linux_amd64",
"checksum": "ae8dc75d66ae6fbdcb7d4010d32567e37cbc3ac21aa649a65cb33e0d45cbe78a"
},
"x86_64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.7.3/osv-scanner_darwin_amd64",
"checksum": "af5c7432fe17f5e3f98658a5f5407ce7e1456eb750153a47ce24a6eedd8cfb1a"
},
"x86_64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.7.3/osv-scanner_windows_amd64.exe",
"checksum": "21c5db4fea55c0ede614a338dee586f45b07e18792f78abe127ef0de52a6842d"
},
"aarch64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.7.3/osv-scanner_linux_arm64",
"checksum": "ed527974c44eca991a6c3a9e4aa8a74199c9a7f460242342b0eccfb400ee4c16"
},
"aarch64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.7.3/osv-scanner_darwin_arm64",
"checksum": "e0c38f4c886036951016ea72c807ff7c9d482ba2b5a65f134182def05316c72e"
},
"aarch64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.7.3/osv-scanner_windows_arm64.exe",
"checksum": "260383781b33021f5e7f172afd77c3ce28af4afd0889a828359bc7775dbd7416"
}
},
"1.7.2": {
"x86_64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.7.2/osv-scanner_linux_amd64",
"checksum": "8e89b8bca569c8abe3614b3ce403c6c0e8a9a555b295d9fa21628af6921e65d0"
},
"x86_64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.7.2/osv-scanner_darwin_amd64",
"checksum": "4f45e9599bf467ddaf9ff59a444c9cde6d1094d0b51e6ce265c718e0d8c71f2a"
},
"x86_64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.7.2/osv-scanner_windows_amd64.exe",
"checksum": "0d1f75bb31ed6d0a091e08f2c66bf4d3e815442637b05584f79f9e26bf8fd793"
},
"aarch64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.7.2/osv-scanner_linux_arm64",
"checksum": "929eade915a805c350745a76b275ed400b4e8d4c769a17be3f0084cf05197996"
},
"aarch64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.7.2/osv-scanner_darwin_arm64",
"checksum": "dd65874c69a21e6f8feeb1c0c9b84f0c0afb9740dc7a181fe239448c549f1eda"
},
"aarch64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.7.2/osv-scanner_windows_arm64.exe",
"checksum": "01a0fcf61d27f804837e952db4b78748a54410a744a2ed703d66042e99add4ba"
}
},
"1.7.0": {
"x86_64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.7.0/osv-scanner_linux_amd64",
"checksum": "3baa59720f92a37a90b23317d51dcd0a8eb11e612d3218e00859b36bfa2f84bc"
},
"x86_64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.7.0/osv-scanner_darwin_amd64",
"checksum": "db94288f80a29742e98f0c7e520fae411e16f5c2a251f5bf12d8a30a91fd6bdd"
},
"x86_64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.7.0/osv-scanner_windows_amd64.exe",
"checksum": "cd85bb140c2406e91f365947f1d3e30b942b2450f3e643cef9a6b1a6c87e6eb0"
},
"aarch64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.7.0/osv-scanner_linux_arm64",
"checksum": "9ac3f0dc3f0fbfae5fc9e8e00d46906e08e5e85f88c5e79950d331d0f139a5c5"
},
"aarch64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.7.0/osv-scanner_darwin_arm64",
"checksum": "b814f74155a9bc30794589f74c8fe3ea23c2e50290a437dc530ca5bc90eb5049"
},
"aarch64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.7.0/osv-scanner_windows_arm64.exe",
"checksum": "6cded48db94f74f6be3325002d308a5a678c81814b62a07b3ce91b9c5a5ccd5b"
}
}, },
"1.6": { "1.6": {
"version": "1.6.2" "version": "1.6.2"
}, },
"1.6.2": { "1.6.2": {
"x86_64_linux_musl": { "x86_64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.6.2/osv-scanner_1.6.2_linux_amd64",
"checksum": "b8440f451509ea4a4f12b363352659e7c37718d8e170d537ffdd481b031cfd41" "checksum": "b8440f451509ea4a4f12b363352659e7c37718d8e170d537ffdd481b031cfd41"
}, },
"x86_64_macos": { "x86_64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.6.2/osv-scanner_1.6.2_darwin_amd64",
"checksum": "07cd355aa9b0bc3b1013b9e053cf79ebadfe51d48337707194d39807293d79c8" "checksum": "07cd355aa9b0bc3b1013b9e053cf79ebadfe51d48337707194d39807293d79c8"
}, },
"x86_64_windows": { "x86_64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.6.2/osv-scanner_1.6.2_windows_amd64.exe",
"checksum": "2bccba4c1b97906ec9dab4307d2ec701c5636f786e073707880ba91e57a71923" "checksum": "2bccba4c1b97906ec9dab4307d2ec701c5636f786e073707880ba91e57a71923"
}, },
"aarch64_linux_musl": { "aarch64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.6.2/osv-scanner_1.6.2_linux_arm64",
"checksum": "57821f223373d259469d5d08bd7710cd228e7c056aaa5ab70045ba3f9d32c991" "checksum": "57821f223373d259469d5d08bd7710cd228e7c056aaa5ab70045ba3f9d32c991"
}, },
"aarch64_macos": { "aarch64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.6.2/osv-scanner_1.6.2_darwin_arm64",
"checksum": "646bf2564680ef776de5478ec5fd34f2ed3f945345d16aa01f64e388fa40c9d6" "checksum": "646bf2564680ef776de5478ec5fd34f2ed3f945345d16aa01f64e388fa40c9d6"
}, },
"aarch64_windows": { "aarch64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.6.2/osv-scanner_1.6.2_windows_arm64.exe",
"checksum": "060270c5499d51890f97812ef92e751b7243e0a76503376d860d083712f62a7d" "checksum": "060270c5499d51890f97812ef92e751b7243e0a76503376d860d083712f62a7d"
} }
}, },
"1.6.1": { "1.6.1": {
"x86_64_linux_musl": { "x86_64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.6.1/osv-scanner_1.6.1_linux_amd64",
"checksum": "319ad945005166ff4dc72534d3913303466047e7cc8b1f00b1a68f3b265251f1" "checksum": "319ad945005166ff4dc72534d3913303466047e7cc8b1f00b1a68f3b265251f1"
}, },
"x86_64_macos": { "x86_64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.6.1/osv-scanner_1.6.1_darwin_amd64",
"checksum": "70877545acd3a0f0e72c9784542daa7d64939392c333fabe2b2de27f8fc66b6c" "checksum": "70877545acd3a0f0e72c9784542daa7d64939392c333fabe2b2de27f8fc66b6c"
}, },
"x86_64_windows": { "x86_64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.6.1/osv-scanner_1.6.1_windows_amd64.exe",
"checksum": "e8595d720b2509fb95e326ea1c1faf8ef604d90cc20b6c27d7721050893ffc30" "checksum": "e8595d720b2509fb95e326ea1c1faf8ef604d90cc20b6c27d7721050893ffc30"
}, },
"aarch64_linux_musl": { "aarch64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.6.1/osv-scanner_1.6.1_linux_arm64",
"checksum": "c26ee30805e1038710b0c1ed775dc6c8852612072e7fffc7dd70ab0b03ddc88b" "checksum": "c26ee30805e1038710b0c1ed775dc6c8852612072e7fffc7dd70ab0b03ddc88b"
}, },
"aarch64_macos": { "aarch64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.6.1/osv-scanner_1.6.1_darwin_arm64",
"checksum": "e596f4f6bb1ce706821d36b724c5fff119c652ea9adbac20dd4c8389c08bc756" "checksum": "e596f4f6bb1ce706821d36b724c5fff119c652ea9adbac20dd4c8389c08bc756"
}, },
"aarch64_windows": { "aarch64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.6.1/osv-scanner_1.6.1_windows_arm64.exe",
"checksum": "07cdf63ef04b3e976131e0d88b8710ed5d7f26533c5790cee6dfc032d552ca81" "checksum": "07cdf63ef04b3e976131e0d88b8710ed5d7f26533c5790cee6dfc032d552ca81"
} }
}, },
@@ -74,21 +175,27 @@
}, },
"1.5.0": { "1.5.0": {
"x86_64_linux_musl": { "x86_64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.5.0/osv-scanner_1.5.0_linux_amd64",
"checksum": "c73e1e90af40a86683a2addc8eb410e300c73f59c7eb224c7f24cf1e57b025b4" "checksum": "c73e1e90af40a86683a2addc8eb410e300c73f59c7eb224c7f24cf1e57b025b4"
}, },
"x86_64_macos": { "x86_64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.5.0/osv-scanner_1.5.0_darwin_amd64",
"checksum": "e0f98909fefbdb9d584d5fd90373efd45c3f1783ec67ebf78eedb660a6b8c49b" "checksum": "e0f98909fefbdb9d584d5fd90373efd45c3f1783ec67ebf78eedb660a6b8c49b"
}, },
"x86_64_windows": { "x86_64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.5.0/osv-scanner_1.5.0_windows_amd64.exe",
"checksum": "eb975fbe0c933cd782c9f02c72e13d86cff3d78f42b960d10972f5b8f0dd3fbe" "checksum": "eb975fbe0c933cd782c9f02c72e13d86cff3d78f42b960d10972f5b8f0dd3fbe"
}, },
"aarch64_linux_musl": { "aarch64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.5.0/osv-scanner_1.5.0_linux_arm64",
"checksum": "0bdadcbc3cc862af537a3a84360e1f4fbd1c77285c1b7b272e04b7e324fd08b7" "checksum": "0bdadcbc3cc862af537a3a84360e1f4fbd1c77285c1b7b272e04b7e324fd08b7"
}, },
"aarch64_macos": { "aarch64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.5.0/osv-scanner_1.5.0_darwin_arm64",
"checksum": "c425e0ffa868bda2384d8f809e32078d59ea7d31d31971f9abc990eef948569e" "checksum": "c425e0ffa868bda2384d8f809e32078d59ea7d31d31971f9abc990eef948569e"
}, },
"aarch64_windows": { "aarch64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.5.0/osv-scanner_1.5.0_windows_arm64.exe",
"checksum": "e76ce919f939cc03cbf2fe5b39ce34d2404c7bcd3bb81b2d334cc7ce3281b7f8" "checksum": "e76ce919f939cc03cbf2fe5b39ce34d2404c7bcd3bb81b2d334cc7ce3281b7f8"
} }
}, },
@@ -97,81 +204,105 @@
}, },
"1.4.3": { "1.4.3": {
"x86_64_linux_musl": { "x86_64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.3/osv-scanner_1.4.3_linux_amd64",
"checksum": "12cf86c2febe582ce5711130d10f97a5a76ee8c7f72aea0da1aa4a4dcdcc38a8" "checksum": "12cf86c2febe582ce5711130d10f97a5a76ee8c7f72aea0da1aa4a4dcdcc38a8"
}, },
"x86_64_macos": { "x86_64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.3/osv-scanner_1.4.3_darwin_amd64",
"checksum": "d2d290f14738e4f9f8faa28f78d3fa330d1fb5878e33d1fce584cd2c3577c0e3" "checksum": "d2d290f14738e4f9f8faa28f78d3fa330d1fb5878e33d1fce584cd2c3577c0e3"
}, },
"x86_64_windows": { "x86_64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.3/osv-scanner_1.4.3_windows_amd64.exe",
"checksum": "eee7e4e0b2f70e7984a1d1d841358a7cbfb60da0c98fb3768f8b117fc15b7c90" "checksum": "eee7e4e0b2f70e7984a1d1d841358a7cbfb60da0c98fb3768f8b117fc15b7c90"
}, },
"aarch64_linux_musl": { "aarch64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.3/osv-scanner_1.4.3_linux_arm64",
"checksum": "c95680e0839afbc33b183b79fc16a0a9bd0270628cab2e9a81197f8ad665a946" "checksum": "c95680e0839afbc33b183b79fc16a0a9bd0270628cab2e9a81197f8ad665a946"
}, },
"aarch64_macos": { "aarch64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.3/osv-scanner_1.4.3_darwin_arm64",
"checksum": "5e92128ebac68abcea294c572daed4882bc671721a5f6140c1fb22c71644accf" "checksum": "5e92128ebac68abcea294c572daed4882bc671721a5f6140c1fb22c71644accf"
}, },
"aarch64_windows": { "aarch64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.3/osv-scanner_1.4.3_windows_arm64.exe",
"checksum": "fa25ffd2f5e045b9de3f7fbb7cbaa4114a98fe978813f80323591ef5313e73f2" "checksum": "fa25ffd2f5e045b9de3f7fbb7cbaa4114a98fe978813f80323591ef5313e73f2"
} }
}, },
"1.4.2": { "1.4.2": {
"x86_64_linux_musl": { "x86_64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.2/osv-scanner_1.4.2_linux_amd64",
"checksum": "c984a605ab1abc629fb2c80edbf6374a36a62e5996c064b5e987d832a06f90ad" "checksum": "c984a605ab1abc629fb2c80edbf6374a36a62e5996c064b5e987d832a06f90ad"
}, },
"x86_64_macos": { "x86_64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.2/osv-scanner_1.4.2_darwin_amd64",
"checksum": "5df26d494e5544088aa6c516705d418cf2693b2a27c18d7b9ee7cf043d0a87b9" "checksum": "5df26d494e5544088aa6c516705d418cf2693b2a27c18d7b9ee7cf043d0a87b9"
}, },
"x86_64_windows": { "x86_64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.2/osv-scanner_1.4.2_windows_amd64.exe",
"checksum": "d61ceec1a6df1414c235318d7085230926bf5bc45b2f85f39f98b4817108a973" "checksum": "d61ceec1a6df1414c235318d7085230926bf5bc45b2f85f39f98b4817108a973"
}, },
"aarch64_linux_musl": { "aarch64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.2/osv-scanner_1.4.2_linux_arm64",
"checksum": "b0f823350294e704eb647c7e556b29027c110d69e7509038efff9de3678aacf7" "checksum": "b0f823350294e704eb647c7e556b29027c110d69e7509038efff9de3678aacf7"
}, },
"aarch64_macos": { "aarch64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.2/osv-scanner_1.4.2_darwin_arm64",
"checksum": "62a4c21024dacf044d56796760d4e1a0ded7a02243d2b6c8b1b677c44df4a666" "checksum": "62a4c21024dacf044d56796760d4e1a0ded7a02243d2b6c8b1b677c44df4a666"
}, },
"aarch64_windows": { "aarch64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.2/osv-scanner_1.4.2_windows_arm64.exe",
"checksum": "5e42614d73d9218a4d0352270f2261e77b232cab2378dd673a50e2da5ae24d9a" "checksum": "5e42614d73d9218a4d0352270f2261e77b232cab2378dd673a50e2da5ae24d9a"
} }
}, },
"1.4.1": { "1.4.1": {
"x86_64_linux_musl": { "x86_64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.1/osv-scanner_1.4.1_linux_amd64",
"checksum": "7e6a55e4f26b33dec0714a1d9fbd81421e6a581492445f5b8f27ff53ddbf78ec" "checksum": "7e6a55e4f26b33dec0714a1d9fbd81421e6a581492445f5b8f27ff53ddbf78ec"
}, },
"x86_64_macos": { "x86_64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.1/osv-scanner_1.4.1_darwin_amd64",
"checksum": "c48bb3ec271b6dc437cb54e18441584297d4257a338f3fb0e86361bcaaf30eaf" "checksum": "c48bb3ec271b6dc437cb54e18441584297d4257a338f3fb0e86361bcaaf30eaf"
}, },
"x86_64_windows": { "x86_64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.1/osv-scanner_1.4.1_windows_amd64.exe",
"checksum": "a5d091bbd80753a639637d0e9a1a291e456bb2235ba4ac742a88a88ba43077a2" "checksum": "a5d091bbd80753a639637d0e9a1a291e456bb2235ba4ac742a88a88ba43077a2"
}, },
"aarch64_linux_musl": { "aarch64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.1/osv-scanner_1.4.1_linux_arm64",
"checksum": "5b06a68b64b0415c84239daea77543179a9e33101bb8bb5839ecebf5eadb6ce2" "checksum": "5b06a68b64b0415c84239daea77543179a9e33101bb8bb5839ecebf5eadb6ce2"
}, },
"aarch64_macos": { "aarch64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.1/osv-scanner_1.4.1_darwin_arm64",
"checksum": "514cfd1e5d454dee32842bb4ef278c6f3c0d383e294795cfa47b7571567a3ff9" "checksum": "514cfd1e5d454dee32842bb4ef278c6f3c0d383e294795cfa47b7571567a3ff9"
}, },
"aarch64_windows": { "aarch64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.1/osv-scanner_1.4.1_windows_arm64.exe",
"checksum": "7cc1f6430be37901310b63928e7f8be3d3bc6bd3ed55a32c0f7a025b49d13ee5" "checksum": "7cc1f6430be37901310b63928e7f8be3d3bc6bd3ed55a32c0f7a025b49d13ee5"
} }
}, },
"1.4.0": { "1.4.0": {
"x86_64_linux_musl": { "x86_64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.0/osv-scanner_1.4.0_linux_amd64",
"checksum": "48e8ca1ed33ac6bb1adf3ee33d323519a2b4a8af4d59219aab0fcb03ff71de29" "checksum": "48e8ca1ed33ac6bb1adf3ee33d323519a2b4a8af4d59219aab0fcb03ff71de29"
}, },
"x86_64_macos": { "x86_64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.0/osv-scanner_1.4.0_darwin_amd64",
"checksum": "d6c6d63a34b304785234fb4fad945714538e180243eee23997a20adfd8a32d30" "checksum": "d6c6d63a34b304785234fb4fad945714538e180243eee23997a20adfd8a32d30"
}, },
"x86_64_windows": { "x86_64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.0/osv-scanner_1.4.0_windows_amd64.exe",
"checksum": "1f8d50c74563f811b4c99e1c3ba2bf4a4462876e5c1534abfd7f9e4f49a5afe9" "checksum": "1f8d50c74563f811b4c99e1c3ba2bf4a4462876e5c1534abfd7f9e4f49a5afe9"
}, },
"aarch64_linux_musl": { "aarch64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.0/osv-scanner_1.4.0_linux_arm64",
"checksum": "30f68ff06a52de80c56cbe05f7716fe9e94275efc750147da8cd47d5a2da9389" "checksum": "30f68ff06a52de80c56cbe05f7716fe9e94275efc750147da8cd47d5a2da9389"
}, },
"aarch64_macos": { "aarch64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.0/osv-scanner_1.4.0_darwin_arm64",
"checksum": "6c3cf2aa98bc12f8a4f9ebdaa29701b0f4d7147e4893aea43a4042f76510c130" "checksum": "6c3cf2aa98bc12f8a4f9ebdaa29701b0f4d7147e4893aea43a4042f76510c130"
}, },
"aarch64_windows": { "aarch64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.0/osv-scanner_1.4.0_windows_arm64.exe",
"checksum": "88ee304d9734c9b13e1b5d85e580e7108b7cd0828ab9d0707bc3af278bcd892a" "checksum": "88ee304d9734c9b13e1b5d85e580e7108b7cd0828ab9d0707bc3af278bcd892a"
} }
}, },
@@ -180,141 +311,183 @@
}, },
"1.3.6": { "1.3.6": {
"x86_64_linux_musl": { "x86_64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.6/osv-scanner_1.3.6_linux_amd64",
"checksum": "ac9766ba926d98094aef6f3e9ccb9bff5d1f10bfc7dc9831984737d84b699a88" "checksum": "ac9766ba926d98094aef6f3e9ccb9bff5d1f10bfc7dc9831984737d84b699a88"
}, },
"x86_64_macos": { "x86_64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.6/osv-scanner_1.3.6_darwin_amd64",
"checksum": "3f75c0d4887cde3d963aa702a7e351005781a74347d52087c870e63bb9a0f44f" "checksum": "3f75c0d4887cde3d963aa702a7e351005781a74347d52087c870e63bb9a0f44f"
}, },
"x86_64_windows": { "x86_64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.6/osv-scanner_1.3.6_windows_amd64.exe",
"checksum": "f0ebec92386fca9ce3c224fc58a7b2431b52e38c139ec4aff5c5437a61c1d08f" "checksum": "f0ebec92386fca9ce3c224fc58a7b2431b52e38c139ec4aff5c5437a61c1d08f"
}, },
"aarch64_linux_musl": { "aarch64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.6/osv-scanner_1.3.6_linux_arm64",
"checksum": "d396ff3c07b8b510e33dd2811f7ebd7f3483fe379a2c602a9ca1fbcbde1f567a" "checksum": "d396ff3c07b8b510e33dd2811f7ebd7f3483fe379a2c602a9ca1fbcbde1f567a"
}, },
"aarch64_macos": { "aarch64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.6/osv-scanner_1.3.6_darwin_arm64",
"checksum": "0fa5d723ebca643946a1a8ce959f1206f05a9be432fcc79c023567b3b162fc0f" "checksum": "0fa5d723ebca643946a1a8ce959f1206f05a9be432fcc79c023567b3b162fc0f"
}, },
"aarch64_windows": { "aarch64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.6/osv-scanner_1.3.6_windows_arm64.exe",
"checksum": "b853955a79449cdedf7b29080400a630b144904d1162bf4d362fd0bcabf7c073" "checksum": "b853955a79449cdedf7b29080400a630b144904d1162bf4d362fd0bcabf7c073"
} }
}, },
"1.3.5": { "1.3.5": {
"x86_64_linux_musl": { "x86_64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.5/osv-scanner_1.3.5_linux_amd64",
"checksum": "39fb4263afa493d6058e7ad9e1fe699ce070871b7b67b5f5f9eead358c7ab2ee" "checksum": "39fb4263afa493d6058e7ad9e1fe699ce070871b7b67b5f5f9eead358c7ab2ee"
}, },
"x86_64_macos": { "x86_64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.5/osv-scanner_1.3.5_darwin_amd64",
"checksum": "65001b8c97559ed6fb632ae3ee574f9f4b2fb05184d3049876fd56f7557fe915" "checksum": "65001b8c97559ed6fb632ae3ee574f9f4b2fb05184d3049876fd56f7557fe915"
}, },
"x86_64_windows": { "x86_64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.5/osv-scanner_1.3.5_windows_amd64.exe",
"checksum": "08a78e3b30ee9c6f5f71d78d43cd6d27bdb5289e56d65efd464b0e79958f20cb" "checksum": "08a78e3b30ee9c6f5f71d78d43cd6d27bdb5289e56d65efd464b0e79958f20cb"
}, },
"aarch64_linux_musl": { "aarch64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.5/osv-scanner_1.3.5_linux_arm64",
"checksum": "f71396c832d727fb90e1c072d912ece0b9a5359cae5df47d54e88ef712d99e41" "checksum": "f71396c832d727fb90e1c072d912ece0b9a5359cae5df47d54e88ef712d99e41"
}, },
"aarch64_macos": { "aarch64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.5/osv-scanner_1.3.5_darwin_arm64",
"checksum": "303c1a27843fef36fd7ec06fb972e92cb120380f32dbfdc1a0af2d565103cef4" "checksum": "303c1a27843fef36fd7ec06fb972e92cb120380f32dbfdc1a0af2d565103cef4"
}, },
"aarch64_windows": { "aarch64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.5/osv-scanner_1.3.5_windows_arm64.exe",
"checksum": "47ad6d7a48f64c3dce8011ff864129f81f0257d2e2d6fe5e309361b19f96a343" "checksum": "47ad6d7a48f64c3dce8011ff864129f81f0257d2e2d6fe5e309361b19f96a343"
} }
}, },
"1.3.4": { "1.3.4": {
"x86_64_linux_musl": { "x86_64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.4/osv-scanner_1.3.4_linux_amd64",
"checksum": "588c42cdc23b64947ebbd0756193fd800c5d281e8fa6df4c309943060b398fcc" "checksum": "588c42cdc23b64947ebbd0756193fd800c5d281e8fa6df4c309943060b398fcc"
}, },
"x86_64_macos": { "x86_64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.4/osv-scanner_1.3.4_darwin_amd64",
"checksum": "32e343998d892baf309b76b131f2b8cfb6b58a589bba52512d6538db052ba656" "checksum": "32e343998d892baf309b76b131f2b8cfb6b58a589bba52512d6538db052ba656"
}, },
"x86_64_windows": { "x86_64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.4/osv-scanner_1.3.4_windows_amd64.exe",
"checksum": "7987894ce343c07a72dd054fb2b600ee1fab7035e2639a1e9d69af94498bc4fe" "checksum": "7987894ce343c07a72dd054fb2b600ee1fab7035e2639a1e9d69af94498bc4fe"
}, },
"aarch64_linux_musl": { "aarch64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.4/osv-scanner_1.3.4_linux_arm64",
"checksum": "7e12aedda030c0a9bef4b5efcd2cdde5fedcc657b050ae48b97bb43b9e5e773c" "checksum": "7e12aedda030c0a9bef4b5efcd2cdde5fedcc657b050ae48b97bb43b9e5e773c"
}, },
"aarch64_macos": { "aarch64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.4/osv-scanner_1.3.4_darwin_arm64",
"checksum": "0edc0d9769a1ee69607a085669bfdbd86c5dcd1b5550439820d6ef148fa9d555" "checksum": "0edc0d9769a1ee69607a085669bfdbd86c5dcd1b5550439820d6ef148fa9d555"
}, },
"aarch64_windows": { "aarch64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.4/osv-scanner_1.3.4_windows_arm64.exe",
"checksum": "f330f117590693599d526d1fa8acc6ba09ab099d4fde18f078bd3084d37a7639" "checksum": "f330f117590693599d526d1fa8acc6ba09ab099d4fde18f078bd3084d37a7639"
} }
}, },
"1.3.3": { "1.3.3": {
"x86_64_linux_musl": { "x86_64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.3/osv-scanner_1.3.3_linux_amd64",
"checksum": "deddb04c36915c1c9e79ae6769cb8b3ca7cb091fb42e3a5d087df42dee974a98" "checksum": "deddb04c36915c1c9e79ae6769cb8b3ca7cb091fb42e3a5d087df42dee974a98"
}, },
"x86_64_macos": { "x86_64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.3/osv-scanner_1.3.3_darwin_amd64",
"checksum": "44eed376ea2e59238c264ace637e20e78e3bc40d648eeee270d8ce7a159e6e04" "checksum": "44eed376ea2e59238c264ace637e20e78e3bc40d648eeee270d8ce7a159e6e04"
}, },
"x86_64_windows": { "x86_64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.3/osv-scanner_1.3.3_windows_amd64.exe",
"checksum": "3a7fc1c9df14363618d27238ce589d247245b473dfaae5d98686870d1c50a9bd" "checksum": "3a7fc1c9df14363618d27238ce589d247245b473dfaae5d98686870d1c50a9bd"
}, },
"aarch64_linux_musl": { "aarch64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.3/osv-scanner_1.3.3_linux_arm64",
"checksum": "aaec809ae95223a9142671402d9b1c99d529557178b5966958f93e842a92dbdd" "checksum": "aaec809ae95223a9142671402d9b1c99d529557178b5966958f93e842a92dbdd"
}, },
"aarch64_macos": { "aarch64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.3/osv-scanner_1.3.3_darwin_arm64",
"checksum": "ab60e7e651c94399e844a44ddca36e7b285727e24ea3d8434872a095789eab01" "checksum": "ab60e7e651c94399e844a44ddca36e7b285727e24ea3d8434872a095789eab01"
}, },
"aarch64_windows": { "aarch64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.3/osv-scanner_1.3.3_windows_arm64.exe",
"checksum": "1f2e1c650896cfbf3c7e9bba5a3a9328448f02fff0602ec7cb26e06e165b9021" "checksum": "1f2e1c650896cfbf3c7e9bba5a3a9328448f02fff0602ec7cb26e06e165b9021"
} }
}, },
"1.3.2": { "1.3.2": {
"x86_64_linux_musl": { "x86_64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.2/osv-scanner_1.3.2_linux_amd64",
"checksum": "fcaf82e159abdaadedb81e940d1149f2262fcb4164d9f3e2540d751381682dbf" "checksum": "fcaf82e159abdaadedb81e940d1149f2262fcb4164d9f3e2540d751381682dbf"
}, },
"x86_64_macos": { "x86_64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.2/osv-scanner_1.3.2_darwin_amd64",
"checksum": "9ab2c6f8288192d35fcbbe23e26cc216287c0214a5e61920ed3e4c25402c0690" "checksum": "9ab2c6f8288192d35fcbbe23e26cc216287c0214a5e61920ed3e4c25402c0690"
}, },
"x86_64_windows": { "x86_64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.2/osv-scanner_1.3.2_windows_amd64.exe",
"checksum": "eff05ee74c4a673070f1364dde3bc784bd400c94227f2456389fdcf6aae1e842" "checksum": "eff05ee74c4a673070f1364dde3bc784bd400c94227f2456389fdcf6aae1e842"
}, },
"aarch64_linux_musl": { "aarch64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.2/osv-scanner_1.3.2_linux_arm64",
"checksum": "d0ad9a973eda4ec8a53272ae3c7248071c93e773c9c4c1d6e78ff67d342ded66" "checksum": "d0ad9a973eda4ec8a53272ae3c7248071c93e773c9c4c1d6e78ff67d342ded66"
}, },
"aarch64_macos": { "aarch64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.2/osv-scanner_1.3.2_darwin_arm64",
"checksum": "719743a2e90369970bbcb3161af7cfb9fd8c3b89b03c039a0034b6b5213530dc" "checksum": "719743a2e90369970bbcb3161af7cfb9fd8c3b89b03c039a0034b6b5213530dc"
}, },
"aarch64_windows": { "aarch64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.2/osv-scanner_1.3.2_windows_arm64.exe",
"checksum": "ac99665986e3f3d2df1c8a243b3056abd9dc54e41fc8f14fd8f6ef0b1ba4b5db" "checksum": "ac99665986e3f3d2df1c8a243b3056abd9dc54e41fc8f14fd8f6ef0b1ba4b5db"
} }
}, },
"1.3.1": { "1.3.1": {
"x86_64_linux_musl": { "x86_64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.1/osv-scanner_1.3.1_linux_amd64",
"checksum": "6a54e74b1d6adc9241862f28498765033af3079ffd6c20af0455f6e821e51dbd" "checksum": "6a54e74b1d6adc9241862f28498765033af3079ffd6c20af0455f6e821e51dbd"
}, },
"x86_64_macos": { "x86_64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.1/osv-scanner_1.3.1_darwin_amd64",
"checksum": "34c093f430eed512ec62b708d070e4ca2b24605da7d23b8e855523fcee057bf5" "checksum": "34c093f430eed512ec62b708d070e4ca2b24605da7d23b8e855523fcee057bf5"
}, },
"x86_64_windows": { "x86_64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.1/osv-scanner_1.3.1_windows_amd64.exe",
"checksum": "45f06809582799e4a772a84d19a38aa3045b861a3a78b8b37c43f3e1784e74ab" "checksum": "45f06809582799e4a772a84d19a38aa3045b861a3a78b8b37c43f3e1784e74ab"
}, },
"aarch64_linux_musl": { "aarch64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.1/osv-scanner_1.3.1_linux_arm64",
"checksum": "4e3931f461d5177e98d870f25d29d480481dd0f7358936d573f9a28791bd9a7c" "checksum": "4e3931f461d5177e98d870f25d29d480481dd0f7358936d573f9a28791bd9a7c"
}, },
"aarch64_macos": { "aarch64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.1/osv-scanner_1.3.1_darwin_arm64",
"checksum": "ca33dabf95320430a2026d2ef074d3297e9935f0d740f9559d132ed72f23a5df" "checksum": "ca33dabf95320430a2026d2ef074d3297e9935f0d740f9559d132ed72f23a5df"
}, },
"aarch64_windows": { "aarch64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.1/osv-scanner_1.3.1_windows_arm64.exe",
"checksum": "123174ca0ec605493581bcac61f6a226d239001d401ee047a4e9f69e27e16843" "checksum": "123174ca0ec605493581bcac61f6a226d239001d401ee047a4e9f69e27e16843"
} }
}, },
"1.3.0": { "1.3.0": {
"x86_64_linux_musl": { "x86_64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.0/osv-scanner_1.3.0_linux_amd64",
"checksum": "9559d734e9afd6f736a4b35af68d9ba6e8e5a3640e77d5b898660978dc97a3e0" "checksum": "9559d734e9afd6f736a4b35af68d9ba6e8e5a3640e77d5b898660978dc97a3e0"
}, },
"x86_64_macos": { "x86_64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.0/osv-scanner_1.3.0_darwin_amd64",
"checksum": "52df112d157730727e261608aac34c4073904e2e670f30623cec8b699855f118" "checksum": "52df112d157730727e261608aac34c4073904e2e670f30623cec8b699855f118"
}, },
"x86_64_windows": { "x86_64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.0/osv-scanner_1.3.0_windows_amd64.exe",
"checksum": "653116402b37ee9ac54b281629cd8643efc21637da907accd0c355c70022f937" "checksum": "653116402b37ee9ac54b281629cd8643efc21637da907accd0c355c70022f937"
}, },
"aarch64_linux_musl": { "aarch64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.0/osv-scanner_1.3.0_linux_arm64",
"checksum": "d34f97fc73e7ca37d3ea845bcaceb49604b344e94139127e3428c52c5a1353ee" "checksum": "d34f97fc73e7ca37d3ea845bcaceb49604b344e94139127e3428c52c5a1353ee"
}, },
"aarch64_macos": { "aarch64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.0/osv-scanner_1.3.0_darwin_arm64",
"checksum": "ca0ccce2b22766a6c2b139c758fb20268edb06063dbfa3a7ef76a9930ad90305" "checksum": "ca0ccce2b22766a6c2b139c758fb20268edb06063dbfa3a7ef76a9930ad90305"
}, },
"aarch64_windows": { "aarch64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.0/osv-scanner_1.3.0_windows_arm64.exe",
"checksum": "0af2954893d5b3297466baff4827ffb6217a71ceb6a65fdce3e161ee40cc3445" "checksum": "0af2954893d5b3297466baff4827ffb6217a71ceb6a65fdce3e161ee40cc3445"
} }
}, },
@@ -323,21 +496,27 @@
}, },
"1.2.0": { "1.2.0": {
"x86_64_linux_musl": { "x86_64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.2.0/osv-scanner_1.2.0_linux_amd64",
"checksum": "50937fa0456d6a41e61455f35bb9b40760d345aab6113a83b2d0aa334edd29c2" "checksum": "50937fa0456d6a41e61455f35bb9b40760d345aab6113a83b2d0aa334edd29c2"
}, },
"x86_64_macos": { "x86_64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.2.0/osv-scanner_1.2.0_darwin_amd64",
"checksum": "23497bd395cdde5a6dbf5a32468853e12e99c0a09c93873522e8d3395a33634d" "checksum": "23497bd395cdde5a6dbf5a32468853e12e99c0a09c93873522e8d3395a33634d"
}, },
"x86_64_windows": { "x86_64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.2.0/osv-scanner_1.2.0_windows_amd64.exe",
"checksum": "ec811a39119726d8834a7501cf61712cd71f5f45c984ed66df5bec57617157ec" "checksum": "ec811a39119726d8834a7501cf61712cd71f5f45c984ed66df5bec57617157ec"
}, },
"aarch64_linux_musl": { "aarch64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.2.0/osv-scanner_1.2.0_linux_arm64",
"checksum": "2e0c517250d80593de2e28edd705222a6006d91feefd0aae63895f5f32f06385" "checksum": "2e0c517250d80593de2e28edd705222a6006d91feefd0aae63895f5f32f06385"
}, },
"aarch64_macos": { "aarch64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.2.0/osv-scanner_1.2.0_darwin_arm64",
"checksum": "1b00100ecc5ec31b79001ae9675850d72449215984d6613d712e051f105ed2d4" "checksum": "1b00100ecc5ec31b79001ae9675850d72449215984d6613d712e051f105ed2d4"
}, },
"aarch64_windows": { "aarch64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.2.0/osv-scanner_1.2.0_windows_arm64.exe",
"checksum": "95e378acdc3ad65f719e2b3da0740efc4a95f7f76ace4aad3b4041fe38c0c92d" "checksum": "95e378acdc3ad65f719e2b3da0740efc4a95f7f76ace4aad3b4041fe38c0c92d"
} }
}, },
@@ -346,21 +525,27 @@
}, },
"1.1.0": { "1.1.0": {
"x86_64_linux_musl": { "x86_64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.1.0/osv-scanner_1.1.0_linux_amd64",
"checksum": "73b3b297f0a9a3fa28ea45fd45b3b9e74e5a0044ec1c03693a4e8aff0d169f86" "checksum": "73b3b297f0a9a3fa28ea45fd45b3b9e74e5a0044ec1c03693a4e8aff0d169f86"
}, },
"x86_64_macos": { "x86_64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.1.0/osv-scanner_1.1.0_darwin_amd64",
"checksum": "fdb19c0f3b4bec887940f73de49b524cebe93e8e5acd74123eb62f90b5a0451f" "checksum": "fdb19c0f3b4bec887940f73de49b524cebe93e8e5acd74123eb62f90b5a0451f"
}, },
"x86_64_windows": { "x86_64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.1.0/osv-scanner_1.1.0_windows_amd64.exe",
"checksum": "7da5337a25771fa8ebfec1d00304a8948b9ef5f6e04e75dcb3a01ccb64ce95bb" "checksum": "7da5337a25771fa8ebfec1d00304a8948b9ef5f6e04e75dcb3a01ccb64ce95bb"
}, },
"aarch64_linux_musl": { "aarch64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.1.0/osv-scanner_1.1.0_linux_arm64",
"checksum": "fed5a1109f45410d8bcecba852aab48f1812b5254e3cfdd2950ef9330e9e29c2" "checksum": "fed5a1109f45410d8bcecba852aab48f1812b5254e3cfdd2950ef9330e9e29c2"
}, },
"aarch64_macos": { "aarch64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.1.0/osv-scanner_1.1.0_darwin_arm64",
"checksum": "65fa9c435535fd58cc1fd6878a09009c44d608c749c41b8f7a7e4727cda0e6ee" "checksum": "65fa9c435535fd58cc1fd6878a09009c44d608c749c41b8f7a7e4727cda0e6ee"
}, },
"aarch64_windows": { "aarch64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.1.0/osv-scanner_1.1.0_windows_arm64.exe",
"checksum": "e01ae91abe3c5f34da01b7a90741663bbc606f85030520946169965b64bd6c5c" "checksum": "e01ae91abe3c5f34da01b7a90741663bbc606f85030520946169965b64bd6c5c"
} }
}, },
@@ -369,52 +554,67 @@
}, },
"1.0.2": { "1.0.2": {
"x86_64_linux_musl": { "x86_64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.0.2/osv-scanner_1.0.2_linux_amd64",
"checksum": "5b550521d7ca7f708059daff6a45bae776bbefa4c0f1a4ce5298cd50808a3d7a" "checksum": "5b550521d7ca7f708059daff6a45bae776bbefa4c0f1a4ce5298cd50808a3d7a"
}, },
"x86_64_macos": { "x86_64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.0.2/osv-scanner_1.0.2_darwin_amd64",
"checksum": "0e64408697ff1e80f4e0866e890d1dc842dd8316296d7d2659db23c200bf0f3b" "checksum": "0e64408697ff1e80f4e0866e890d1dc842dd8316296d7d2659db23c200bf0f3b"
}, },
"x86_64_windows": { "x86_64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.0.2/osv-scanner_1.0.2_windows_amd64.exe",
"checksum": "ac9c77d9a5e91e8050b2aa5af9e13c5547775ae969d51ae957e08a8dc3804764" "checksum": "ac9c77d9a5e91e8050b2aa5af9e13c5547775ae969d51ae957e08a8dc3804764"
}, },
"aarch64_linux_musl": { "aarch64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.0.2/osv-scanner_1.0.2_linux_arm64",
"checksum": "35286ae9ef2c1b24a5900398f1039a268d602279e82ff03695a24e0979f2dc7d" "checksum": "35286ae9ef2c1b24a5900398f1039a268d602279e82ff03695a24e0979f2dc7d"
}, },
"aarch64_macos": { "aarch64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.0.2/osv-scanner_1.0.2_darwin_arm64",
"checksum": "9f3bf97708adb3cd25f609519440ec6b675f8b4c6ca0a71e4de68967bc3bee3e" "checksum": "9f3bf97708adb3cd25f609519440ec6b675f8b4c6ca0a71e4de68967bc3bee3e"
}, },
"aarch64_windows": { "aarch64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.0.2/osv-scanner_1.0.2_windows_arm64.exe",
"checksum": "d04936bff72361efe97cb03f8badb53d743cee2a3664900ca928be9649a0bd6a" "checksum": "d04936bff72361efe97cb03f8badb53d743cee2a3664900ca928be9649a0bd6a"
} }
}, },
"1.0.1": { "1.0.1": {
"x86_64_linux_musl": { "x86_64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.0.1/osv-scanner_1.0.1_linux_amd64",
"checksum": "a5fe0ecc63a730c73e4aad1e0bc13aac51d3fe00222c5982e0978550f8efd6a6" "checksum": "a5fe0ecc63a730c73e4aad1e0bc13aac51d3fe00222c5982e0978550f8efd6a6"
}, },
"x86_64_macos": { "x86_64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.0.1/osv-scanner_1.0.1_darwin_amd64",
"checksum": "52e3c0082ced8f70558eb9776744585d25bca08f0aeddd93d854344e133bfe5e" "checksum": "52e3c0082ced8f70558eb9776744585d25bca08f0aeddd93d854344e133bfe5e"
}, },
"x86_64_windows": { "x86_64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.0.1/osv-scanner_1.0.1_windows_amd64.exe",
"checksum": "9d871f7ffe368dc24c5b01fa4b746f363270277806d1209dbc85076bb291a03f" "checksum": "9d871f7ffe368dc24c5b01fa4b746f363270277806d1209dbc85076bb291a03f"
}, },
"aarch64_linux_musl": { "aarch64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.0.1/osv-scanner_1.0.1_linux_arm64",
"checksum": "7b02b7330b255c25e91fe1fce85ab9461b925a92894fa82c17cbce1e7ce017c2" "checksum": "7b02b7330b255c25e91fe1fce85ab9461b925a92894fa82c17cbce1e7ce017c2"
}, },
"aarch64_macos": { "aarch64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.0.1/osv-scanner_1.0.1_darwin_arm64",
"checksum": "ff87ff3add4062bfc1a0c5894df9d256cca4a6c9189a2a778c92c932f667de91" "checksum": "ff87ff3add4062bfc1a0c5894df9d256cca4a6c9189a2a778c92c932f667de91"
}, },
"aarch64_windows": { "aarch64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.0.1/osv-scanner_1.0.1_windows_arm64.exe",
"checksum": "f1bebaad4fb464da0387e4e6bb7245fbb80bd97b9e22cec70bd1291e5319f74b" "checksum": "f1bebaad4fb464da0387e4e6bb7245fbb80bd97b9e22cec70bd1291e5319f74b"
} }
}, },
"1.0.0": { "1.0.0": {
"x86_64_linux_musl": { "x86_64_linux_musl": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.0.0/osv-scanner_1.0.0_linux_amd64",
"checksum": "998c7060e4f78bc0a933dd3e41ff92404ff70df792939ca48fcb02a9dc94b8e8" "checksum": "998c7060e4f78bc0a933dd3e41ff92404ff70df792939ca48fcb02a9dc94b8e8"
}, },
"x86_64_macos": { "x86_64_macos": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.0.0/osv-scanner_1.0.0_darwin_amd64",
"checksum": "267b672fd8f2ad422b9fd55fcb319ee04b38d605500b95e8343fe6f65854222c" "checksum": "267b672fd8f2ad422b9fd55fcb319ee04b38d605500b95e8343fe6f65854222c"
}, },
"x86_64_windows": { "x86_64_windows": {
"url": "https://github.com/google/osv-scanner/releases/download/v1.0.0/osv-scanner_1.0.0_windows_amd64.exe",
"checksum": "d9347ad3cc64a47706ab3bcf261be04d26ef0c34fea2ac69089aca4b971cda52" "checksum": "d9347ad3cc64a47706ab3bcf261be04d26ef0c34fea2ac69089aca4b971cda52"
} }
} }

View File

@@ -1,6 +1,7 @@
{ {
"rust_crate": "parse-changelog", "rust_crate": "parse-changelog",
"template": null, "template": null,
"license_markdown": "[Apache-2.0](https://github.com/taiki-e/parse-changelog/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/parse-changelog/blob/main/LICENSE-MIT)",
"latest": { "latest": {
"version": "0.6.8" "version": "0.6.8"
}, },

53
manifests/protoc.json generated
View File

@@ -1,14 +1,37 @@
{ {
"rust_crate": null, "rust_crate": null,
"template": null, "template": null,
"license_markdown": "[BSD-3-Clause](https://github.com/protocolbuffers/protobuf/blob/HEAD/LICENSE)",
"latest": { "latest": {
"version": "3.27.0" "version": "3.27.1"
}, },
"3": { "3": {
"version": "3.27.0" "version": "3.27.1"
}, },
"3.27": { "3.27": {
"version": "3.27.0" "version": "3.27.1"
},
"3.27.1": {
"x86_64_linux_gnu": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v27.1/protoc-27.1-linux-x86_64.zip",
"checksum": "8970e3d8bbd67d53768fe8c2e3971bdd71e51cfe2001ca06dacad17258a7dae3"
},
"x86_64_macos": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v27.1/protoc-27.1-osx-x86_64.zip",
"checksum": "8520d944f3a3890fa296a3b3b0d4bb18337337e2526bbbf1b507eeea3c2a1ec4"
},
"x86_64_windows": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v27.1/protoc-27.1-win64.zip",
"checksum": "da531c51ccd1290d8d34821f0ce4e219c7fbaa6f9825f5a3fb092a9d03fe6206"
},
"aarch64_linux_gnu": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v27.1/protoc-27.1-linux-aarch_64.zip",
"checksum": "8809c2ec85368c6b6e9af161b6771a153aa92670a24adbe46dd34fa02a04df2f"
},
"aarch64_macos": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v27.1/protoc-27.1-osx-aarch_64.zip",
"checksum": "03b7af1bf469e7285dc51976ee5fa99412704dbd1c017105114852a37b165c12"
}
}, },
"3.27.0": { "3.27.0": {
"x86_64_linux_gnu": { "x86_64_linux_gnu": {
@@ -397,7 +420,29 @@
} }
}, },
"3.22": { "3.22": {
"version": "3.22.4" "version": "3.22.5"
},
"3.22.5": {
"x86_64_linux_gnu": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v22.5/protoc-22.5-linux-x86_64.zip",
"checksum": "c11692013bbffb7c257de7f82cd02d323700ebcdb8a4923ed02fea812f70f5e3"
},
"x86_64_macos": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v22.5/protoc-22.5-osx-x86_64.zip",
"checksum": "3edd0c65e2a8efc83f24918db27e1bbc72f3abe7618cb4cfb1842630a830b562"
},
"x86_64_windows": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v22.5/protoc-22.5-win64.zip",
"checksum": "f99d1e9e28f7704b22d4254fab293477ea0d4ef3e5b9aa940a8fccfc99c1ce4c"
},
"aarch64_linux_gnu": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v22.5/protoc-22.5-linux-aarch_64.zip",
"checksum": "1890f845b333fe040ec002a659a4ff7515cd93f8db0066c3885d1fce9f70b208"
},
"aarch64_macos": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v22.5/protoc-22.5-osx-aarch_64.zip",
"checksum": "b7fc6c6099ad10149d90f8b107871537ca030980354b402d8e034055ce082b77"
}
}, },
"3.22.4": { "3.22.4": {
"x86_64_linux_gnu": { "x86_64_linux_gnu": {

82
manifests/rclone.json generated Normal file
View File

@@ -0,0 +1,82 @@
{
"rust_crate": null,
"template": {
"x86_64_linux_musl": {
"url": "https://github.com/rclone/rclone/releases/download/v${version}/rclone-v${version}-linux-amd64.zip",
"bin": "rclone-v${version}-linux-amd64/rclone"
},
"x86_64_macos": {
"url": "https://github.com/rclone/rclone/releases/download/v${version}/rclone-v${version}-osx-amd64.zip",
"bin": "rclone-v${version}-osx-amd64/rclone"
},
"x86_64_windows": {
"url": "https://github.com/rclone/rclone/releases/download/v${version}/rclone-v${version}-windows-amd64.zip",
"bin": "rclone-v${version}-windows-amd64/rclone.exe"
},
"aarch64_linux_musl": {
"url": "https://github.com/rclone/rclone/releases/download/v${version}/rclone-v${version}-linux-arm64.zip",
"bin": "rclone-v${version}-linux-arm64/rclone"
},
"aarch64_macos": {
"url": "https://github.com/rclone/rclone/releases/download/v${version}/rclone-v${version}-osx-arm64.zip",
"bin": "rclone-v${version}-osx-arm64/rclone"
},
"aarch64_windows": {
"url": "https://github.com/rclone/rclone/releases/download/v${version}/rclone-v${version}-windows-arm64.zip",
"bin": "rclone-v${version}-windows-arm64/rclone.exe"
}
},
"license_markdown": "[MIT](https://github.com/rclone/rclone/blob/master/COPYING)",
"latest": {
"version": "1.67.0"
},
"1": {
"version": "1.67.0"
},
"1.67": {
"version": "1.67.0"
},
"1.67.0": {
"x86_64_linux_musl": {
"checksum": "07c23d21a94d70113d949253478e13261c54d14d72023bb14d96a8da5f3e7722"
},
"x86_64_macos": {
"checksum": "1a1a3b080393b721ba5f38597305be2dbac3b654b43dfac3ebe4630b4e6406c3"
},
"x86_64_windows": {
"checksum": "117b99441024607d6043e274c7fcbed64d07ad87347d17dd0a717bdc1c59716b"
},
"aarch64_linux_musl": {
"checksum": "2b44981a1a7d1f432c53c0f2f0b6bcdd410f6491c47dc55428fdac0b85c763f1"
},
"aarch64_macos": {
"checksum": "4dc6142aea78bb86f1236fe38e570b715990503c09733418c0cd2300e45651e4"
},
"aarch64_windows": {
"checksum": "54f263712d02bf2345eb5a3444aa4f07b990f5b4c6d02f1de892d1ff8028b50c"
}
},
"1.66": {
"version": "1.66.0"
},
"1.66.0": {
"x86_64_linux_musl": {
"checksum": "b4d304b1dc76001b1d3bb820ae8d1ae60a072afbd3296be904a3ee00b3d4fab9"
},
"x86_64_macos": {
"checksum": "5adb4c5fe0675627461000a63156001301ec7cade966c55c8c4ebcfaeb62c5ae"
},
"x86_64_windows": {
"checksum": "8e8bb13fb0d7beb316487ecde8ead5426784cdcdbf8b4d8dd381c6fe8c7d92a0"
},
"aarch64_linux_musl": {
"checksum": "c50a3ab93082f21788f9244393b19f2426edeeb896eec2e3e05ffb2e8727e075"
},
"aarch64_macos": {
"checksum": "b5f4c4d06ff3d426aee99870ad437276c9ddaad55442f2df6a58b918115fe4cf"
},
"aarch64_windows": {
"checksum": "4e815350382249ffb6d9520262bbce81f45f63126134a0c365eb648a4d27e6ea"
}
}
}

View File

@@ -22,6 +22,7 @@
"bin": "sccache-v${version}-aarch64-apple-darwin/sccache" "bin": "sccache-v${version}-aarch64-apple-darwin/sccache"
} }
}, },
"license_markdown": "[Apache-2.0](https://github.com/mozilla/sccache/blob/main/LICENSE)",
"latest": { "latest": {
"version": "0.8.1" "version": "0.8.1"
}, },

View File

@@ -18,6 +18,7 @@
"bin": "shellcheck-v${version}/shellcheck" "bin": "shellcheck-v${version}/shellcheck"
} }
}, },
"license_markdown": "[GPL-3.0](https://github.com/koalaman/shellcheck/blob/master/LICENSE)",
"latest": { "latest": {
"version": "0.10.0" "version": "0.10.0"
}, },

1
manifests/shfmt.json generated
View File

@@ -17,6 +17,7 @@
"url": "https://github.com/mvdan/sh/releases/download/v${version}/shfmt_v${version}_darwin_arm64" "url": "https://github.com/mvdan/sh/releases/download/v${version}/shfmt_v${version}_darwin_arm64"
} }
}, },
"license_markdown": "[BSD-3-Clause](https://github.com/mvdan/sh/blob/master/LICENSE)",
"latest": { "latest": {
"version": "3.8.0" "version": "3.8.0"
}, },

65
manifests/syft.json generated
View File

@@ -22,11 +22,72 @@
"bin": "syft" "bin": "syft"
} }
}, },
"license_markdown": "[Apache-2.0](https://github.com/anchore/syft/blob/main/LICENSE)",
"latest": { "latest": {
"version": "1.4.1" "version": "1.7.0"
}, },
"1": { "1": {
"version": "1.4.1" "version": "1.7.0"
},
"1.7": {
"version": "1.7.0"
},
"1.7.0": {
"x86_64_linux_musl": {
"checksum": "2d36ba261e94f93bbb9538a975a63a494cc9b4440dcd2ee43e68b4a70a506916"
},
"x86_64_macos": {
"checksum": "e7a9ed735c2436f4a00bec80ec431788e008021e2af1ddce7747b3ae9a10b012"
},
"x86_64_windows": {
"checksum": "3c7908b5838a2a24ea4fa26425ee2690e1ada5e9763f7493a99d8efb1d9a08a8"
},
"aarch64_linux_musl": {
"checksum": "cf43f1702ee063071be929f5561b093f58aa08d4dc5e19016e5d25e1453d81fe"
},
"aarch64_macos": {
"checksum": "a076de1eb324b96a00e6b8546cbb77eb2ca34f0a38a008e4c10708778df4741c"
}
},
"1.6": {
"version": "1.6.0"
},
"1.6.0": {
"x86_64_linux_musl": {
"checksum": "35c8f0912aeb31b36a0621d98e48d0b2761cc896d18d541ed3982721cf2e8f9c"
},
"x86_64_macos": {
"checksum": "93062feafa5c7684b1360e03cf6e3ec64f6b720f329743a00e917cf0a29bacb8"
},
"x86_64_windows": {
"checksum": "6e100901226bf818455f9f138288037b2560e692df3119dd2af74e3959f1d286"
},
"aarch64_linux_musl": {
"checksum": "82fa0d244f84d805589cfbdbe420fbf75ff92574eb85fcfef7de3b0c7f4ef4f8"
},
"aarch64_macos": {
"checksum": "d7d2aa97b08a66281a6137ed0bdef7d08c3613efbc413eee5f8e2fade699cbcc"
}
},
"1.5": {
"version": "1.5.0"
},
"1.5.0": {
"x86_64_linux_musl": {
"checksum": "3d10023d46dfaf0fe75288df207b478b43597f7d2fff553f58430817166bd478"
},
"x86_64_macos": {
"checksum": "605322e3e7043a4f2f3d6e37f75a71389d38f6f290bff2e54bb2aaebbbf4829b"
},
"x86_64_windows": {
"checksum": "5079c6a88e130f8677d0701cb2689f9eae2088022ecf5fa2b9f341b96d9983d2"
},
"aarch64_linux_musl": {
"checksum": "ee2b1289a1e4b0de9409c3a78867949ca42788a5f50072b8a6e6e04e6a269f9c"
},
"aarch64_macos": {
"checksum": "fe02d072e7ec9a8eb4ac866ba973396a8beae79829ee870acaadd4d862e5e65a"
}
}, },
"1.4": { "1.4": {
"version": "1.4.1" "version": "1.4.1"

114
manifests/typos.json generated
View File

@@ -14,11 +14,121 @@
"url": "https://github.com/crate-ci/typos/releases/download/v${version}/typos-v${version}-aarch64-apple-darwin.tar.gz" "url": "https://github.com/crate-ci/typos/releases/download/v${version}/typos-v${version}-aarch64-apple-darwin.tar.gz"
} }
}, },
"license_markdown": "[MIT](https://github.com/crate-ci/typos/blob/master/LICENSE-MIT) OR [Apache-2.0](https://github.com/crate-ci/typos/blob/master/LICENSE-APACHE)",
"latest": { "latest": {
"version": "1.21.0" "version": "1.22.7"
}, },
"1": { "1": {
"version": "1.21.0" "version": "1.22.7"
},
"1.22": {
"version": "1.22.7"
},
"1.22.7": {
"x86_64_linux_musl": {
"checksum": "a706a74f970f660e8aa24c6b3a46b8e213974d4317dc163b03d5e05c20e561a8"
},
"x86_64_macos": {
"checksum": "28f40f958f37cab2b24308142f404dba22d0e18757b511e0a16100fb4fd41547"
},
"x86_64_windows": {
"checksum": "912951a701c2c55dac499f908775126735aa2b59b41c488da18093e2b2d3aa69"
},
"aarch64_macos": {
"checksum": "c5857dec27e38ed996e76b2d8c4545006905ea750ab015ab72bd66cadb00b376"
}
},
"1.22.6": {
"x86_64_macos": {
"checksum": "ba16199129ddd81e1c720d39fb35c41369a9c78c15b2e39126e8b02e875e11f7"
},
"x86_64_windows": {
"checksum": "aae44abc76ba77556cfc7d576ced87a716f420b09fa357cebbdf0a9a040a2492"
},
"aarch64_macos": {
"checksum": "31a335e695fc9749ddd95bc9154616ccb07c94df77bcc9156acc41d258219f64"
}
},
"1.22.5": {
"x86_64_macos": {
"checksum": "1023d1323b98103d45ffd293515a2515c14493c57c5035c76106ec344aab6a4b"
},
"x86_64_windows": {
"checksum": "b727570571472fbab9029d4bcc09a1cbcafece02907fa7a25a46d6feb426bb5a"
},
"aarch64_macos": {
"checksum": "96024e189bce99b25bbc2a4165a76832637c231f1163d57581a080bbb5bfbd22"
}
},
"1.22.4": {
"x86_64_linux_musl": {
"checksum": "aa4be101267b74c7ba0a8d506362c8b5ed75351afe35c86e2de3b2dfad1092b7"
},
"x86_64_macos": {
"checksum": "3761bc4c3bbc0367fbb691e600d09f92a2b641f98158b13c78b469c36afa6a67"
},
"x86_64_windows": {
"checksum": "94473d6765f59ea970deb2377e5a42c6d4bf7a37441fab52a2a6eb1ee6d49f77"
},
"aarch64_macos": {
"checksum": "5328764dc79e25e65615698236ff8842bb4a1bfd95e2d4e84171d7df5b216489"
}
},
"1.22.3": {
"x86_64_linux_musl": {
"checksum": "712206018c601b93557e42aeffd486af2e6fb0a6b017d0d51e6dad587bd65097"
},
"x86_64_macos": {
"checksum": "21cae80f0ff7ebf39e36cba72c230f78d728168e127e21480d9398cccd862fdd"
},
"x86_64_windows": {
"checksum": "2d1cfa926d0f0dd8c972334b6e6c127243dbf8e354f3e31ed5018e30f531fe43"
},
"aarch64_macos": {
"checksum": "5ffd546b0335480af0c9f384d58db07b72e822864466055b2d2079114a279324"
}
},
"1.22.2": {
"x86_64_linux_musl": {
"checksum": "ff5123e4f309c3f013a4126fbfc8c998b018408d250d170295683b567c1b7ffe"
},
"x86_64_macos": {
"checksum": "b85e65bf834304c71f7cce7311e99d950761d23e87bbfb2c86a37d9d52a9cb84"
},
"x86_64_windows": {
"checksum": "6e7ecedbb3aab7bc00d1818680abe90ed3faa071113f12e6e7d197986ba9565d"
},
"aarch64_macos": {
"checksum": "dc1939d39b55a08900f57dc077f9e69f275365abcee6a45d32b04514f1f6a8a8"
}
},
"1.22.1": {
"x86_64_linux_musl": {
"checksum": "24afc3b444e2abfa2b09af337b8ebb07e27856dd9a685bf62d967c212f509cbd"
},
"x86_64_macos": {
"checksum": "5ff717943be650006cf56f20d2e7dacb93bb206efae544955fbe3bc0897a831e"
},
"x86_64_windows": {
"checksum": "7185b46acb4735b57cea4932657a29f5a55050becf02814b0057143e7fe5c94d"
},
"aarch64_macos": {
"checksum": "19234d0f9e90895ab1ffbbc21b46d0f4fe403cf8add8d9a66b5491ecf19a253d"
}
},
"1.22.0": {
"x86_64_linux_musl": {
"checksum": "bfa037cb884797da229768751642191128a8096f34a77c2c2aab81f4ea4add5e"
},
"x86_64_macos": {
"checksum": "5cede24a0c7e7fa826372346ae8a1eb7264741412cf830acb7bd6ba9d261e610"
},
"x86_64_windows": {
"checksum": "cded62aca581b5610a8a8ac88d26c84bbbf02cd988fca64be50da6beb7d6ad85"
},
"aarch64_macos": {
"checksum": "e747252644b76cca8b7c4bf3a36835186773500a2d1964ffe7341bd33ffdfbe2"
}
}, },
"1.21": { "1.21": {
"version": "1.21.0" "version": "1.21.0"

32
manifests/wait-for-them.json generated Normal file
View File

@@ -0,0 +1,32 @@
{
"rust_crate": "wait-for-them",
"template": {
"x86_64_linux_gnu": {
"url": "https://github.com/shenek/wait-for-them/releases/download/v${version}/wait-for-them-linux"
},
"x86_64_windows": {
"url": "https://github.com/shenek/wait-for-them/releases/download/v${version}/wait-for-them-windows.exe"
},
"aarch64_macos": {
"url": "https://github.com/shenek/wait-for-them/releases/download/v${version}/wait-for-them-macos"
}
},
"license_markdown": "[GPL-3.0](https://github.com/shenek/wait-for-them/blob/v0.4.0/Cargo.toml#L7)",
"latest": {
"version": "0.4.0"
},
"0.4": {
"version": "0.4.0"
},
"0.4.0": {
"x86_64_linux_gnu": {
"checksum": "2350e38c79f9e59d83ceade3ba7dc2a449bdaac075ea574786421a4bc4646f3d"
},
"x86_64_windows": {
"checksum": "1f716ee4f755a01b67e9606e91a0a65448d4f06113ba40b09e465af62a1c73da"
},
"aarch64_macos": {
"checksum": "a294da6da0ffc0b0a755eb3db50a968841356ff1fdc14724cfa288732496b6dc"
}
}
}

View File

@@ -42,6 +42,7 @@
] ]
} }
}, },
"license_markdown": "[MIT](https://github.com/rustwasm/wasm-bindgen/blob/main/LICENSE-MIT) OR [Apache-2.0](https://github.com/rustwasm/wasm-bindgen/blob/main/LICENSE-APACHE)",
"latest": { "latest": {
"version": "0.2.92" "version": "0.2.92"
}, },

View File

@@ -18,6 +18,7 @@
"bin": "wasm-pack-v${version}-aarch64-unknown-linux-musl/wasm-pack" "bin": "wasm-pack-v${version}-aarch64-unknown-linux-musl/wasm-pack"
} }
}, },
"license_markdown": "[MIT](https://github.com/rustwasm/wasm-pack/blob/master/LICENSE-MIT) OR [Apache-2.0](https://github.com/rustwasm/wasm-pack/blob/master/LICENSE-APACHE)",
"latest": { "latest": {
"version": "0.12.1" "version": "0.12.1"
}, },

View File

@@ -22,6 +22,7 @@
"bin": "wasmtime-v${version}-aarch64-macos/wasmtime" "bin": "wasmtime-v${version}-aarch64-macos/wasmtime"
} }
}, },
"license_markdown": "[Apache-2.0 WITH LLVM-exception](https://github.com/bytecodealliance/wasmtime/blob/main/LICENSE)",
"latest": { "latest": {
"version": "21.0.1" "version": "21.0.1"
}, },

1
manifests/xbuild.json generated
View File

@@ -14,6 +14,7 @@
"bin": "xbuild-windows-x64.exe" "bin": "xbuild-windows-x64.exe"
} }
}, },
"license_markdown": "[Apache-2.0 OR MIT](https://github.com/rust-mobile/xbuild/blob/v0.2.0/xbuild/Cargo.toml#L7)",
"latest": { "latest": {
"version": "0.2.0" "version": "0.2.0"
}, },

49
manifests/xh.json generated Normal file
View File

@@ -0,0 +1,49 @@
{
"rust_crate": "xh",
"template": {
"x86_64_linux_musl": {
"url": "https://github.com/ducaale/xh/releases/download/v${version}/xh-v${version}-x86_64-unknown-linux-musl.tar.gz",
"bin": "xh-v${version}-x86_64-unknown-linux-musl/xh"
},
"x86_64_macos": {
"url": "https://github.com/ducaale/xh/releases/download/v${version}/xh-v${version}-x86_64-apple-darwin.tar.gz",
"bin": "xh-v${version}-x86_64-apple-darwin/xh"
},
"x86_64_windows": {
"url": "https://github.com/ducaale/xh/releases/download/v${version}/xh-v${version}-x86_64-pc-windows-msvc.zip",
"bin": "xh-v${version}-x86_64-pc-windows-msvc/xh.exe"
},
"aarch64_linux_musl": {
"url": "https://github.com/ducaale/xh/releases/download/v${version}/xh-v${version}-aarch64-unknown-linux-musl.tar.gz",
"bin": "xh-v${version}-aarch64-unknown-linux-musl/xh"
},
"aarch64_macos": {
"url": "https://github.com/ducaale/xh/releases/download/v${version}/xh-v${version}-aarch64-apple-darwin.tar.gz",
"bin": "xh-v${version}-aarch64-apple-darwin/xh"
}
},
"license_markdown": "[MIT](https://github.com/ducaale/xh/blob/master/LICENSE)",
"latest": {
"version": "0.22.0"
},
"0.22": {
"version": "0.22.0"
},
"0.22.0": {
"x86_64_linux_musl": {
"checksum": "270a4ece43a44f4c270417b50ddea430029b98cc5103e264bf65f64fac5b60a8"
},
"x86_64_macos": {
"checksum": "891a015ac04fda2a27df82991b9495213ce38d97827192c771da798bf10c875b"
},
"x86_64_windows": {
"checksum": "cbaeabbfece018e05f1ef0e380b5b797c61524b11662598bc444402bcb0607d0"
},
"aarch64_linux_musl": {
"checksum": "e4feb4a463183c3cc139f906a2cfe84dd3790d277f2915271a9a2ef3a0978ffb"
},
"aarch64_macos": {
"checksum": "48fdabeedd42b2638a9e79bbb2506eaea7371e381dbf3cebf62e5cd40a39cc64"
}
}
}

1
manifests/zola.json generated
View File

@@ -14,6 +14,7 @@
"url": "https://github.com/getzola/zola/releases/download/v${version}/zola-v${version}-aarch64-apple-darwin.tar.gz" "url": "https://github.com/getzola/zola/releases/download/v${version}/zola-v${version}-aarch64-apple-darwin.tar.gz"
} }
}, },
"license_markdown": "[MIT](https://github.com/getzola/zola/blob/master/LICENSE)",
"latest": { "latest": {
"version": "0.18.0" "version": "0.18.0"
}, },

View File

@@ -8,6 +8,7 @@ cd "$(dirname "$0")"/../..
glibc_pre_2_34_incompat=( glibc_pre_2_34_incompat=(
cargo-cyclonedx cargo-cyclonedx
cargo-spellcheck cargo-spellcheck
wait-for-them
xbuild xbuild
) )
glibc_pre_2_31_incompat=( glibc_pre_2_31_incompat=(
@@ -26,6 +27,7 @@ glibc_pre_2_27_incompat=(
) )
musl_incompat=( musl_incompat=(
"${glibc_pre_2_27_incompat[@]}" "${glibc_pre_2_27_incompat[@]}"
deepsource
) )
incompat_tools=() incompat_tools=()
@@ -128,17 +130,14 @@ case "${host_os}" in
fi fi
;; ;;
esac esac
# cargo-binstall requires cargo
if type -P cargo &>/dev/null; then
# cargo-watch/watchexec-cli is supported by cargo-binstall (through quickinstall) # cargo-watch/watchexec-cli is supported by cargo-binstall (through quickinstall)
case "${version}" in case "${version}" in
latest) tools+=(cargo-watch watchexec-cli nextest) ;; latest) tools+=(cargo-watch watchexec-cli) ;;
major.minor.patch) tools+=(cargo-watch@8.1.1 watchexec-cli@1.20.5 nextest@0.9.57) ;; major.minor.patch) tools+=(cargo-watch@8.1.1 watchexec-cli@1.20.5) ;;
major.minor) tools+=(cargo-watch@8.1 watchexec-cli@1.20 nextest@0.9) ;; major.minor) tools+=(cargo-watch@8.1 watchexec-cli@1.20) ;;
major) tools+=(cargo-watch@8 watchexec-cli@1) ;; major) tools+=(cargo-watch@8 watchexec-cli@1) ;;
*) exit 1 ;; *) exit 1 ;;
esac esac
fi
# sort and dedup # sort and dedup
IFS=$'\n' IFS=$'\n'

View File

@@ -1,6 +1,7 @@
[package] [package]
name = "install-action-internal-codegen" name = "install-action-internal-codegen"
edition = "2021" edition = "2021"
default-run = "generate-manifest"
[dependencies] [dependencies]
anyhow = "1" anyhow = "1"
@@ -12,6 +13,7 @@ serde = "1"
serde_derive = "1" serde_derive = "1"
serde_json = "1" serde_json = "1"
sha2 = "0.10" sha2 = "0.10"
spdx = "0.10"
tar = "0.4" tar = "0.4"
toml_edit = { version = "0.22", default-features = false, features = ["parse", "serde"] } toml_edit = { version = "0.22", default-features = false, features = ["parse", "serde"] }
# TODO: call curl command instead of using ureq? # TODO: call curl command instead of using ureq?
@@ -19,3 +21,15 @@ ureq = { version = "2", features = ["json"] }
[lints] [lints]
workspace = true workspace = true
[[bin]]
bench = false
name = "generate-manifest"
path = "src/main.rs"
test = false
[[bin]]
bench = false
name = "generate-tools-markdown"
path = "src/tools-markdown.rs"
test = false

View File

@@ -1,5 +1,7 @@
{ {
"repository": "https://github.com/biomejs/biome", "repository": "https://github.com/biomejs/biome",
"website": "https://biomejs.dev",
"license_markdown": "[Apache-2.0](https://github.com/biomejs/biome/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/biomejs/biome/blob/main/LICENSE-MIT)",
"tag_prefix": "cli/v", "tag_prefix": "cli/v",
"bin": "${package}${exe}", "bin": "${package}${exe}",
"platform": { "platform": {

View File

@@ -1,5 +1,7 @@
{ {
"repository": "https://github.com/rustsec/rustsec", "repository": "https://github.com/rustsec/rustsec",
"website": "https://github.com/rustsec/rustsec/tree/HEAD/cargo-audit",
"license_markdown": "[Apache-2.0](https://github.com/rustsec/rustsec/blob/HEAD/cargo-audit/LICENSE-APACHE) OR [MIT](https://github.com/rustsec/rustsec/blob/HEAD/cargo-audit/LICENSE-MIT)",
"tag_prefix": "cargo-audit/v", "tag_prefix": "cargo-audit/v",
"rust_crate": "${package}", "rust_crate": "${package}",
"asset_name": "${package}-${rust_target}-v${version}.tgz", "asset_name": "${package}-${rust_target}-v${version}.tgz",

View File

@@ -1,5 +1,6 @@
{ {
"repository": "https://github.com/cargo-bins/cargo-binstall", "repository": "https://github.com/cargo-bins/cargo-binstall",
"license_markdown": "[GPL-3.0](https://github.com/cargo-bins/cargo-binstall/blob/HEAD/crates/bin/LICENSE)",
"tag_prefix": "v", "tag_prefix": "v",
"rust_crate": "${package}", "rust_crate": "${package}",
"asset_name": "${package}-${rust_target}.zip", "asset_name": "${package}-${rust_target}.zip",

View File

@@ -0,0 +1,17 @@
{
"repository": "https://github.com/nextest-rs/nextest",
"tag_prefix": "cargo-nextest-",
"rust_crate": "${package}",
"asset_name": "${package}-${version}-${rust_target}.tar.gz",
"prefer_linux_gnu": true,
"immediate_yank_reflection": true,
"platform": {
"x86_64_linux_gnu": {},
"x86_64_linux_musl": {},
"x86_64_macos": {
"asset_name": "${package}-${version}-universal-apple-darwin.tar.gz"
},
"x86_64_windows": {},
"aarch64_linux_gnu": {}
}
}

View File

@@ -2,7 +2,7 @@
"repository": "https://github.com/orium/cargo-rdme", "repository": "https://github.com/orium/cargo-rdme",
"tag_prefix": "v", "tag_prefix": "v",
"rust_crate": "${package}", "rust_crate": "${package}",
"broken": ["1.4.3"], "broken": ["1.4.3", "1.4.4"],
"platform": { "platform": {
"x86_64_linux_musl": { "x86_64_linux_musl": {
"asset_name": "${package}_v${version}_${rust_target}.tar.bz2" "asset_name": "${package}_v${version}_${rust_target}.tar.bz2"

View File

@@ -0,0 +1,13 @@
{
"repository": "https://github.com/obi1kenobi/cargo-semver-checks",
"tag_prefix": "v",
"rust_crate": "${package}",
"asset_name": "${package}-${rust_target}.tar.gz",
"version_range": ">= 0.31.0",
"platform": {
"x86_64_linux_musl": {},
"x86_64_macos": {},
"x86_64_windows": {},
"aarch64_macos": {}
}
}

View File

@@ -1,5 +1,6 @@
{ {
"repository": "https://github.com/DevinR528/cargo-sort", "repository": "https://github.com/DevinR528/cargo-sort",
"license_markdown": "[Apache-2.0 OR MIT](https://github.com/DevinR528/cargo-sort/blob/v1.0.9/Cargo.toml#L5)",
"tag_prefix": "v", "tag_prefix": "v",
"rust_crate": "${package}", "rust_crate": "${package}",
"asset_name": "${package}-${rust_target}.tar.gz", "asset_name": "${package}-${rust_target}.tar.gz",

View File

@@ -1,5 +1,6 @@
{ {
"repository": "https://github.com/drahnr/cargo-spellcheck", "repository": "https://github.com/drahnr/cargo-spellcheck",
"license_markdown": "[LGPLv2.1](https://github.com/drahnr/cargo-spellcheck/blob/master/LICENSE-LGPL)",
"tag_prefix": "v", "tag_prefix": "v",
"rust_crate": "${package}", "rust_crate": "${package}",
"asset_name": "${package}-v${version}-${rust_target}", "asset_name": "${package}-v${version}-${rust_target}",

View File

@@ -1,5 +1,6 @@
{ {
"repository": "https://github.com/est31/cargo-udeps", "repository": "https://github.com/est31/cargo-udeps",
"license_markdown": "[Apache-2.0 OR MIT](https://github.com/est31/cargo-udeps/blob/HEAD/LICENSE)",
"tag_prefix": "v", "tag_prefix": "v",
"rust_crate": "${package}", "rust_crate": "${package}",
"asset_name": "${package}-v${version}-${rust_target}.tar.gz", "asset_name": "${package}-v${version}-${rust_target}.tar.gz",

View File

@@ -0,0 +1,20 @@
{
"repository": "https://github.com/rust-cross/cargo-zigbuild",
"tag_prefix": "v",
"rust_crate": "${package}",
"asset_name": "${package}-v${version}.${rust_target}.tar.gz",
"version_range": ">= 0.18.4",
"platform": {
"x86_64_linux_musl": {},
"x86_64_windows": {
"asset_name": "${package}-v${version}.windows-x64.zip"
},
"aarch64_linux_musl": {},
"aarch64_macos": {
"asset_name": "${package}-v${version}.apple-darwin.tar.gz"
},
"aarch64_windows": {
"asset_name": "${package}-v${version}.windows-arm64.zip"
}
}
}

View File

@@ -0,0 +1,22 @@
{
"repository": "https://github.com/DeepSourceCorp/cli",
"tag_prefix": "v",
"version_range": ">= 0.8.6",
"platform": {
"x86_64_linux_gnu": {
"asset_name": "${package}_${version}_linux_amd64.tar.gz"
},
"x86_64_macos": {
"asset_name": "${package}_${version}_darwin_amd64.tar.gz"
},
"x86_64_windows": {
"asset_name": "${package}_${version}_windows_amd64.tar.gz"
},
"aarch64_linux_gnu": {
"asset_name": "${package}_${version}_linux_arm64.tar.gz"
},
"aarch64_macos": {
"asset_name": "${package}_${version}_darwin_arm64.tar.gz"
}
}
}

View File

@@ -0,0 +1,22 @@
{
"repository": "https://github.com/earthly/earthly",
"tag_prefix": "v",
"version_range": ">= 0.8.13",
"platform": {
"x86_64_linux_gnu": {
"asset_name": "${package}-linux-amd64"
},
"x86_64_macos": {
"asset_name": "${package}-darwin-amd64"
},
"x86_64_windows": {
"asset_name": "${package}-windows-amd64.exe"
},
"aarch64_linux_gnu": {
"asset_name": "${package}-linux-arm64"
},
"aarch64_macos": {
"asset_name": "${package}-darwin-arm64"
}
}
}

View File

@@ -1,5 +1,6 @@
{ {
"repository": "https://github.com/mozilla/grcov", "repository": "https://github.com/mozilla/grcov",
"license_markdown": "[MPL-2.0](https://github.com/mozilla/grcov/blob/HEAD/LICENSE-MPL-2.0)",
"tag_prefix": "v", "tag_prefix": "v",
"rust_crate": "${package}", "rust_crate": "${package}",
"asset_name": "${package}-${rust_target}.tar.bz2", "asset_name": "${package}-${rust_target}.tar.bz2",

View File

@@ -0,0 +1,16 @@
{
"repository": "https://github.com/01mf02/jaq",
"tag_prefix": "v",
"rust_crate": "${package}",
"asset_name": "${package}-v${version}-${rust_target}",
"version_range": ">= 1.4.0",
"platform": {
"x86_64_macos": {},
"x86_64_windows": {
"asset_name": "${package}-v${version}-${rust_target}.exe"
},
"x86_64_linux_musl": {},
"aarch64_macos": {},
"aarch64_linux_gnu": {}
}
}

View File

@@ -4,22 +4,22 @@
"version_range": ">= 1.0.0", "version_range": ">= 1.0.0",
"platform": { "platform": {
"x86_64_linux_musl": { "x86_64_linux_musl": {
"asset_name": "${package}_${version}_linux_amd64" "asset_name": "${package}_linux_amd64"
}, },
"x86_64_macos": { "x86_64_macos": {
"asset_name": "${package}_${version}_darwin_amd64" "asset_name": "${package}_darwin_amd64"
}, },
"x86_64_windows": { "x86_64_windows": {
"asset_name": "${package}_${version}_windows_amd64${exe}" "asset_name": "${package}_windows_amd64${exe}"
}, },
"aarch64_linux_musl": { "aarch64_linux_musl": {
"asset_name": "${package}_${version}_linux_arm64" "asset_name": "${package}_linux_arm64"
}, },
"aarch64_macos": { "aarch64_macos": {
"asset_name": "${package}_${version}_darwin_arm64" "asset_name": "${package}_darwin_arm64"
}, },
"aarch64_windows": { "aarch64_windows": {
"asset_name": "${package}_${version}_windows_arm64${exe}" "asset_name": "${package}_windows_arm64${exe}"
} }
} }
} }

View File

@@ -1,5 +1,6 @@
{ {
"repository": "https://github.com/protocolbuffers/protobuf", "repository": "https://github.com/protocolbuffers/protobuf",
"license_markdown": "[BSD-3-Clause](https://github.com/protocolbuffers/protobuf/blob/HEAD/LICENSE)",
"tag_prefix": "v", "tag_prefix": "v",
"default_major_version": "3", "default_major_version": "3",
"platform": { "platform": {

View File

@@ -0,0 +1,31 @@
{
"repository": "https://github.com/rclone/rclone",
"tag_prefix": "v",
"version_range": ">= 1.66.0",
"platform": {
"x86_64_linux_musl": {
"asset_name": "${package}-v${version}-linux-amd64.zip",
"bin": "${package}-v${version}-linux-amd64/${package}"
},
"x86_64_macos": {
"asset_name": "${package}-v${version}-osx-amd64.zip",
"bin": "${package}-v${version}-osx-amd64/${package}"
},
"x86_64_windows": {
"asset_name": "${package}-v${version}-windows-amd64.zip",
"bin": "${package}-v${version}-windows-amd64/${package}${exe}"
},
"aarch64_linux_musl": {
"asset_name": "${package}-v${version}-linux-arm64.zip",
"bin": "${package}-v${version}-linux-arm64/${package}"
},
"aarch64_macos": {
"asset_name": "${package}-v${version}-osx-arm64.zip",
"bin": "${package}-v${version}-osx-arm64/${package}"
},
"aarch64_windows": {
"asset_name": "${package}-v${version}-windows-arm64.zip",
"bin": "${package}-v${version}-windows-arm64/${package}${exe}"
}
}
}

View File

@@ -1,5 +1,6 @@
{ {
"repository": "https://github.com/koalaman/shellcheck", "repository": "https://github.com/koalaman/shellcheck",
"website": "https://www.shellcheck.net",
"tag_prefix": "v", "tag_prefix": "v",
"bin": "${package}-v${version}/${package}${exe}", "bin": "${package}-v${version}/${package}${exe}",
"platform": { "platform": {

View File

@@ -0,0 +1,13 @@
{
"repository": "https://github.com/shenek/wait-for-them",
"license_markdown": "[GPL-3.0](https://github.com/shenek/wait-for-them/blob/v0.4.0/Cargo.toml#L7)",
"tag_prefix": "v",
"rust_crate": "${package}",
"asset_name": "${package}-${rust_target_os}${exe}",
"version_range": ">= 0.4.0",
"platform": {
"x86_64_linux_gnu": {},
"x86_64_windows": {},
"aarch64_macos": {}
}
}

View File

@@ -1,5 +1,6 @@
{ {
"repository": "https://github.com/rust-mobile/xbuild", "repository": "https://github.com/rust-mobile/xbuild",
"license_markdown": "[Apache-2.0 OR MIT](https://github.com/rust-mobile/xbuild/blob/v0.2.0/xbuild/Cargo.toml#L7)",
"tag_prefix": "v", "tag_prefix": "v",
"rust_crate": "${package}", "rust_crate": "${package}",
"asset_name": "${package}-${rust_target_os}-x64${exe}", "asset_name": "${package}-${rust_target_os}-x64${exe}",

View File

@@ -0,0 +1,17 @@
{
"repository": "https://github.com/ducaale/xh",
"tag_prefix": "v",
"rust_crate": "${package}",
"asset_name": "${package}-v${version}-${rust_target}.tar.gz",
"bin": "${package}-v${version}-${rust_target}/${package}${exe}",
"version_range": ">= 0.22.0",
"platform": {
"x86_64_macos": {},
"x86_64_windows": {
"asset_name": "${package}-v${version}-${rust_target}.zip"
},
"x86_64_linux_musl": {},
"aarch64_macos": {},
"aarch64_linux_musl": {}
}
}

388
tools/codegen/src/lib.rs Normal file
View File

@@ -0,0 +1,388 @@
// SPDX-License-Identifier: Apache-2.0 OR MIT
use std::{
cmp::{self, Reverse},
collections::BTreeMap,
env, fmt,
path::{Path, PathBuf},
slice,
str::FromStr,
};
use anyhow::Result;
use serde::{
de::{self, Deserialize, Deserializer},
ser::{Serialize, Serializer},
};
use serde_derive::{Deserialize, Serialize};
#[must_use]
pub fn workspace_root() -> PathBuf {
let mut dir = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
dir.pop(); // codegen
dir.pop(); // tools
dir
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct Version {
pub major: Option<u64>,
pub minor: Option<u64>,
pub patch: Option<u64>,
pub pre: semver::Prerelease,
pub build: semver::BuildMetadata,
}
impl Version {
#[must_use]
pub fn omitted(major: u64, minor: Option<u64>) -> Self {
Self {
major: Some(major),
minor,
patch: None,
pre: semver::Prerelease::default(),
build: semver::BuildMetadata::default(),
}
}
#[must_use]
pub fn latest() -> Self {
Self {
major: None,
minor: None,
patch: None,
pre: semver::Prerelease::default(),
build: semver::BuildMetadata::default(),
}
}
#[must_use]
pub fn to_semver(&self) -> Option<semver::Version> {
Some(semver::Version {
major: self.major?,
minor: self.minor?,
patch: self.patch?,
pre: self.pre.clone(),
build: self.build.clone(),
})
}
}
impl From<semver::Version> for Version {
fn from(v: semver::Version) -> Self {
Self {
major: Some(v.major),
minor: Some(v.minor),
patch: Some(v.patch),
pre: v.pre,
build: v.build,
}
}
}
impl PartialOrd for Version {
fn partial_cmp(&self, other: &Self) -> Option<cmp::Ordering> {
Some(self.cmp(other))
}
}
impl Ord for Version {
fn cmp(&self, other: &Self) -> cmp::Ordering {
pub(crate) fn convert(v: &Version) -> semver::Version {
semver::Version {
major: v.major.unwrap_or(u64::MAX),
minor: v.minor.unwrap_or(u64::MAX),
patch: v.patch.unwrap_or(u64::MAX),
pre: v.pre.clone(),
build: v.build.clone(),
}
}
convert(self).cmp(&convert(other))
}
}
impl fmt::Display for Version {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let Some(major) = self.major else {
f.write_str("latest")?;
return Ok(());
};
f.write_str(&major.to_string())?;
let Some(minor) = self.minor else {
return Ok(());
};
f.write_str(".")?;
f.write_str(&minor.to_string())?;
let Some(patch) = self.patch else {
return Ok(());
};
f.write_str(".")?;
f.write_str(&patch.to_string())?;
if !self.pre.is_empty() {
f.write_str("-")?;
f.write_str(&self.pre)?;
}
if !self.build.is_empty() {
f.write_str("+")?;
f.write_str(&self.build)?;
}
Ok(())
}
}
impl FromStr for Version {
type Err = semver::Error;
fn from_str(s: &str) -> Result<Self, Self::Err> {
if s == "latest" {
return Ok(Self::latest());
}
match s.parse::<semver::Version>() {
Ok(v) => Ok(v.into()),
Err(e) => match s.parse::<semver::Comparator>() {
Ok(v) => Ok(Self {
major: Some(v.major),
minor: v.minor,
patch: v.patch,
pre: semver::Prerelease::default(),
build: semver::BuildMetadata::default(),
}),
Err(_e) => Err(e),
},
}
}
}
impl Serialize for Version {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
String::serialize(&self.to_string(), serializer)
}
}
impl<'de> Deserialize<'de> for Version {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: Deserializer<'de>,
{
String::deserialize(deserializer)?.parse().map_err(de::Error::custom)
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct Manifests {
pub rust_crate: Option<String>,
pub template: Option<ManifestTemplate>,
/// Markdown for the licenses.
pub license_markdown: String,
#[serde(flatten)]
pub map: BTreeMap<Reverse<Version>, ManifestRef>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
pub enum ManifestRef {
Ref { version: Version },
Real(Manifest),
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Manifest {
#[serde(skip_serializing_if = "Option::is_none")]
pub previous_stable_version: Option<Version>,
#[serde(flatten)]
pub download_info: BTreeMap<HostPlatform, ManifestDownloadInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ManifestDownloadInfo {
#[serde(skip_serializing_if = "Option::is_none")]
pub url: Option<String>,
pub checksum: String,
/// Path to binaries in archive. Default to `${tool}${exe}`.
#[serde(skip_serializing_if = "Option::is_none")]
pub bin: Option<StringOrArray>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ManifestTemplate {
#[serde(flatten)]
pub download_info: BTreeMap<HostPlatform, ManifestTemplateDownloadInfo>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ManifestTemplateDownloadInfo {
pub url: String,
/// Path to binaries in archive. Default to `${tool}${exe}`.
#[serde(skip_serializing_if = "Option::is_none")]
pub bin: Option<StringOrArray>,
}
#[derive(Debug, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct BaseManifest {
/// Link to the GitHub repository.
pub repository: String,
/// Alternative link for the project. Automatically detected if possible.
pub website: Option<String>,
/// Markdown syntax for links to licenses. Automatically detected if possible.
pub license_markdown: Option<String>,
/// Prefix of release tag.
pub tag_prefix: String,
/// Crate name, if this is Rust crate.
pub rust_crate: Option<String>,
pub default_major_version: Option<String>,
/// Asset name patterns.
pub asset_name: Option<StringOrArray>,
/// Path to binaries in archive. Default to `${tool}${exe}`.
pub bin: Option<StringOrArray>,
pub signing: Option<Signing>,
#[serde(default)]
pub broken: Vec<semver::Version>,
pub version_range: Option<String>,
/// Use glibc build if host_env is gnu.
#[serde(default)]
pub prefer_linux_gnu: bool,
/// Check that the version is yanked not only when updating the manifest,
/// but also when running the action.
#[serde(default)]
pub immediate_yank_reflection: bool,
pub platform: BTreeMap<HostPlatform, BaseManifestPlatformInfo>,
}
impl BaseManifest {
/// Validate the manifest.
// The panic is an assert
#[allow(clippy::missing_panics_doc)]
pub fn validate(&self) {
for bin in self.bin.iter().chain(self.platform.values().flat_map(|m| &m.bin)) {
assert!(!bin.as_slice().is_empty());
for bin in bin.as_slice() {
let file_name = Path::new(bin).file_name().unwrap().to_str().unwrap();
if !self.repository.ends_with("/xbuild") {
assert!(
!(file_name.contains("${version") || file_name.contains("${rust")),
"{bin}"
);
}
}
}
}
}
#[derive(Debug, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct Signing {
pub kind: SigningKind,
}
#[derive(Debug, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "kebab-case")]
#[serde(deny_unknown_fields)]
pub enum SigningKind {
/// algorithm: minisign
/// public key: package.metadata.binstall.signing.pubkey at Cargo.toml
/// <https://github.com/cargo-bins/cargo-binstall/blob/HEAD/SIGNING.md>
MinisignBinstall,
}
#[derive(Debug, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct BaseManifestPlatformInfo {
/// Asset name patterns. Default to the value at `BaseManifest::asset_name`.
pub asset_name: Option<StringOrArray>,
/// Path to binaries in archive. Default to the value at `BaseManifest::bin`.
pub bin: Option<StringOrArray>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum StringOrArray {
String(String),
Array(Vec<String>),
}
impl StringOrArray {
#[must_use]
pub fn as_slice(&self) -> &[String] {
match self {
Self::String(s) => slice::from_ref(s),
Self::Array(v) => v,
}
}
#[must_use]
pub fn map(&self, mut f: impl FnMut(&String) -> String) -> Self {
match self {
Self::String(s) => Self::String(f(s)),
Self::Array(v) => Self::Array(v.iter().map(f).collect()),
}
}
}
/// GitHub Actions Runner supports Linux (x86_64, aarch64, arm), Windows (x86_64, aarch64),
/// and macOS (x86_64, aarch64).
/// https://github.com/actions/runner/blob/v2.315.0/.github/workflows/build.yml#L21
/// https://docs.github.com/en/actions/hosting-your-own-runners/about-self-hosted-runners#supported-architectures-and-operating-systems-for-self-hosted-runners
///
/// Note:
/// - Static-linked binaries compiled for linux-musl will also work on linux-gnu systems and are
/// usually preferred over linux-gnu binaries because they can avoid glibc version issues.
/// (rustc enables statically linking for linux-musl by default, except for mips.)
/// - Binaries compiled for x86_64 macOS will usually also work on aarch64 macOS.
/// - Binaries compiled for x86_64 Windows will usually also work on aarch64 Windows 11+.
/// - Ignore arm for now, as we need to consider the version and whether hard-float is supported.
/// https://github.com/rust-lang/rustup/pull/593
/// https://github.com/cross-rs/cross/pull/1018
/// Does it seem only armv7l+ is supported?
/// https://github.com/actions/runner/blob/v2.315.0/src/Misc/externals.sh#L189
/// https://github.com/actions/runner/issues/688
#[allow(non_camel_case_types)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)]
pub enum HostPlatform {
x86_64_linux_gnu,
x86_64_linux_musl,
x86_64_macos,
x86_64_windows,
aarch64_linux_gnu,
aarch64_linux_musl,
aarch64_macos,
aarch64_windows,
}
impl HostPlatform {
#[must_use]
pub fn rust_target(self) -> &'static str {
match self {
Self::x86_64_linux_gnu => "x86_64-unknown-linux-gnu",
Self::x86_64_linux_musl => "x86_64-unknown-linux-musl",
Self::x86_64_macos => "x86_64-apple-darwin",
Self::x86_64_windows => "x86_64-pc-windows-msvc",
Self::aarch64_linux_gnu => "aarch64-unknown-linux-gnu",
Self::aarch64_linux_musl => "aarch64-unknown-linux-musl",
Self::aarch64_macos => "aarch64-apple-darwin",
Self::aarch64_windows => "aarch64-pc-windows-msvc",
}
}
#[must_use]
pub fn rust_target_arch(self) -> &'static str {
match self {
Self::aarch64_linux_gnu
| Self::aarch64_linux_musl
| Self::aarch64_macos
| Self::aarch64_windows => "aarch64",
Self::x86_64_linux_gnu
| Self::x86_64_linux_musl
| Self::x86_64_macos
| Self::x86_64_windows => "x86_64",
}
}
#[must_use]
pub fn rust_target_os(self) -> &'static str {
match self {
Self::aarch64_linux_gnu
| Self::aarch64_linux_musl
| Self::x86_64_linux_gnu
| Self::x86_64_linux_musl => "linux",
Self::aarch64_macos | Self::x86_64_macos => "macos",
Self::aarch64_windows | Self::x86_64_windows => "windows",
}
}
#[must_use]
pub fn exe_suffix(self) -> &'static str {
match self {
Self::x86_64_windows | Self::aarch64_windows => ".exe",
_ => "",
}
}
}

View File

@@ -1,26 +1,23 @@
// SPDX-License-Identifier: Apache-2.0 OR MIT // SPDX-License-Identifier: Apache-2.0 OR MIT
use std::{ use std::{
cmp::{self, Reverse}, cmp::Reverse,
collections::{BTreeMap, BTreeSet}, collections::{BTreeMap, BTreeSet},
env, env,
ffi::OsStr, ffi::OsStr,
fmt,
io::Read, io::Read,
path::{Path, PathBuf}, path::Path,
slice,
str::FromStr,
time::Duration, time::Duration,
}; };
use anyhow::{bail, Context as _, Result}; use anyhow::{bail, Context as _, Result};
use fs_err as fs; use fs_err as fs;
use serde::{ use install_action_internal_codegen::{
de::{self, Deserialize, Deserializer}, workspace_root, BaseManifest, HostPlatform, Manifest, ManifestDownloadInfo, ManifestRef,
ser::{Serialize, Serializer}, ManifestTemplate, ManifestTemplateDownloadInfo, Manifests, Signing, SigningKind, Version,
}; };
use serde_derive::{Deserialize, Serialize};
use sha2::{Digest, Sha256}; use sha2::{Digest, Sha256};
use spdx::expression::{ExprNode, ExpressionReq, Operator};
fn main() -> Result<()> { fn main() -> Result<()> {
let args: Vec<_> = env::args().skip(1).collect(); let args: Vec<_> = env::args().skip(1).collect();
@@ -39,6 +36,8 @@ fn main() -> Result<()> {
fs::create_dir_all(manifest_path.parent().unwrap())?; fs::create_dir_all(manifest_path.parent().unwrap())?;
fs::create_dir_all(download_cache_dir)?; fs::create_dir_all(download_cache_dir)?;
eprintln!("download cache: {}", download_cache_dir.display());
let mut base_info: BaseManifest = serde_json::from_slice(&fs::read( let mut base_info: BaseManifest = serde_json::from_slice(&fs::read(
workspace_root.join("tools/codegen/base").join(format!("{package}.json")), workspace_root.join("tools/codegen/base").join(format!("{package}.json")),
)?)?; )?)?;
@@ -46,7 +45,12 @@ fn main() -> Result<()> {
let repo = base_info let repo = base_info
.repository .repository
.strip_prefix("https://github.com/") .strip_prefix("https://github.com/")
.context("repository must be starts with https://github.com/")?; .context("repository must start with https://github.com/")?;
eprintln!("downloading metadata from https://github.com/{repo}");
let repo_info: github::RepoMetadata =
download_github(&format!("https://api.github.com/repos/{repo}"))?.into_json()?;
eprintln!("downloading releases of https://github.com/{repo} from https://api.github.com/repos/{repo}/releases"); eprintln!("downloading releases of https://github.com/{repo} from https://api.github.com/repos/{repo}/releases");
let mut releases: github::Releases = vec![]; let mut releases: github::Releases = vec![];
@@ -82,6 +86,7 @@ fn main() -> Result<()> {
.collect(); .collect();
let mut crates_io_info = None; let mut crates_io_info = None;
let mut crates_io_version_detail = None;
base_info.rust_crate = base_info base_info.rust_crate = base_info
.rust_crate .rust_crate
.as_ref() .as_ref()
@@ -89,10 +94,29 @@ fn main() -> Result<()> {
.transpose()?; .transpose()?;
if let Some(crate_name) = &base_info.rust_crate { if let Some(crate_name) = &base_info.rust_crate {
eprintln!("downloading crate info from https://crates.io/api/v1/crates/{crate_name}"); eprintln!("downloading crate info from https://crates.io/api/v1/crates/{crate_name}");
crates_io_info = Some( let info = download(&format!("https://crates.io/api/v1/crates/{crate_name}"))?
download(&format!("https://crates.io/api/v1/crates/{crate_name}"))? .into_json::<crates_io::Crate>()?;
.into_json::<crates_io::Crate>()?, let latest_version = &info.versions[0].num;
crates_io_version_detail = Some(
download(&format!("https://crates.io/api/v1/crates/{crate_name}/{latest_version}"))?
.into_json::<crates_io::VersionMetadata>()?
.version,
); );
if let Some(crate_repository) = info.crate_.repository.clone() {
// cargo-dinghy is fixed at https://github.com/sonos/dinghy/pull/231, but not yet released
if crate_name != "cargo-dinghy"
&& !crate_repository
.to_lowercase()
.starts_with(&base_info.repository.to_lowercase())
{
panic!("repository {crate_repository} from crates.io differs from base manifest");
}
} else if crate_name != "zola" {
panic!("crate metadata does not include a repository");
}
crates_io_info = Some(info);
} }
let mut manifests: Manifests = Manifests::default(); let mut manifests: Manifests = Manifests::default();
@@ -130,6 +154,44 @@ fn main() -> Result<()> {
Err(e) => eprintln!("failed to load old manifest: {e}"), Err(e) => eprintln!("failed to load old manifest: {e}"),
} }
} }
// Check website
if let Some(website) = base_info.website {
if website.is_empty() || website == base_info.repository {
panic!("Please do not put the repository in website, or set website to an empty value");
}
}
// Populate license_markdown
if let Some(license_markdown) = base_info.license_markdown {
if license_markdown.is_empty() {
panic!("license_markdown can not be an empty value");
}
manifests.license_markdown = license_markdown;
} else if let Some(detail) = crates_io_version_detail {
if let Some(license) = detail.license {
eprintln!("Trying to using license '{license}' from crates.io ...");
if let Some(license_markdown) =
get_license_markdown(&license, &repo.to_string(), &repo_info.default_branch)
{
manifests.license_markdown = license_markdown;
}
}
} else if let Some(license) = repo_info.license {
if let Some(license) = license.spdx_id {
eprintln!("Trying to using license '{license}' from github.com ...");
if let Some(license_markdown) =
get_license_markdown(&license, &repo.to_string(), &repo_info.default_branch)
{
manifests.license_markdown = license_markdown;
}
}
}
if manifests.license_markdown.is_empty() {
panic!("Unable to determine license_markdown; set manually")
}
let version_req: Option<semver::VersionReq> = match args.get(1) { let version_req: Option<semver::VersionReq> = match args.get(1) {
_ if latest_only => { _ if latest_only => {
let req = format!("={}", releases.first_key_value().unwrap().0 .0).parse()?; let req = format!("={}", releases.first_key_value().unwrap().0 .0).parse()?;
@@ -343,6 +405,7 @@ fn main() -> Result<()> {
} }
// compact manifest // compact manifest
// TODO: do this before download binaries // TODO: do this before download binaries
if !base_info.prefer_linux_gnu {
if download_info.contains_key(&HostPlatform::x86_64_linux_gnu) if download_info.contains_key(&HostPlatform::x86_64_linux_gnu)
&& download_info.contains_key(&HostPlatform::x86_64_linux_musl) && download_info.contains_key(&HostPlatform::x86_64_linux_musl)
{ {
@@ -353,6 +416,7 @@ fn main() -> Result<()> {
{ {
download_info.remove(&HostPlatform::aarch64_linux_gnu); download_info.remove(&HostPlatform::aarch64_linux_gnu);
} }
}
if download_info.contains_key(&HostPlatform::x86_64_macos) if download_info.contains_key(&HostPlatform::x86_64_macos)
&& download_info.contains_key(&HostPlatform::aarch64_macos) && download_info.contains_key(&HostPlatform::aarch64_macos)
&& download_info[&HostPlatform::x86_64_macos].url && download_info[&HostPlatform::x86_64_macos].url
@@ -365,7 +429,22 @@ fn main() -> Result<()> {
if semver_version.pre.is_empty() { if semver_version.pre.is_empty() {
semver_versions.insert(semver_version.clone()); semver_versions.insert(semver_version.clone());
} }
manifests.map.insert(reverse_semver, ManifestRef::Real(Manifest { download_info })); manifests.map.insert(
reverse_semver,
ManifestRef::Real(Manifest { previous_stable_version: None, download_info }),
);
}
if base_info.immediate_yank_reflection {
let mut prev: Option<&Version> = None;
for (Reverse(v), m) in manifests.map.iter_mut().rev() {
let ManifestRef::Real(m) = m else { continue };
if base_info.rust_crate.is_some() {
m.previous_stable_version = prev.cloned();
} else {
m.previous_stable_version = None;
}
prev = Some(v);
}
} }
if has_build_metadata { if has_build_metadata {
eprintln!( eprintln!(
@@ -432,6 +511,7 @@ fn main() -> Result<()> {
if latest_manifest.download_info.contains_key(&p) { if latest_manifest.download_info.contains_key(&p) {
continue; continue;
} }
if !base_info.prefer_linux_gnu {
if p == HostPlatform::x86_64_linux_gnu if p == HostPlatform::x86_64_linux_gnu
&& latest_manifest.download_info.contains_key(&HostPlatform::x86_64_linux_musl) && latest_manifest.download_info.contains_key(&HostPlatform::x86_64_linux_musl)
{ {
@@ -442,6 +522,7 @@ fn main() -> Result<()> {
{ {
continue; continue;
} }
}
bail!( bail!(
"platform list in base manifest for {package} contains {p:?}, \ "platform list in base manifest for {package} contains {p:?}, \
but latest release ({latest_version}) doesn't contain it; \ but latest release ({latest_version}) doesn't contain it; \
@@ -488,13 +569,6 @@ fn main() -> Result<()> {
Ok(()) Ok(())
} }
fn workspace_root() -> PathBuf {
let mut dir = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
dir.pop(); // codegen
dir.pop(); // tools
dir
}
fn replace_vars( fn replace_vars(
s: &str, s: &str,
package: &str, package: &str,
@@ -561,6 +635,35 @@ fn download_github(url: &str) -> Result<ureq::Response> {
Err(last_error.unwrap().into()) Err(last_error.unwrap().into())
} }
#[allow(clippy::missing_panics_doc)]
pub fn github_head(url: &str) -> Result<()> {
eprintln!("fetching head of {url} ..");
let mut token = env::var("GITHUB_TOKEN").ok().filter(|v| !v.is_empty());
let mut retry = 0;
let max_retry = 2;
let mut last_error;
loop {
let mut req = ureq::head(url);
if let Some(token) = &token {
req = req.set("Authorization", token);
}
match req.call() {
Ok(_) => return Ok(()),
Err(e) => last_error = Some(e),
}
if retry == max_retry / 2 && token.is_some() {
token = None;
}
retry += 1;
if retry > max_retry {
break;
}
eprintln!("head of {url} failed; retrying after {}s ({retry}/{max_retry})", retry * 2);
std::thread::sleep(Duration::from_secs(retry * 2));
}
Err(last_error.unwrap().into())
}
/// Download without using GITHUB_TOKEN. /// Download without using GITHUB_TOKEN.
#[allow(clippy::missing_panics_doc)] #[allow(clippy::missing_panics_doc)]
pub fn download(url: &str) -> Result<ureq::Response> { pub fn download(url: &str) -> Result<ureq::Response> {
@@ -583,345 +686,132 @@ pub fn download(url: &str) -> Result<ureq::Response> {
Err(last_error.unwrap().into()) Err(last_error.unwrap().into())
} }
#[derive(Debug, Clone, PartialEq, Eq)] #[must_use]
struct Version { fn create_github_raw_link(repository: &String, branch: &String, filename: &String) -> String {
major: Option<u64>, format!("https://raw.githubusercontent.com/{repository}/{branch}/{filename}")
minor: Option<u64>,
patch: Option<u64>,
pre: semver::Prerelease,
build: semver::BuildMetadata,
} }
impl Version { #[must_use]
fn omitted(major: u64, minor: Option<u64>) -> Self { fn create_github_link(repository: &String, branch: &String, filename: &String) -> String {
Self { format!("https://github.com/{repository}/blob/{branch}/{filename}")
major: Some(major),
minor,
patch: None,
pre: semver::Prerelease::default(),
build: semver::BuildMetadata::default(),
} }
} #[must_use]
fn latest() -> Self { fn get_license_markdown(spdx_expr: &str, repo: &String, default_branch: &String) -> Option<String> {
Self { // TODO: use https://docs.rs/spdx/latest/spdx/expression/struct.Expression.html#method.canonicalize ?
major: None, let expr = spdx::Expression::parse_mode(spdx_expr, spdx::ParseMode::LAX).unwrap();
minor: None,
patch: None, let mut op = None;
pre: semver::Prerelease::default(), let mut license_ids: Vec<(&spdx::LicenseId, Option<&spdx::ExceptionId>)> = vec![];
build: semver::BuildMetadata::default(),
} for node in expr.iter() {
} match node {
fn to_semver(&self) -> Option<semver::Version> { ExprNode::Req(ExpressionReq {
Some(semver::Version { req:
major: self.major?, spdx::LicenseReq {
minor: self.minor?, license: spdx::LicenseItem::Spdx { id, or_later },
patch: self.patch?, exception,
pre: self.pre.clone(), ..
build: self.build.clone(),
})
}
}
impl From<semver::Version> for Version {
fn from(v: semver::Version) -> Self {
Self {
major: Some(v.major),
minor: Some(v.minor),
patch: Some(v.patch),
pre: v.pre,
build: v.build,
}
}
}
impl PartialOrd for Version {
fn partial_cmp(&self, other: &Self) -> Option<cmp::Ordering> {
Some(self.cmp(other))
}
}
impl Ord for Version {
fn cmp(&self, other: &Self) -> cmp::Ordering {
fn convert(v: &Version) -> semver::Version {
semver::Version {
major: v.major.unwrap_or(u64::MAX),
minor: v.minor.unwrap_or(u64::MAX),
patch: v.patch.unwrap_or(u64::MAX),
pre: v.pre.clone(),
build: v.build.clone(),
}
}
convert(self).cmp(&convert(other))
}
}
impl fmt::Display for Version {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let Some(major) = self.major else {
f.write_str("latest")?;
return Ok(());
};
f.write_str(&major.to_string())?;
let Some(minor) = self.minor else {
return Ok(());
};
f.write_str(".")?;
f.write_str(&minor.to_string())?;
let Some(patch) = self.patch else {
return Ok(());
};
f.write_str(".")?;
f.write_str(&patch.to_string())?;
if !self.pre.is_empty() {
f.write_str("-")?;
f.write_str(&self.pre)?;
}
if !self.build.is_empty() {
f.write_str("+")?;
f.write_str(&self.build)?;
}
Ok(())
}
}
impl FromStr for Version {
type Err = semver::Error;
fn from_str(s: &str) -> Result<Self, Self::Err> {
if s == "latest" {
return Ok(Self::latest());
}
match s.parse::<semver::Version>() {
Ok(v) => Ok(v.into()),
Err(e) => match s.parse::<semver::Comparator>() {
Ok(v) => Ok(Self {
major: Some(v.major),
minor: v.minor,
patch: v.patch,
pre: semver::Prerelease::default(),
build: semver::BuildMetadata::default(),
}),
Err(_e) => Err(e),
}, },
..
}) => {
if *or_later {
panic!("need to handle or_later");
}
if let Some(exception_id) = exception {
license_ids.push((id, Some(exception_id)));
} else {
license_ids.push((id, None));
} }
} }
ExprNode::Op(current_op) => {
if op.is_some() && op != Some(current_op) {
panic!("SPDX too complex");
} }
impl Serialize for Version { op = Some(current_op);
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
String::serialize(&self.to_string(), serializer)
} }
} ExprNode::Req(_) => {}
impl<'de> Deserialize<'de> for Version {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: Deserializer<'de>,
{
String::deserialize(deserializer)?.parse().map_err(de::Error::custom)
} }
} }
#[derive(Debug, Clone, Default, Serialize, Deserialize)] match license_ids.len() {
struct Manifests { 0 => panic!("No licenses"),
rust_crate: Option<String>, 1 => {
template: Option<ManifestTemplate>, let (license_id, exception_id) = license_ids.first().unwrap();
#[serde(flatten)] let license_name = if let Some(exception_id) = exception_id {
map: BTreeMap<Reverse<Version>, ManifestRef>, format!("{} WITH {}", license_id.name, exception_id.name)
} else {
license_id.name.to_string()
};
let name = license_id.name.split('-').next().unwrap().to_ascii_uppercase();
for filename in [
"LICENSE".to_string(),
format!("LICENSE-{name}"),
"LICENSE.md".to_string(),
"COPYING".to_string(),
] {
let url = create_github_raw_link(repo, default_branch, &filename);
if github_head(&url).is_ok() {
let url = create_github_link(repo, default_branch, &filename);
return Some(format!("[{license_name}]({url})"));
} }
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(untagged)]
enum ManifestRef {
Ref { version: Version },
Real(Manifest),
} }
#[derive(Debug, Clone, Serialize, Deserialize)]
struct Manifest {
#[serde(flatten)]
download_info: BTreeMap<HostPlatform, ManifestDownloadInfo>,
} }
len => {
#[derive(Debug, Clone, Serialize, Deserialize)] let mut license_markdowns: Vec<String> = vec![];
struct ManifestDownloadInfo { for (license_id, exception_id) in &license_ids {
#[serde(skip_serializing_if = "Option::is_none")] let name = license_id.name.split('-').next().unwrap().to_ascii_uppercase();
url: Option<String>, let filename = format!("LICENSE-{name}");
checksum: String, let url = create_github_raw_link(repo, default_branch, &filename);
/// Path to binaries in archive. Default to `${tool}${exe}`. let license_name = if let Some(exception_id) = exception_id {
#[serde(skip_serializing_if = "Option::is_none")] format!("{} WITH {}", license_id.name, exception_id.name)
bin: Option<StringOrArray>, } else {
license_id.name.to_string()
};
if github_head(&url).is_ok() {
let url = create_github_link(repo, default_branch, &filename);
license_markdowns.push(format!("[{license_name}]({url})"));
} }
#[derive(Debug, Clone, Serialize, Deserialize)]
struct ManifestTemplate {
#[serde(flatten)]
download_info: BTreeMap<HostPlatform, ManifestTemplateDownloadInfo>,
} }
if license_markdowns.is_empty() {
#[derive(Debug, Clone, Serialize, Deserialize)] panic!("Unable to find any license files in the repo for licenses {license_ids:?}");
struct ManifestTemplateDownloadInfo {
url: String,
/// Path to binaries in archive. Default to `${tool}${exe}`.
#[serde(skip_serializing_if = "Option::is_none")]
bin: Option<StringOrArray>,
} }
if license_markdowns.len() != len {
#[derive(Debug, Deserialize)] panic!("Unable to find license files in the repo for all licenses {license_ids:?}; found {license_markdowns:?}");
#[serde(deny_unknown_fields)]
struct BaseManifest {
/// Link to the GitHub repository.
repository: String,
/// Prefix of release tag.
tag_prefix: String,
/// Crate name, if this is Rust crate.
rust_crate: Option<String>,
default_major_version: Option<String>,
/// Asset name patterns.
asset_name: Option<StringOrArray>,
/// Path to binaries in archive. Default to `${tool}${exe}`.
bin: Option<StringOrArray>,
signing: Option<Signing>,
#[serde(default)]
broken: Vec<semver::Version>,
platform: BTreeMap<HostPlatform, BaseManifestPlatformInfo>,
version_range: Option<String>,
} }
impl BaseManifest { match op {
fn validate(&self) { None => panic!("op expected"),
for bin in self.bin.iter().chain(self.platform.values().flat_map(|m| &m.bin)) { Some(Operator::Or) => {
assert!(!bin.as_slice().is_empty()); return Some(license_markdowns.join(" OR "));
for bin in bin.as_slice() { }
let file_name = Path::new(bin).file_name().unwrap().to_str().unwrap(); Some(Operator::And) => {
if !self.repository.ends_with("/xbuild") { return Some(license_markdowns.join(" AND "));
assert!(
!(file_name.contains("${version") || file_name.contains("${rust")),
"{bin}"
);
} }
} }
} }
} }
} None
#[derive(Debug, Deserialize)]
#[serde(deny_unknown_fields)]
struct Signing {
kind: SigningKind,
}
#[derive(Debug, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "kebab-case")]
#[serde(deny_unknown_fields)]
enum SigningKind {
/// algorithm: minisign
/// public key: package.metadata.binstall.signing.pubkey at Cargo.toml
/// <https://github.com/cargo-bins/cargo-binstall/blob/HEAD/SIGNING.md>
MinisignBinstall,
}
#[derive(Debug, Deserialize)]
#[serde(deny_unknown_fields)]
struct BaseManifestPlatformInfo {
/// Asset name patterns. Default to the value at `BaseManifest::asset_name`.
asset_name: Option<StringOrArray>,
/// Path to binaries in archive. Default to the value at `BaseManifest::bin`.
bin: Option<StringOrArray>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
enum StringOrArray {
String(String),
Array(Vec<String>),
}
impl StringOrArray {
fn as_slice(&self) -> &[String] {
match self {
Self::String(s) => slice::from_ref(s),
Self::Array(v) => v,
}
}
fn map(&self, mut f: impl FnMut(&String) -> String) -> Self {
match self {
Self::String(s) => Self::String(f(s)),
Self::Array(v) => Self::Array(v.iter().map(f).collect()),
}
}
}
/// GitHub Actions Runner supports Linux (x86_64, aarch64, arm), Windows (x86_64, aarch64),
/// and macOS (x86_64, aarch64).
/// https://github.com/actions/runner/blob/v2.315.0/.github/workflows/build.yml#L21
/// https://docs.github.com/en/actions/hosting-your-own-runners/about-self-hosted-runners#supported-architectures-and-operating-systems-for-self-hosted-runners
///
/// Note:
/// - Static-linked binaries compiled for linux-musl will also work on linux-gnu systems and are
/// usually preferred over linux-gnu binaries because they can avoid glibc version issues.
/// (rustc enables statically linking for linux-musl by default, except for mips.)
/// - Binaries compiled for x86_64 macOS will usually also work on aarch64 macOS.
/// - Binaries compiled for x86_64 Windows will usually also work on aarch64 Windows 11+.
/// - Ignore arm for now, as we need to consider the version and whether hard-float is supported.
/// https://github.com/rust-lang/rustup/pull/593
/// https://github.com/cross-rs/cross/pull/1018
/// Does it seem only armv7l+ is supported?
/// https://github.com/actions/runner/blob/v2.315.0/src/Misc/externals.sh#L189
/// https://github.com/actions/runner/issues/688
#[allow(non_camel_case_types)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)]
enum HostPlatform {
x86_64_linux_gnu,
x86_64_linux_musl,
x86_64_macos,
x86_64_windows,
aarch64_linux_gnu,
aarch64_linux_musl,
aarch64_macos,
aarch64_windows,
}
impl HostPlatform {
fn rust_target(self) -> &'static str {
match self {
Self::x86_64_linux_gnu => "x86_64-unknown-linux-gnu",
Self::x86_64_linux_musl => "x86_64-unknown-linux-musl",
Self::x86_64_macos => "x86_64-apple-darwin",
Self::x86_64_windows => "x86_64-pc-windows-msvc",
Self::aarch64_linux_gnu => "aarch64-unknown-linux-gnu",
Self::aarch64_linux_musl => "aarch64-unknown-linux-musl",
Self::aarch64_macos => "aarch64-apple-darwin",
Self::aarch64_windows => "aarch64-pc-windows-msvc",
}
}
fn rust_target_arch(self) -> &'static str {
match self {
Self::aarch64_linux_gnu
| Self::aarch64_linux_musl
| Self::aarch64_macos
| Self::aarch64_windows => "aarch64",
Self::x86_64_linux_gnu
| Self::x86_64_linux_musl
| Self::x86_64_macos
| Self::x86_64_windows => "x86_64",
}
}
fn rust_target_os(self) -> &'static str {
match self {
Self::aarch64_linux_gnu
| Self::aarch64_linux_musl
| Self::x86_64_linux_gnu
| Self::x86_64_linux_musl => "linux",
Self::aarch64_macos | Self::x86_64_macos => "macos",
Self::aarch64_windows | Self::x86_64_windows => "windows",
}
}
fn exe_suffix(self) -> &'static str {
match self {
Self::x86_64_windows | Self::aarch64_windows => ".exe",
_ => "",
}
}
} }
mod github { mod github {
use serde_derive::Deserialize; use serde_derive::Deserialize;
// https://api.github.com/repos/<repo>
#[derive(Debug, Deserialize)]
pub(crate) struct RepoMetadata {
#[serde(default)]
#[allow(dead_code)]
pub(crate) homepage: Option<String>,
#[serde(default)]
pub(crate) license: Option<RepoLicense>,
pub(crate) default_branch: String,
}
#[derive(Debug, Deserialize)]
pub(crate) struct RepoLicense {
#[serde(default)]
pub(crate) spdx_id: Option<String>,
}
// https://api.github.com/repos/<repo>/releases // https://api.github.com/repos/<repo>/releases
pub(crate) type Releases = Vec<Release>; pub(crate) type Releases = Vec<Release>;
@@ -948,6 +838,8 @@ mod crates_io {
#[derive(Debug, Deserialize)] #[derive(Debug, Deserialize)]
pub(crate) struct Crate { pub(crate) struct Crate {
pub(crate) versions: Vec<Version>, pub(crate) versions: Vec<Version>,
#[serde(rename = "crate")]
pub(crate) crate_: CrateMetadata,
} }
#[derive(Debug, Deserialize)] #[derive(Debug, Deserialize)]
@@ -957,6 +849,24 @@ mod crates_io {
pub(crate) num: semver::Version, pub(crate) num: semver::Version,
pub(crate) yanked: bool, pub(crate) yanked: bool,
} }
#[derive(Debug, Deserialize)]
pub(crate) struct CrateMetadata {
#[allow(dead_code)]
pub(crate) homepage: Option<String>,
pub(crate) repository: Option<String>,
}
// https://crates.io/api/v1/crates/<crate>/<version>
#[derive(Debug, Deserialize)]
pub(crate) struct VersionMetadata {
pub(crate) version: VersionMetadataDetail,
}
#[derive(Debug, Deserialize)]
pub(crate) struct VersionMetadataDetail {
pub(crate) license: Option<String>,
}
} }
mod cargo_manifest { mod cargo_manifest {

View File

@@ -0,0 +1,218 @@
// SPDX-License-Identifier: Apache-2.0 OR MIT
use std::{env, fmt, io::Write, path::PathBuf};
use anyhow::Result;
use fs_err as fs;
use install_action_internal_codegen::{workspace_root, BaseManifest, Manifests};
const HEADER: &str = "# Tools
This is a list of tools that are installed from manifests managed in this action.
If a tool not included in the list below is specified, this action uses [cargo-binstall] as a fallback.
> If `$CARGO_HOME/bin` is not available, Rust-related binaries will be installed to `$HOME/.cargo/bin`.<br>
> If `$HOME/.cargo/bin` is not available, Rust-related binaries will be installed to `/usr/local/bin`.<br>
> If `/usr/local/bin` is not available, binaries will be installed to `$HOME/.install-action/bin`.<br>
| Name | Where binaries will be installed | Where will it be installed from | Supported platform | License |
| ---- | -------------------------------- | ------------------------------- | ------------------ | ------- |
";
const FOOTER: &str = "
[cargo-binstall]: https://github.com/cargo-bins/cargo-binstall
";
fn main() -> Result<()> {
let args: Vec<_> = env::args().skip(1).collect();
if !args.is_empty() || args.iter().any(|arg| arg.starts_with('-')) {
println!(
"USAGE: cargo run --manifest-path tools/codegen/Cargo.toml --bin generate-tools-markdown --release"
);
std::process::exit(1);
}
let workspace_root = workspace_root();
let mut manifest_dir = workspace_root.clone();
manifest_dir.push("manifests");
let mut base_info_dir = workspace_root.clone();
base_info_dir.push("tools");
base_info_dir.push("codegen");
base_info_dir.push("base");
let mut paths: Vec<_> =
fs::read_dir(manifest_dir.clone()).unwrap().map(|r| r.unwrap()).collect();
paths.sort_by_key(fs_err::DirEntry::path);
let mut tools = vec![MarkdownEntry {
name: "valgrind".to_string(),
alias: None,
website: "https://valgrind.org/".to_string(),
installed_to: InstalledTo::Snap,
installed_from: InstalledFrom::Snap,
platforms: Platforms { linux: true, ..Default::default() },
repository: "https://sourceware.org/git/valgrind.git".to_string(),
license_markdown:
"[GPL-2.0](https://sourceware.org/git/?p=valgrind.git;a=blob;f=COPYING;hb=HEAD)"
.to_string(),
}];
for path in paths {
let file_name = path.file_name();
let mut name = PathBuf::from(file_name.clone());
name.set_extension("");
let name = name.to_string_lossy().to_string();
let base_info: BaseManifest =
serde_json::from_slice(&fs::read(base_info_dir.join(file_name.clone()))?)?;
let manifests: Manifests =
serde_json::from_slice(&fs::read(manifest_dir.join(file_name))?)?;
let website = match base_info.website {
Some(website) => website,
None => base_info.repository.clone(),
};
let repository = base_info.repository;
let installed_to =
if manifests.rust_crate.is_some() { InstalledTo::Cargo } else { InstalledTo::UsrLocal };
let installed_from = InstalledFrom::GitHubRelease;
let mut platforms = Platforms::default();
for platform in base_info.platform.keys() {
match platform.rust_target_os() {
"linux" => platforms.linux = true,
"macos" => platforms.macos = true,
"windows" => platforms.windows = true,
&_ => todo!(),
}
}
let license_markdown = manifests.license_markdown;
let readme_entry = MarkdownEntry {
name,
website,
repository,
installed_to,
installed_from,
platforms,
license_markdown,
alias: None,
};
tools.push(readme_entry);
}
tools.sort_by(|x, y| x.name.cmp(&y.name));
let mut markdown_file = workspace_root.clone();
markdown_file.push("TOOLS.md");
let file = std::fs::File::create(markdown_file).expect("Unable to create file");
let mut file = std::io::BufWriter::new(file);
file.write_all(HEADER.as_bytes()).expect("Unable to write header");
for tool in tools {
file.write_all(tool.to_string().as_bytes()).expect("Unable to write entry");
}
file.write_all(FOOTER.as_bytes()).expect("Unable to write footer");
Ok(())
}
#[derive(Debug)]
struct MarkdownEntry {
name: String,
alias: Option<String>,
website: String,
repository: String,
installed_to: InstalledTo,
installed_from: InstalledFrom,
platforms: Platforms,
license_markdown: String,
}
#[derive(Debug, Eq, PartialEq)]
enum InstalledFrom {
GitHubRelease,
Snap,
}
#[derive(Debug, Default, Eq, PartialEq)]
struct Platforms {
linux: bool,
macos: bool,
windows: bool,
}
impl fmt::Display for Platforms {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let mut platform_names: Vec<&str> = vec![];
if self.linux {
platform_names.push("Linux");
}
if self.macos {
platform_names.push("macOS");
}
if self.windows {
platform_names.push("Windows");
}
let name = platform_names.join(", ");
f.write_str(&name)?;
Ok(())
}
}
#[derive(Debug, Eq, PartialEq)]
enum InstalledTo {
Cargo,
Snap,
UsrLocal,
}
impl fmt::Display for InstalledTo {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
InstalledTo::Cargo => f.write_str("`$CARGO_HOME/bin`")?,
InstalledTo::Snap => f.write_str("`/snap/bin`")?,
InstalledTo::UsrLocal => f.write_str("`/usr/local/bin`")?,
}
Ok(())
}
}
impl fmt::Display for MarkdownEntry {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
let name = format!("| [**{}**]({}) ", self.name, self.website);
f.write_str(&name)?;
if let Some(alias) = self.alias.clone() {
let alias = format!("(alias: `{alias}`)");
f.write_str(&alias)?;
}
f.write_str(&format!("| {} ", self.installed_to))?;
match self.installed_from {
InstalledFrom::GitHubRelease => {
let markdown = format!("| [GitHub Releases]({}/releases) ", self.repository);
f.write_str(&markdown)?;
}
InstalledFrom::Snap => {
let markdown =
format!("| [snap](https://snapcraft.io/install/{}/ubuntu) ", self.name);
f.write_str(&markdown)?;
}
}
f.write_str(&format!("| {} ", self.platforms))?;
f.write_str(&format!("| {} |\n", self.license_markdown))?;
Ok(())
}
}

View File

@@ -102,8 +102,10 @@ tools=()
for tool in tools/codegen/base/*.json; do for tool in tools/codegen/base/*.json; do
tools+=("$(basename "${tool%.*}")") tools+=("$(basename "${tool%.*}")")
done done
# Alias
tools+=(nextest)
# Not manifest-based # Not manifest-based
tools+=(valgrind nextest cargo-nextest) tools+=(valgrind)
if [[ -n "${tags}" ]]; then if [[ -n "${tags}" ]]; then
# Create a release commit. # Create a release commit.

View File

@@ -16,7 +16,7 @@ trap 's=$?; echo >&2 "$0: error on line "${LINENO}": ${BASH_COMMAND}"; exit ${s}
# - shellcheck # - shellcheck
# - npm # - npm
# - jq # - jq
# - python # - python 3
# - rustup (if Rust code exists) # - rustup (if Rust code exists)
# - clang-format (if C/C++ code exists) # - clang-format (if C/C++ code exists)
# #
@@ -40,6 +40,19 @@ check_config() {
error "could not found $1 in the repository root" error "could not found $1 in the repository root"
fi fi
} }
check_install() {
for tool in "$@"; do
if ! type -P "${tool}" &>/dev/null; then
if [[ "${tool}" == "python3" ]]; then
if type -P python &>/dev/null; then
continue
fi
fi
error "'${tool}' is required to run this check"
return 1
fi
done
}
info() { info() {
echo >&2 "info: $*" echo >&2 "info: $*"
} }
@@ -56,6 +69,27 @@ venv() {
shift shift
"${venv_bin}/${bin}${exe}" "$@" "${venv_bin}/${bin}${exe}" "$@"
} }
venv_install_yq() {
local py_suffix=''
if type -P python3 &>/dev/null; then
py_suffix='3'
fi
exe=''
venv_bin='.venv/bin'
case "$(uname -s)" in
MINGW* | MSYS* | CYGWIN* | Windows_NT)
exe='.exe'
venv_bin='.venv/Scripts'
;;
esac
if [[ ! -d .venv ]]; then
"python${py_suffix}" -m venv .venv
fi
if [[ ! -e "${venv_bin}/yq${exe}" ]]; then
info "installing yq to ./.venv using pip"
venv "pip${py_suffix}" install yq
fi
}
if [[ $# -gt 0 ]]; then if [[ $# -gt 0 ]]; then
cat <<EOF cat <<EOF
@@ -68,24 +102,23 @@ fi
# Rust (if exists) # Rust (if exists)
if [[ -n "$(git ls-files '*.rs')" ]]; then if [[ -n "$(git ls-files '*.rs')" ]]; then
info "checking Rust code style" info "checking Rust code style"
check_install cargo jq python3
check_config .rustfmt.toml check_config .rustfmt.toml
if type -P rustup &>/dev/null; then if check_install rustup; then
# `cargo fmt` cannot recognize files not included in the current workspace and modules # `cargo fmt` cannot recognize files not included in the current workspace and modules
# defined inside macros, so run rustfmt directly. # defined inside macros, so run rustfmt directly.
# We need to use nightly rustfmt because we use the unstable formatting options of rustfmt. # We need to use nightly rustfmt because we use the unstable formatting options of rustfmt.
rustc_version=$(rustc -vV | grep '^release:' | cut -d' ' -f2) rustc_version=$(rustc -vV | grep '^release:' | cut -d' ' -f2)
if [[ "${rustc_version}" == *"nightly"* ]] || [[ "${rustc_version}" == *"dev"* ]]; then if [[ "${rustc_version}" == *"nightly"* ]] || [[ "${rustc_version}" == *"dev"* ]]; then
rustup component add rustfmt &>/dev/null rustup component add rustfmt &>/dev/null
echo "+ rustfmt \$(git ls-files '*.rs')" info "running \`rustfmt \$(git ls-files '*.rs')\`"
rustfmt $(git ls-files '*.rs') rustfmt $(git ls-files '*.rs')
else else
rustup component add rustfmt --toolchain nightly &>/dev/null rustup component add rustfmt --toolchain nightly &>/dev/null
echo "+ rustfmt +nightly \$(git ls-files '*.rs')" info "running \`rustfmt +nightly \$(git ls-files '*.rs')\`"
rustfmt +nightly $(git ls-files '*.rs') rustfmt +nightly $(git ls-files '*.rs')
fi fi
check_diff $(git ls-files '*.rs') check_diff $(git ls-files '*.rs')
else
error "'rustup' is not installed; skipped Rust code style check"
fi fi
cast_without_turbofish=$(grep -n -E '\.cast\(\)' $(git ls-files '*.rs') || true) cast_without_turbofish=$(grep -n -E '\.cast\(\)' $(git ls-files '*.rs') || true)
if [[ -n "${cast_without_turbofish}" ]]; then if [[ -n "${cast_without_turbofish}" ]]; then
@@ -122,11 +155,12 @@ if [[ -n "$(git ls-files '*.rs')" ]]; then
binaries='' binaries=''
metadata=$(cargo metadata --format-version=1 --no-deps) metadata=$(cargo metadata --format-version=1 --no-deps)
has_public_crate='' has_public_crate=''
venv_install_yq
for id in $(jq <<<"${metadata}" '.workspace_members[]'); do for id in $(jq <<<"${metadata}" '.workspace_members[]'); do
pkg=$(jq <<<"${metadata}" ".packages[] | select(.id == ${id})") pkg=$(jq <<<"${metadata}" ".packages[] | select(.id == ${id})")
publish=$(jq <<<"${pkg}" -r '.publish') publish=$(jq <<<"${pkg}" -r '.publish')
manifest_path=$(jq <<<"${pkg}" -r '.manifest_path') manifest_path=$(jq <<<"${pkg}" -r '.manifest_path')
if ! grep -q '^\[lints\]' "${manifest_path}" && ! grep -q '^\[lints\.rust\]' "${manifest_path}"; then if [[ "$(venv tomlq -c '.lints' "${manifest_path}")" == "null" ]]; then
error "no [lints] table in ${manifest_path} please add '[lints]' with 'workspace = true'" error "no [lints] table in ${manifest_path} please add '[lints]' with 'workspace = true'"
fi fi
# Publishing is unrestricted if null, and forbidden if an empty array. # Publishing is unrestricted if null, and forbidden if an empty array.
@@ -144,13 +178,14 @@ if [[ -n "$(git ls-files '*.rs')" ]]; then
publish=$(jq <<<"${root_pkg}" -r '.publish') publish=$(jq <<<"${root_pkg}" -r '.publish')
# Publishing is unrestricted if null, and forbidden if an empty array. # Publishing is unrestricted if null, and forbidden if an empty array.
if [[ "${publish}" != "[]" ]]; then if [[ "${publish}" != "[]" ]]; then
if ! grep -Eq '^exclude = \[.*"/\.\*".*\]' Cargo.toml; then exclude=$(venv tomlq -r '.package.exclude[]' Cargo.toml)
if ! grep <<<"${exclude}" -Eq '^/\.\*$'; then
error "top-level Cargo.toml of non-virtual workspace should have 'exclude' field with \"/.*\"" error "top-level Cargo.toml of non-virtual workspace should have 'exclude' field with \"/.*\""
fi fi
if [[ -e tools ]] && ! grep -Eq '^exclude = \[.*"/tools".*\]' Cargo.toml; then if [[ -e tools ]] && ! grep <<<"${exclude}" -Eq '^/tools$'; then
error "top-level Cargo.toml of non-virtual workspace should have 'exclude' field with \"/tools\" if it exists" error "top-level Cargo.toml of non-virtual workspace should have 'exclude' field with \"/tools\" if it exists"
fi fi
if [[ -e target-specs ]] && ! grep -Eq '^exclude = \[.*"/target-specs".*\]' Cargo.toml; then if [[ -e target-specs ]] && ! grep <<<"${exclude}" -Eq '^/target-specs$'; then
error "top-level Cargo.toml of non-virtual workspace should have 'exclude' field with \"/target-specs\" if it exists" error "top-level Cargo.toml of non-virtual workspace should have 'exclude' field with \"/target-specs\" if it exists"
fi fi
fi fi
@@ -196,12 +231,10 @@ fi
if [[ -n "$(git ls-files '*.c' '*.h' '*.cpp' '*.hpp')" ]]; then if [[ -n "$(git ls-files '*.c' '*.h' '*.cpp' '*.hpp')" ]]; then
info "checking C/C++ code style" info "checking C/C++ code style"
check_config .clang-format check_config .clang-format
if type -P clang-format &>/dev/null; then if check_install clang-format; then
echo "+ clang-format -i \$(git ls-files '*.c' '*.h' '*.cpp' '*.hpp')" info "running \`clang-format -i \$(git ls-files '*.c' '*.h' '*.cpp' '*.hpp')\`"
clang-format -i $(git ls-files '*.c' '*.h' '*.cpp' '*.hpp') clang-format -i $(git ls-files '*.c' '*.h' '*.cpp' '*.hpp')
check_diff $(git ls-files '*.c' '*.h' '*.cpp' '*.hpp') check_diff $(git ls-files '*.c' '*.h' '*.cpp' '*.hpp')
else
error "'clang-format' is not installed; skipped C/C++ code style check"
fi fi
elif [[ -e .clang-format ]]; then elif [[ -e .clang-format ]]; then
error ".clang-format is unused" error ".clang-format is unused"
@@ -211,36 +244,16 @@ fi
if [[ -n "$(git ls-files '*.yml' '*.yaml' '*.js' '*.json')" ]]; then if [[ -n "$(git ls-files '*.yml' '*.yaml' '*.js' '*.json')" ]]; then
info "checking YAML/JavaScript/JSON code style" info "checking YAML/JavaScript/JSON code style"
check_config .editorconfig check_config .editorconfig
if type -P npm &>/dev/null; then if check_install npm; then
echo "+ npx -y prettier -l -w \$(git ls-files '*.yml' '*.yaml' '*.js' '*.json')" info "running \`npx -y prettier -l -w \$(git ls-files '*.yml' '*.yaml' '*.js' '*.json')\`"
npx -y prettier -l -w $(git ls-files '*.yml' '*.yaml' '*.js' '*.json') npx -y prettier -l -w $(git ls-files '*.yml' '*.yaml' '*.js' '*.json')
check_diff $(git ls-files '*.yml' '*.yaml' '*.js' '*.json') check_diff $(git ls-files '*.yml' '*.yaml' '*.js' '*.json')
else
error "'npm' is not installed; skipped YAML/JavaScript/JSON code style check"
fi fi
# Check GitHub workflows. # Check GitHub workflows.
if [[ -d .github/workflows ]]; then if [[ -d .github/workflows ]]; then
info "checking GitHub workflows" info "checking GitHub workflows"
if type -P jq &>/dev/null; then if check_install jq python3; then
if type -P python3 &>/dev/null || type -P python &>/dev/null; then venv_install_yq
py_suffix=''
if type -P python3 &>/dev/null; then
py_suffix='3'
fi
exe=''
venv_bin='.venv/bin'
case "$(uname -s)" in
MINGW* | MSYS* | CYGWIN* | Windows_NT)
exe='.exe'
venv_bin='.venv/Scripts'
;;
esac
if [[ ! -d .venv ]]; then
"python${py_suffix}" -m venv .venv
fi
if [[ ! -e "${venv_bin}/yq${exe}" ]]; then
venv "pip${py_suffix}" install yq
fi
for workflow in .github/workflows/*.yml; do for workflow in .github/workflows/*.yml; do
# The top-level permissions must be weak as they are referenced by all jobs. # The top-level permissions must be weak as they are referenced by all jobs.
permissions=$(venv yq -c '.permissions' "${workflow}") permissions=$(venv yq -c '.permissions' "${workflow}")
@@ -264,11 +277,6 @@ if [[ -n "$(git ls-files '*.yml' '*.yaml' '*.js' '*.json')" ]]; then
fi fi
fi fi
done done
else
error "'python3' is not installed; skipped GitHub workflow check"
fi
else
error "'jq' is not installed; skipped GitHub workflow check"
fi fi
fi fi
fi fi
@@ -281,12 +289,10 @@ fi
if [[ -n "$(git ls-files '*.toml' | (grep -v .taplo.toml || true))" ]]; then if [[ -n "$(git ls-files '*.toml' | (grep -v .taplo.toml || true))" ]]; then
info "checking TOML style" info "checking TOML style"
check_config .taplo.toml check_config .taplo.toml
if type -P npm &>/dev/null; then if check_install npm; then
echo "+ npx -y @taplo/cli fmt \$(git ls-files '*.toml')" info "running \`npx -y @taplo/cli fmt \$(git ls-files '*.toml')\`"
RUST_LOG=warn npx -y @taplo/cli fmt $(git ls-files '*.toml') RUST_LOG=warn npx -y @taplo/cli fmt $(git ls-files '*.toml')
check_diff $(git ls-files '*.toml') check_diff $(git ls-files '*.toml')
else
error "'npm' is not installed; skipped TOML style check"
fi fi
elif [[ -e .taplo.toml ]]; then elif [[ -e .taplo.toml ]]; then
error ".taplo.toml is unused" error ".taplo.toml is unused"
@@ -296,11 +302,9 @@ fi
if [[ -n "$(git ls-files '*.md')" ]]; then if [[ -n "$(git ls-files '*.md')" ]]; then
info "checking Markdown style" info "checking Markdown style"
check_config .markdownlint-cli2.yaml check_config .markdownlint-cli2.yaml
if type -P npm &>/dev/null; then if check_install npm; then
echo "+ npx -y markdownlint-cli2 \$(git ls-files '*.md')" info "running \`npx -y markdownlint-cli2 \$(git ls-files '*.md')\`"
npx -y markdownlint-cli2 $(git ls-files '*.md') npx -y markdownlint-cli2 $(git ls-files '*.md')
else
error "'npm' is not installed; skipped Markdown style check"
fi fi
elif [[ -e .markdownlint-cli2.yaml ]]; then elif [[ -e .markdownlint-cli2.yaml ]]; then
error ".markdownlint-cli2.yaml is unused" error ".markdownlint-cli2.yaml is unused"
@@ -312,29 +316,25 @@ fi
# Shell scripts # Shell scripts
info "checking Shell scripts" info "checking Shell scripts"
if type -P shfmt &>/dev/null; then if check_install shfmt; then
check_config .editorconfig check_config .editorconfig
echo "+ shfmt -l -w \$(git ls-files '*.sh')" info "running \`shfmt -l -w \$(git ls-files '*.sh')\`"
shfmt -l -w $(git ls-files '*.sh') shfmt -l -w $(git ls-files '*.sh')
check_diff $(git ls-files '*.sh') check_diff $(git ls-files '*.sh')
else
error "'shfmt' is not installed; skipped Shell scripts style check"
fi fi
if type -P shellcheck &>/dev/null; then if check_install shellcheck; then
check_config .shellcheckrc check_config .shellcheckrc
echo "+ shellcheck \$(git ls-files '*.sh')" info "running \`shellcheck \$(git ls-files '*.sh')\`"
if ! shellcheck $(git ls-files '*.sh'); then if ! shellcheck $(git ls-files '*.sh'); then
should_fail=1 should_fail=1
fi fi
if [[ -n "$(git ls-files '*Dockerfile')" ]]; then if [[ -n "$(git ls-files '*Dockerfile')" ]]; then
# SC2154 doesn't seem to work on dockerfile. # SC2154 doesn't seem to work on dockerfile.
echo "+ shellcheck -e SC2148,SC2154,SC2250 \$(git ls-files '*Dockerfile')" info "running \`shellcheck -e SC2148,SC2154,SC2250 \$(git ls-files '*Dockerfile')\`"
if ! shellcheck -e SC2148,SC2154,SC2250 $(git ls-files '*Dockerfile'); then if ! shellcheck -e SC2148,SC2154,SC2250 $(git ls-files '*Dockerfile'); then
should_fail=1 should_fail=1
fi fi
fi fi
else
error "'shellcheck' is not installed; skipped Shell scripts style check"
fi fi
# License check # License check
@@ -383,13 +383,14 @@ fi
if [[ -f .cspell.json ]]; then if [[ -f .cspell.json ]]; then
info "spell checking" info "spell checking"
project_dictionary=.github/.cspell/project-dictionary.txt project_dictionary=.github/.cspell/project-dictionary.txt
if type -P npm &>/dev/null; then if check_install npm jq python3; then
has_rust='' has_rust=''
if [[ -n "$(git ls-files '*Cargo.toml')" ]]; then if [[ -n "$(git ls-files '*Cargo.toml')" ]]; then
venv_install_yq
has_rust='1' has_rust='1'
dependencies='' dependencies=''
for manifest_path in $(git ls-files '*Cargo.toml'); do for manifest_path in $(git ls-files '*Cargo.toml'); do
if [[ "${manifest_path}" != "Cargo.toml" ]] && ! grep -Eq '\[workspace\]' "${manifest_path}"; then if [[ "${manifest_path}" != "Cargo.toml" ]] && [[ "$(venv tomlq -c '.workspace' "${manifest_path}")" == "null" ]]; then
continue continue
fi fi
metadata=$(cargo metadata --format-version=1 --no-deps --manifest-path "${manifest_path}") metadata=$(cargo metadata --format-version=1 --no-deps --manifest-path "${manifest_path}")
@@ -422,7 +423,7 @@ EOF
error "you may want to mark .github/.cspell/rust-dependencies.txt linguist-generated" error "you may want to mark .github/.cspell/rust-dependencies.txt linguist-generated"
fi fi
echo "+ npx -y cspell --no-progress --no-summary \$(git ls-files)" info "running \`npx -y cspell --no-progress --no-summary \$(git ls-files)\`"
if ! npx -y cspell --no-progress --no-summary $(git ls-files); then if ! npx -y cspell --no-progress --no-summary $(git ls-files); then
error "spellcheck failed: please fix uses of above words or add to ${project_dictionary} if correct" error "spellcheck failed: please fix uses of above words or add to ${project_dictionary} if correct"
fi fi
@@ -454,8 +455,6 @@ EOF
echo -n "${unused}" echo -n "${unused}"
echo "=======================================" echo "======================================="
fi fi
else
error "'npm' is not installed; skipped spell check"
fi fi
fi fi

12
tools/update-markdown.sh Executable file
View File

@@ -0,0 +1,12 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: Apache-2.0 OR MIT
set -eEuo pipefail
IFS=$'\n\t'
cd "$(dirname "$0")"/..
# Update markdown
#
# USAGE:
# ./tools/update-markdown.sh
cargo run --manifest-path tools/codegen/Cargo.toml --bin generate-tools-markdown --release