mirror of
https://github.com/taiki-e/install-action.git
synced 2026-04-22 15:30:31 +00:00
Compare commits
63 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
07a34f8347 | ||
|
|
e626313db4 | ||
|
|
01c63d291f | ||
|
|
43f5aa7172 | ||
|
|
1330af6455 | ||
|
|
01ad6befc0 | ||
|
|
0a18e2472c | ||
|
|
ca13ba3e0d | ||
|
|
fa446e93ef | ||
|
|
3c1a9d610d | ||
|
|
5ee12b2568 | ||
|
|
02185b5b43 | ||
|
|
56182455cc | ||
|
|
b67c820ac3 | ||
|
|
d0c2bb4cff | ||
|
|
a36362bfc6 | ||
|
|
2d1ca68f02 | ||
|
|
f6578d890d | ||
|
|
e7b91e1d2b | ||
|
|
5a6e4c785f | ||
|
|
762078b2b9 | ||
|
|
feb3c20d8e | ||
|
|
4306070abe | ||
|
|
23b90ae71a | ||
|
|
f9c15f1341 | ||
|
|
61977646cd | ||
|
|
a6bc18a46c | ||
|
|
df5666f536 | ||
|
|
8d078757e8 | ||
|
|
a0060a7f49 | ||
|
|
66c4dcc03d | ||
|
|
16647abe1b | ||
|
|
3eb90b20bc | ||
|
|
c2a32441ec | ||
|
|
45b6915b2c | ||
|
|
eb4a68d3da | ||
|
|
dcea075c55 | ||
|
|
ecb44a0aaf | ||
|
|
ef498a3640 | ||
|
|
8de2a00cdd | ||
|
|
38127ecf47 | ||
|
|
cf54022d62 | ||
|
|
8faf1ae00d | ||
|
|
6ebd8c0cb0 | ||
|
|
e59163289d | ||
|
|
03897c74e4 | ||
|
|
d7080cb663 | ||
|
|
9b00020f6f | ||
|
|
2c14471598 | ||
|
|
544b987e85 | ||
|
|
1014a1e7a6 | ||
|
|
df03a8f339 | ||
|
|
1bd25cfd26 | ||
|
|
4e38715ddc | ||
|
|
2d4372270d | ||
|
|
e5240ce0c5 | ||
|
|
cd2b50cd20 | ||
|
|
08b0c77d33 | ||
|
|
51b8ba088c | ||
|
|
c46ebac92e | ||
|
|
6058afcbf2 | ||
|
|
60784cb1f4 | ||
|
|
ccdec58fd9 |
@@ -44,7 +44,7 @@
|
||||
"languageSettings": [
|
||||
{
|
||||
"languageId": ["*"],
|
||||
"dictionaries": ["rust"]
|
||||
"dictionaries": ["bash", "rust"]
|
||||
}
|
||||
],
|
||||
"ignorePaths": []
|
||||
|
||||
7
.github/.cspell/project-dictionary.txt
vendored
7
.github/.cspell/project-dictionary.txt
vendored
@@ -2,8 +2,11 @@ almalinux
|
||||
archlinux
|
||||
bindgen
|
||||
binstall
|
||||
choco
|
||||
coreutils
|
||||
cyclonedx
|
||||
cygdrive
|
||||
deepsource
|
||||
distro
|
||||
doas
|
||||
dprint
|
||||
@@ -20,12 +23,14 @@ protoc
|
||||
pubkey
|
||||
pwsh
|
||||
quickinstall
|
||||
rclone
|
||||
rdme
|
||||
requirechecksums
|
||||
sccache
|
||||
shfmt
|
||||
syft
|
||||
udeps
|
||||
wasmtime
|
||||
watchexec
|
||||
xbuild
|
||||
xscale
|
||||
zigbuild
|
||||
|
||||
61
.github/workflows/ci.yml
vendored
61
.github/workflows/ci.yml
vendored
@@ -9,6 +9,7 @@ on:
|
||||
branches:
|
||||
- main
|
||||
- dev
|
||||
- ci-*
|
||||
schedule:
|
||||
- cron: '0 0,3,6,9,12,15,18,21 * * *'
|
||||
workflow_dispatch:
|
||||
@@ -52,6 +53,11 @@ jobs:
|
||||
- os: macos-14
|
||||
- os: windows-2019
|
||||
- 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 }}
|
||||
timeout-minutes: 60
|
||||
steps:
|
||||
@@ -61,15 +67,27 @@ jobs:
|
||||
- name: Generate tool list
|
||||
id: tool-list
|
||||
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: ./
|
||||
with:
|
||||
tool: ${{ steps.tool-list.outputs.tool }}
|
||||
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsshell
|
||||
- name: Test bash
|
||||
run: just --version; shfmt --version; protoc --version
|
||||
run: just --version && shfmt --version && protoc --version
|
||||
shell: bash
|
||||
- name: Test sh
|
||||
run: just --version; shfmt --version; protoc --version
|
||||
run: just --version && shfmt --version && protoc --version
|
||||
shell: sh
|
||||
if: startsWith(matrix.os, 'ubuntu') || startsWith(matrix.os, 'macos')
|
||||
- name: Test pwsh
|
||||
@@ -83,7 +101,7 @@ jobs:
|
||||
run: just --version & shfmt --version & protoc --version
|
||||
shell: cmd
|
||||
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
|
||||
# check it with CI. (e.g., 0.14.0->0.16.0 update change it
|
||||
# from "cargo-binstall <version>" to "<version>")
|
||||
@@ -91,6 +109,7 @@ jobs:
|
||||
if [[ "$(cargo binstall -V)" != "$(jq -r '.latest.version' manifests/cargo-binstall.json)" ]]; then
|
||||
exit 1
|
||||
fi
|
||||
if: matrix.bash != 'cygwin'
|
||||
|
||||
test-container:
|
||||
strategy:
|
||||
@@ -118,29 +137,8 @@ jobs:
|
||||
timeout-minutes: 60
|
||||
container: ${{ matrix.container }}
|
||||
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)
|
||||
run: apk --no-cache add bash cargo
|
||||
run: apk --no-cache add bash
|
||||
shell: sh
|
||||
if: startsWith(matrix.container, 'alpine')
|
||||
- uses: taiki-e/checkout-action@v1
|
||||
@@ -153,19 +151,6 @@ jobs:
|
||||
with:
|
||||
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:
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 60
|
||||
|
||||
120
CHANGELOG.md
120
CHANGELOG.md
@@ -10,6 +10,109 @@ Note: In this file, do not use the hard wrap in the middle of a sentence for com
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [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
|
||||
|
||||
- Update `dprint@latest` to 0.46.0.
|
||||
@@ -2215,7 +2318,22 @@ Note: This release is considered a breaking change because installing on version
|
||||
|
||||
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.38.4...HEAD
|
||||
[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.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
|
||||
|
||||
@@ -10,6 +10,8 @@ improper_ctypes_definitions = "warn"
|
||||
non_ascii_idents = "warn"
|
||||
rust_2018_idioms = "warn"
|
||||
single_use_lifetimes = "warn"
|
||||
unexpected_cfgs = { level = "warn", check-cfg = [
|
||||
] }
|
||||
unreachable_pub = "warn"
|
||||
unsafe_op_in_unsafe_fn = "warn"
|
||||
[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
|
||||
doc_markdown = { level = "allow", priority = 1 }
|
||||
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_range_contains = { level = "allow", priority = 1 } # https://github.com/rust-lang/rust-clippy/issues/6455#issuecomment-1225966395
|
||||
missing_errors_doc = { 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 }
|
||||
single_match = { level = "allow", priority = 1 }
|
||||
single_match_else = { level = "allow", priority = 1 }
|
||||
|
||||
@@ -4,13 +4,11 @@
|
||||
|
||||
(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).
|
||||
|
||||
2\. Add base manifest to [`tools/codegen/base`](tools/codegen/base) directory.
|
||||
1\. Add base manifest to [`tools/codegen/base`](tools/codegen/base) directory.
|
||||
|
||||
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
|
||||
./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>
|
||||
> ```
|
||||
|
||||
## Refresh TOOLS.md
|
||||
|
||||
To update `TOOLS.md`, run
|
||||
|
||||
```sh
|
||||
./tools/update-markdown.sh
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
If one of the CI builds fails due to a bin path or release asset_name, fix the problem in the base
|
||||
|
||||
70
README.md
70
README.md
@@ -1,3 +1,4 @@
|
||||
<!-- omit in toc -->
|
||||
# install-action
|
||||
|
||||
[](https://github.com/taiki-e/install-action/releases/latest)
|
||||
@@ -74,63 +75,21 @@ Or:
|
||||
|
||||
## Supported tools
|
||||
|
||||
<!--
|
||||
License should use SPDX license identifiers.
|
||||
https://spdx.org/licenses
|
||||
-->
|
||||
See [TOOLS.md](TOOLS.md) for the list of tools that are installed from manifests managed in this action.
|
||||
|
||||
| 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 | [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 a tool not included in the list above 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>
|
||||
If you want to ensure that fallback is not used, use `fallback: none`.
|
||||
|
||||
**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
|
||||
|
||||
@@ -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 [Supported tools section](#supported-tools) for how to ensure that fallback is not used.
|
||||
|
||||
## Compatibility
|
||||
|
||||
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:
|
||||
|
||||
- bash
|
||||
- cargo (if you use cargo-binstall fallback)
|
||||
|
||||
## Related Projects
|
||||
|
||||
|
||||
69
TOOLS.md
Normal file
69
TOOLS.md
Normal 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
|
||||
@@ -10,6 +10,10 @@ inputs:
|
||||
description: Whether to enable checksums
|
||||
required: false
|
||||
default: 'true'
|
||||
fallback:
|
||||
description: Whether to use fallback (none or cargo-binstall)
|
||||
required: false
|
||||
default: 'cargo-binstall'
|
||||
|
||||
# Note:
|
||||
# - inputs.* should be manually mapped to INPUT_* due to https://github.com/actions/runner/issues/665
|
||||
@@ -22,3 +26,4 @@ runs:
|
||||
env:
|
||||
INPUT_TOOL: ${{ inputs.tool }}
|
||||
INPUT_CHECKSUM: ${{ inputs.checksum }}
|
||||
INPUT_FALLBACK: ${{ inputs.fallback }}
|
||||
|
||||
99
main.sh
99
main.sh
@@ -197,7 +197,29 @@ read_manifest() {
|
||||
exact_version="${version}"
|
||||
else
|
||||
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
|
||||
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
|
||||
linux)
|
||||
# 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.
|
||||
host_platform="${host_arch}_linux_gnu"
|
||||
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
|
||||
;;
|
||||
macos | windows)
|
||||
@@ -363,7 +400,7 @@ init_install_action_bin_dir() {
|
||||
}
|
||||
canonicalize_windows_path() {
|
||||
case "${host_os}" in
|
||||
windows) sed <<<"$1" 's/^\/c\//C:\\/; s/\//\\/g' ;;
|
||||
windows) sed <<<"$1" 's/^\/cygdrive\//\//; s/^\/c\//C:\\/; s/\//\\/g' ;;
|
||||
*) echo "$1" ;;
|
||||
esac
|
||||
}
|
||||
@@ -402,12 +439,25 @@ case "${enable_checksum}" in
|
||||
*) bail "'checksum' input option must be 'true' or 'false': '${enable_checksum}'" ;;
|
||||
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
|
||||
base_distro=""
|
||||
exe=""
|
||||
case "$(uname -s)" in
|
||||
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
|
||||
base_distro=$(grep '^ID_LIKE=' /etc/os-release | cut -d= -f2)
|
||||
case "${base_distro}" in
|
||||
@@ -465,17 +515,38 @@ case "$(uname -m)" in
|
||||
esac
|
||||
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"
|
||||
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
|
||||
# is used ($CARGO_HOME/bin is most likely not included in the PATH), fallback to
|
||||
# /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
|
||||
info "cargo is located at $(type -P cargo)"
|
||||
fi
|
||||
if [[ "${host_os}" == "windows" ]] || [[ ! -e /usr/local/bin ]]; then
|
||||
if [[ ! -e /usr/local/bin ]]; then
|
||||
cargo_bin="${install_action_dir}/bin"
|
||||
else
|
||||
cargo_bin=/usr/local/bin
|
||||
@@ -507,6 +578,10 @@ case "${host_os}" in
|
||||
fi
|
||||
else
|
||||
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)
|
||||
fi
|
||||
sys_install "${sys_packages[@]}"
|
||||
@@ -714,7 +789,8 @@ for tool in "${tools[@]}"; do
|
||||
case "${tool_bin_stem}" in
|
||||
# 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.
|
||||
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.
|
||||
cargo-careful | wasm-bindgen-test-runner) ;;
|
||||
# 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
|
||||
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"
|
||||
IFS=$'\n\t'
|
||||
install_cargo_binstall
|
||||
# By default, cargo-binstall enforce downloads over secure transports only.
|
||||
# As a result, http will be disabled, and it will also set
|
||||
# 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
|
||||
|
||||
48
manifests/biome.json
generated
48
manifests/biome.json
generated
@@ -34,11 +34,55 @@
|
||||
"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": {
|
||||
"version": "1.7.3"
|
||||
"version": "1.8.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": {
|
||||
"version": "1.7.3"
|
||||
|
||||
1
manifests/cargo-audit.json
generated
1
manifests/cargo-audit.json
generated
@@ -18,6 +18,7 @@
|
||||
"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": {
|
||||
"version": "0.20.0"
|
||||
},
|
||||
|
||||
17
manifests/cargo-binstall.json
generated
17
manifests/cargo-binstall.json
generated
@@ -20,27 +20,28 @@
|
||||
"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": {
|
||||
"version": "1.6.8"
|
||||
"version": "1.6.9"
|
||||
},
|
||||
"1.6.8": {
|
||||
"1.6.9": {
|
||||
"x86_64_linux_musl": {
|
||||
"checksum": "581eb7c97b2767a468afb0505c416eb727b469c029b36470288fc30b26517101"
|
||||
"checksum": "604d0cd902ee7385eeb9147b512bdbaa0ef4eb19a92d961df24d611f232fd3ff"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"checksum": "590ff2a4b50d67ce52b35895e4cb8d75fefdc591988dafb2687c6461b50e3885"
|
||||
"checksum": "7ad36970202044d68033a79ebf62836796eb69e5c478dca1d9cbab8f55e719f3"
|
||||
},
|
||||
"x86_64_windows": {
|
||||
"checksum": "0c1cd165f4460a9d5c1f5c2a67e5faf53913694ba207ddc18b44f6c5de6ba6c5"
|
||||
"checksum": "99f9d048ad0f9a8b3e3dda7de3ffa34f1b05a1cb34392bde9866c063473c89e0"
|
||||
},
|
||||
"aarch64_linux_musl": {
|
||||
"checksum": "2433118983ade85388be17d442b430c4932eb2dad834143f9a6a25646563281f"
|
||||
"checksum": "08f25befe50164b2d622b826da811dec47a0ac5ca3215837316281f4a8290806"
|
||||
},
|
||||
"aarch64_macos": {
|
||||
"checksum": "1b0ea154b639dc7d8b49c6a2fa300964357a67a1b2441e9f29b61c7b7b79d23d"
|
||||
"checksum": "ff603214e78a62d56ba9c8f2287de400cccd377aa38d75daba3dd827a4c3d8f9"
|
||||
},
|
||||
"aarch64_windows": {
|
||||
"checksum": "f440401a77b284a8b52ba0052fe26628e8658d4febc91108c28542a0843d341a"
|
||||
"checksum": "0b28fb0e4d7ee54995d845e89494f03021f573caa1d22ab4d24816715be120d9"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
1
manifests/cargo-careful.json
generated
1
manifests/cargo-careful.json
generated
@@ -11,6 +11,7 @@
|
||||
"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": {
|
||||
"version": "0.4.2"
|
||||
},
|
||||
|
||||
1
manifests/cargo-cyclonedx.json
generated
1
manifests/cargo-cyclonedx.json
generated
@@ -11,6 +11,7 @@
|
||||
"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": {
|
||||
"version": "0.5.0"
|
||||
},
|
||||
|
||||
1
manifests/cargo-deny.json
generated
1
manifests/cargo-deny.json
generated
@@ -22,6 +22,7 @@
|
||||
"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": {
|
||||
"version": "0.14.24"
|
||||
},
|
||||
|
||||
1
manifests/cargo-dinghy.json
generated
1
manifests/cargo-dinghy.json
generated
@@ -10,6 +10,7 @@
|
||||
"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": {
|
||||
"version": "0.7.1"
|
||||
},
|
||||
|
||||
1
manifests/cargo-export.json
generated
1
manifests/cargo-export.json
generated
@@ -18,6 +18,7 @@
|
||||
"bin": "cargo-export-v${version}-aarch64-apple-darwin/bin/cargo-export"
|
||||
}
|
||||
},
|
||||
"license_markdown": "[MIT](https://github.com/bazhenov/cargo-export/blob/master/LICENSE)",
|
||||
"latest": {
|
||||
"version": "0.2.5"
|
||||
},
|
||||
|
||||
1
manifests/cargo-hack.json
generated
1
manifests/cargo-hack.json
generated
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"rust_crate": "cargo-hack",
|
||||
"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": {
|
||||
"version": "0.6.28"
|
||||
},
|
||||
|
||||
22
manifests/cargo-llvm-cov.json
generated
22
manifests/cargo-llvm-cov.json
generated
@@ -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"
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
"version": "0.6.9"
|
||||
"version": "0.6.10"
|
||||
},
|
||||
"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": {
|
||||
"x86_64_linux_musl": {
|
||||
|
||||
1
manifests/cargo-machete.json
generated
1
manifests/cargo-machete.json
generated
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"rust_crate": "cargo-machete",
|
||||
"template": null,
|
||||
"license_markdown": "[MIT](https://github.com/bnjbvr/cargo-machete/blob/main/LICENSE.md)",
|
||||
"latest": {
|
||||
"version": "0.6.2"
|
||||
},
|
||||
|
||||
1
manifests/cargo-make.json
generated
1
manifests/cargo-make.json
generated
@@ -18,6 +18,7 @@
|
||||
"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": {
|
||||
"version": "0.37.12"
|
||||
},
|
||||
|
||||
1
manifests/cargo-minimal-versions.json
generated
1
manifests/cargo-minimal-versions.json
generated
@@ -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"
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
"version": "0.1.27"
|
||||
},
|
||||
|
||||
1022
manifests/cargo-nextest.json
generated
Normal file
1022
manifests/cargo-nextest.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
1
manifests/cargo-no-dev-deps.json
generated
1
manifests/cargo-no-dev-deps.json
generated
@@ -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"
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
"version": "0.2.12"
|
||||
},
|
||||
|
||||
6
manifests/cargo-rdme.json
generated
6
manifests/cargo-rdme.json
generated
@@ -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"
|
||||
}
|
||||
},
|
||||
"license_markdown": "[MPL-2.0](https://github.com/orium/cargo-rdme/blob/main/LICENSE.md)",
|
||||
"latest": {
|
||||
"version": "1.4.2"
|
||||
},
|
||||
@@ -20,6 +21,11 @@
|
||||
"1.4": {
|
||||
"version": "1.4.2"
|
||||
},
|
||||
"1.4.4": {
|
||||
"x86_64_windows": {
|
||||
"checksum": "ff9b7a4d56a89451e8e0ae40716d47534fb08c5723a08fd560a66227b49e2694"
|
||||
}
|
||||
},
|
||||
"1.4.3": {
|
||||
"x86_64_windows": {
|
||||
"checksum": "408ffb657c99bf4142521632306edc4ed130dd991a0cd4b62cf370c28b307daf"
|
||||
|
||||
38
manifests/cargo-semver-checks.json
generated
Normal file
38
manifests/cargo-semver-checks.json
generated
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
1
manifests/cargo-sort.json
generated
1
manifests/cargo-sort.json
generated
@@ -11,6 +11,7 @@
|
||||
"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": {
|
||||
"version": "1.0.9"
|
||||
},
|
||||
|
||||
1
manifests/cargo-spellcheck.json
generated
1
manifests/cargo-spellcheck.json
generated
@@ -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"
|
||||
}
|
||||
},
|
||||
"license_markdown": "[LGPLv2.1](https://github.com/drahnr/cargo-spellcheck/blob/master/LICENSE-LGPL)",
|
||||
"latest": {
|
||||
"version": "0.14.0"
|
||||
},
|
||||
|
||||
1
manifests/cargo-tarpaulin.json
generated
1
manifests/cargo-tarpaulin.json
generated
@@ -17,6 +17,7 @@
|
||||
"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": {
|
||||
"version": "0.30.0"
|
||||
},
|
||||
|
||||
1
manifests/cargo-udeps.json
generated
1
manifests/cargo-udeps.json
generated
@@ -30,6 +30,7 @@
|
||||
"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": {
|
||||
"version": "0.1.47"
|
||||
},
|
||||
|
||||
1
manifests/cargo-valgrind.json
generated
1
manifests/cargo-valgrind.json
generated
@@ -11,6 +11,7 @@
|
||||
"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": {
|
||||
"version": "2.1.0"
|
||||
},
|
||||
|
||||
44
manifests/cargo-zigbuild.json
generated
Normal file
44
manifests/cargo-zigbuild.json
generated
Normal 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
1
manifests/cross.json
generated
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"rust_crate": "cross",
|
||||
"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": {
|
||||
"version": "0.2.5"
|
||||
},
|
||||
|
||||
44
manifests/deepsource.json
generated
Normal file
44
manifests/deepsource.json
generated
Normal 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
39
manifests/dprint.json
generated
@@ -23,11 +23,46 @@
|
||||
"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": {
|
||||
"version": "0.46.0"
|
||||
"version": "0.46.2"
|
||||
},
|
||||
"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": {
|
||||
"x86_64_linux_musl": {
|
||||
|
||||
61
manifests/earthly.json
generated
Normal file
61
manifests/earthly.json
generated
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
1
manifests/editorconfig-checker.json
generated
1
manifests/editorconfig-checker.json
generated
@@ -26,6 +26,7 @@
|
||||
"bin": "bin/ec-windows-arm64.exe"
|
||||
}
|
||||
},
|
||||
"license_markdown": "[MIT](https://github.com/editorconfig-checker/editorconfig-checker/blob/main/LICENSE)",
|
||||
"latest": {
|
||||
"version": "3.0.1"
|
||||
},
|
||||
|
||||
1
manifests/espup.json
generated
1
manifests/espup.json
generated
@@ -17,6 +17,7 @@
|
||||
"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": {
|
||||
"version": "0.11.0"
|
||||
},
|
||||
|
||||
28
manifests/git-cliff.json
generated
28
manifests/git-cliff.json
generated
@@ -26,11 +26,35 @@
|
||||
"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": {
|
||||
"version": "2.2.2"
|
||||
"version": "2.3.0"
|
||||
},
|
||||
"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": {
|
||||
"version": "2.2.2"
|
||||
|
||||
1
manifests/grcov.json
generated
1
manifests/grcov.json
generated
@@ -17,6 +17,7 @@
|
||||
"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": {
|
||||
"version": "0.8.19"
|
||||
},
|
||||
|
||||
1
manifests/hyperfine.json
generated
1
manifests/hyperfine.json
generated
@@ -18,6 +18,7 @@
|
||||
"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": {
|
||||
"version": "1.18.0"
|
||||
},
|
||||
|
||||
47
manifests/jaq.json
generated
Normal file
47
manifests/jaq.json
generated
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
25
manifests/just.json
generated
25
manifests/just.json
generated
@@ -17,11 +17,32 @@
|
||||
"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": {
|
||||
"version": "1.27.0"
|
||||
"version": "1.28.0"
|
||||
},
|
||||
"1": {
|
||||
"version": "1.27.0"
|
||||
"version": "1.28.0"
|
||||
},
|
||||
"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": {
|
||||
"version": "1.27.0"
|
||||
|
||||
1
manifests/mdbook-linkcheck.json
generated
1
manifests/mdbook-linkcheck.json
generated
@@ -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"
|
||||
}
|
||||
},
|
||||
"license_markdown": "[MIT](https://github.com/Michael-F-Bryan/mdbook-linkcheck/blob/master/LICENSE)",
|
||||
"latest": {
|
||||
"version": "0.7.7"
|
||||
},
|
||||
|
||||
1
manifests/mdbook.json
generated
1
manifests/mdbook.json
generated
@@ -17,6 +17,7 @@
|
||||
"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": {
|
||||
"version": "0.4.40"
|
||||
},
|
||||
|
||||
244
manifests/osv-scanner.json
generated
244
manifests/osv-scanner.json
generated
@@ -1,71 +1,172 @@
|
||||
{
|
||||
"rust_crate": null,
|
||||
"template": {
|
||||
"x86_64_linux_musl": {
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"template": null,
|
||||
"license_markdown": "[Apache-2.0](https://github.com/google/osv-scanner/blob/main/LICENSE)",
|
||||
"latest": {
|
||||
"version": "1.6.2"
|
||||
"version": "1.7.4"
|
||||
},
|
||||
"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": {
|
||||
"version": "1.6.2"
|
||||
},
|
||||
"1.6.2": {
|
||||
"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"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.6.2/osv-scanner_1.6.2_darwin_amd64",
|
||||
"checksum": "07cd355aa9b0bc3b1013b9e053cf79ebadfe51d48337707194d39807293d79c8"
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"aarch64_linux_musl": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.6.2/osv-scanner_1.6.2_linux_arm64",
|
||||
"checksum": "57821f223373d259469d5d08bd7710cd228e7c056aaa5ab70045ba3f9d32c991"
|
||||
},
|
||||
"aarch64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.6.2/osv-scanner_1.6.2_darwin_arm64",
|
||||
"checksum": "646bf2564680ef776de5478ec5fd34f2ed3f945345d16aa01f64e388fa40c9d6"
|
||||
},
|
||||
"aarch64_windows": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.6.2/osv-scanner_1.6.2_windows_arm64.exe",
|
||||
"checksum": "060270c5499d51890f97812ef92e751b7243e0a76503376d860d083712f62a7d"
|
||||
}
|
||||
},
|
||||
"1.6.1": {
|
||||
"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"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.6.1/osv-scanner_1.6.1_darwin_amd64",
|
||||
"checksum": "70877545acd3a0f0e72c9784542daa7d64939392c333fabe2b2de27f8fc66b6c"
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"aarch64_linux_musl": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.6.1/osv-scanner_1.6.1_linux_arm64",
|
||||
"checksum": "c26ee30805e1038710b0c1ed775dc6c8852612072e7fffc7dd70ab0b03ddc88b"
|
||||
},
|
||||
"aarch64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.6.1/osv-scanner_1.6.1_darwin_arm64",
|
||||
"checksum": "e596f4f6bb1ce706821d36b724c5fff119c652ea9adbac20dd4c8389c08bc756"
|
||||
},
|
||||
"aarch64_windows": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.6.1/osv-scanner_1.6.1_windows_arm64.exe",
|
||||
"checksum": "07cdf63ef04b3e976131e0d88b8710ed5d7f26533c5790cee6dfc032d552ca81"
|
||||
}
|
||||
},
|
||||
@@ -74,21 +175,27 @@
|
||||
},
|
||||
"1.5.0": {
|
||||
"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"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.5.0/osv-scanner_1.5.0_darwin_amd64",
|
||||
"checksum": "e0f98909fefbdb9d584d5fd90373efd45c3f1783ec67ebf78eedb660a6b8c49b"
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"aarch64_linux_musl": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.5.0/osv-scanner_1.5.0_linux_arm64",
|
||||
"checksum": "0bdadcbc3cc862af537a3a84360e1f4fbd1c77285c1b7b272e04b7e324fd08b7"
|
||||
},
|
||||
"aarch64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.5.0/osv-scanner_1.5.0_darwin_arm64",
|
||||
"checksum": "c425e0ffa868bda2384d8f809e32078d59ea7d31d31971f9abc990eef948569e"
|
||||
},
|
||||
"aarch64_windows": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.5.0/osv-scanner_1.5.0_windows_arm64.exe",
|
||||
"checksum": "e76ce919f939cc03cbf2fe5b39ce34d2404c7bcd3bb81b2d334cc7ce3281b7f8"
|
||||
}
|
||||
},
|
||||
@@ -97,81 +204,105 @@
|
||||
},
|
||||
"1.4.3": {
|
||||
"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"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.3/osv-scanner_1.4.3_darwin_amd64",
|
||||
"checksum": "d2d290f14738e4f9f8faa28f78d3fa330d1fb5878e33d1fce584cd2c3577c0e3"
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"aarch64_linux_musl": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.3/osv-scanner_1.4.3_linux_arm64",
|
||||
"checksum": "c95680e0839afbc33b183b79fc16a0a9bd0270628cab2e9a81197f8ad665a946"
|
||||
},
|
||||
"aarch64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.3/osv-scanner_1.4.3_darwin_arm64",
|
||||
"checksum": "5e92128ebac68abcea294c572daed4882bc671721a5f6140c1fb22c71644accf"
|
||||
},
|
||||
"aarch64_windows": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.3/osv-scanner_1.4.3_windows_arm64.exe",
|
||||
"checksum": "fa25ffd2f5e045b9de3f7fbb7cbaa4114a98fe978813f80323591ef5313e73f2"
|
||||
}
|
||||
},
|
||||
"1.4.2": {
|
||||
"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"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.2/osv-scanner_1.4.2_darwin_amd64",
|
||||
"checksum": "5df26d494e5544088aa6c516705d418cf2693b2a27c18d7b9ee7cf043d0a87b9"
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"aarch64_linux_musl": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.2/osv-scanner_1.4.2_linux_arm64",
|
||||
"checksum": "b0f823350294e704eb647c7e556b29027c110d69e7509038efff9de3678aacf7"
|
||||
},
|
||||
"aarch64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.2/osv-scanner_1.4.2_darwin_arm64",
|
||||
"checksum": "62a4c21024dacf044d56796760d4e1a0ded7a02243d2b6c8b1b677c44df4a666"
|
||||
},
|
||||
"aarch64_windows": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.2/osv-scanner_1.4.2_windows_arm64.exe",
|
||||
"checksum": "5e42614d73d9218a4d0352270f2261e77b232cab2378dd673a50e2da5ae24d9a"
|
||||
}
|
||||
},
|
||||
"1.4.1": {
|
||||
"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"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.1/osv-scanner_1.4.1_darwin_amd64",
|
||||
"checksum": "c48bb3ec271b6dc437cb54e18441584297d4257a338f3fb0e86361bcaaf30eaf"
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"aarch64_linux_musl": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.1/osv-scanner_1.4.1_linux_arm64",
|
||||
"checksum": "5b06a68b64b0415c84239daea77543179a9e33101bb8bb5839ecebf5eadb6ce2"
|
||||
},
|
||||
"aarch64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.1/osv-scanner_1.4.1_darwin_arm64",
|
||||
"checksum": "514cfd1e5d454dee32842bb4ef278c6f3c0d383e294795cfa47b7571567a3ff9"
|
||||
},
|
||||
"aarch64_windows": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.1/osv-scanner_1.4.1_windows_arm64.exe",
|
||||
"checksum": "7cc1f6430be37901310b63928e7f8be3d3bc6bd3ed55a32c0f7a025b49d13ee5"
|
||||
}
|
||||
},
|
||||
"1.4.0": {
|
||||
"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"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.0/osv-scanner_1.4.0_darwin_amd64",
|
||||
"checksum": "d6c6d63a34b304785234fb4fad945714538e180243eee23997a20adfd8a32d30"
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"aarch64_linux_musl": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.0/osv-scanner_1.4.0_linux_arm64",
|
||||
"checksum": "30f68ff06a52de80c56cbe05f7716fe9e94275efc750147da8cd47d5a2da9389"
|
||||
},
|
||||
"aarch64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.0/osv-scanner_1.4.0_darwin_arm64",
|
||||
"checksum": "6c3cf2aa98bc12f8a4f9ebdaa29701b0f4d7147e4893aea43a4042f76510c130"
|
||||
},
|
||||
"aarch64_windows": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.4.0/osv-scanner_1.4.0_windows_arm64.exe",
|
||||
"checksum": "88ee304d9734c9b13e1b5d85e580e7108b7cd0828ab9d0707bc3af278bcd892a"
|
||||
}
|
||||
},
|
||||
@@ -180,141 +311,183 @@
|
||||
},
|
||||
"1.3.6": {
|
||||
"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"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.6/osv-scanner_1.3.6_darwin_amd64",
|
||||
"checksum": "3f75c0d4887cde3d963aa702a7e351005781a74347d52087c870e63bb9a0f44f"
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"aarch64_linux_musl": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.6/osv-scanner_1.3.6_linux_arm64",
|
||||
"checksum": "d396ff3c07b8b510e33dd2811f7ebd7f3483fe379a2c602a9ca1fbcbde1f567a"
|
||||
},
|
||||
"aarch64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.6/osv-scanner_1.3.6_darwin_arm64",
|
||||
"checksum": "0fa5d723ebca643946a1a8ce959f1206f05a9be432fcc79c023567b3b162fc0f"
|
||||
},
|
||||
"aarch64_windows": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.6/osv-scanner_1.3.6_windows_arm64.exe",
|
||||
"checksum": "b853955a79449cdedf7b29080400a630b144904d1162bf4d362fd0bcabf7c073"
|
||||
}
|
||||
},
|
||||
"1.3.5": {
|
||||
"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"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.5/osv-scanner_1.3.5_darwin_amd64",
|
||||
"checksum": "65001b8c97559ed6fb632ae3ee574f9f4b2fb05184d3049876fd56f7557fe915"
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"aarch64_linux_musl": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.5/osv-scanner_1.3.5_linux_arm64",
|
||||
"checksum": "f71396c832d727fb90e1c072d912ece0b9a5359cae5df47d54e88ef712d99e41"
|
||||
},
|
||||
"aarch64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.5/osv-scanner_1.3.5_darwin_arm64",
|
||||
"checksum": "303c1a27843fef36fd7ec06fb972e92cb120380f32dbfdc1a0af2d565103cef4"
|
||||
},
|
||||
"aarch64_windows": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.5/osv-scanner_1.3.5_windows_arm64.exe",
|
||||
"checksum": "47ad6d7a48f64c3dce8011ff864129f81f0257d2e2d6fe5e309361b19f96a343"
|
||||
}
|
||||
},
|
||||
"1.3.4": {
|
||||
"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"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.4/osv-scanner_1.3.4_darwin_amd64",
|
||||
"checksum": "32e343998d892baf309b76b131f2b8cfb6b58a589bba52512d6538db052ba656"
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"aarch64_linux_musl": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.4/osv-scanner_1.3.4_linux_arm64",
|
||||
"checksum": "7e12aedda030c0a9bef4b5efcd2cdde5fedcc657b050ae48b97bb43b9e5e773c"
|
||||
},
|
||||
"aarch64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.4/osv-scanner_1.3.4_darwin_arm64",
|
||||
"checksum": "0edc0d9769a1ee69607a085669bfdbd86c5dcd1b5550439820d6ef148fa9d555"
|
||||
},
|
||||
"aarch64_windows": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.4/osv-scanner_1.3.4_windows_arm64.exe",
|
||||
"checksum": "f330f117590693599d526d1fa8acc6ba09ab099d4fde18f078bd3084d37a7639"
|
||||
}
|
||||
},
|
||||
"1.3.3": {
|
||||
"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"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.3/osv-scanner_1.3.3_darwin_amd64",
|
||||
"checksum": "44eed376ea2e59238c264ace637e20e78e3bc40d648eeee270d8ce7a159e6e04"
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"aarch64_linux_musl": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.3/osv-scanner_1.3.3_linux_arm64",
|
||||
"checksum": "aaec809ae95223a9142671402d9b1c99d529557178b5966958f93e842a92dbdd"
|
||||
},
|
||||
"aarch64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.3/osv-scanner_1.3.3_darwin_arm64",
|
||||
"checksum": "ab60e7e651c94399e844a44ddca36e7b285727e24ea3d8434872a095789eab01"
|
||||
},
|
||||
"aarch64_windows": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.3/osv-scanner_1.3.3_windows_arm64.exe",
|
||||
"checksum": "1f2e1c650896cfbf3c7e9bba5a3a9328448f02fff0602ec7cb26e06e165b9021"
|
||||
}
|
||||
},
|
||||
"1.3.2": {
|
||||
"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"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.2/osv-scanner_1.3.2_darwin_amd64",
|
||||
"checksum": "9ab2c6f8288192d35fcbbe23e26cc216287c0214a5e61920ed3e4c25402c0690"
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"aarch64_linux_musl": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.2/osv-scanner_1.3.2_linux_arm64",
|
||||
"checksum": "d0ad9a973eda4ec8a53272ae3c7248071c93e773c9c4c1d6e78ff67d342ded66"
|
||||
},
|
||||
"aarch64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.2/osv-scanner_1.3.2_darwin_arm64",
|
||||
"checksum": "719743a2e90369970bbcb3161af7cfb9fd8c3b89b03c039a0034b6b5213530dc"
|
||||
},
|
||||
"aarch64_windows": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.2/osv-scanner_1.3.2_windows_arm64.exe",
|
||||
"checksum": "ac99665986e3f3d2df1c8a243b3056abd9dc54e41fc8f14fd8f6ef0b1ba4b5db"
|
||||
}
|
||||
},
|
||||
"1.3.1": {
|
||||
"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"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.1/osv-scanner_1.3.1_darwin_amd64",
|
||||
"checksum": "34c093f430eed512ec62b708d070e4ca2b24605da7d23b8e855523fcee057bf5"
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"aarch64_linux_musl": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.1/osv-scanner_1.3.1_linux_arm64",
|
||||
"checksum": "4e3931f461d5177e98d870f25d29d480481dd0f7358936d573f9a28791bd9a7c"
|
||||
},
|
||||
"aarch64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.1/osv-scanner_1.3.1_darwin_arm64",
|
||||
"checksum": "ca33dabf95320430a2026d2ef074d3297e9935f0d740f9559d132ed72f23a5df"
|
||||
},
|
||||
"aarch64_windows": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.1/osv-scanner_1.3.1_windows_arm64.exe",
|
||||
"checksum": "123174ca0ec605493581bcac61f6a226d239001d401ee047a4e9f69e27e16843"
|
||||
}
|
||||
},
|
||||
"1.3.0": {
|
||||
"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"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.0/osv-scanner_1.3.0_darwin_amd64",
|
||||
"checksum": "52df112d157730727e261608aac34c4073904e2e670f30623cec8b699855f118"
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"aarch64_linux_musl": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.0/osv-scanner_1.3.0_linux_arm64",
|
||||
"checksum": "d34f97fc73e7ca37d3ea845bcaceb49604b344e94139127e3428c52c5a1353ee"
|
||||
},
|
||||
"aarch64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.0/osv-scanner_1.3.0_darwin_arm64",
|
||||
"checksum": "ca0ccce2b22766a6c2b139c758fb20268edb06063dbfa3a7ef76a9930ad90305"
|
||||
},
|
||||
"aarch64_windows": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.3.0/osv-scanner_1.3.0_windows_arm64.exe",
|
||||
"checksum": "0af2954893d5b3297466baff4827ffb6217a71ceb6a65fdce3e161ee40cc3445"
|
||||
}
|
||||
},
|
||||
@@ -323,21 +496,27 @@
|
||||
},
|
||||
"1.2.0": {
|
||||
"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"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.2.0/osv-scanner_1.2.0_darwin_amd64",
|
||||
"checksum": "23497bd395cdde5a6dbf5a32468853e12e99c0a09c93873522e8d3395a33634d"
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"aarch64_linux_musl": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.2.0/osv-scanner_1.2.0_linux_arm64",
|
||||
"checksum": "2e0c517250d80593de2e28edd705222a6006d91feefd0aae63895f5f32f06385"
|
||||
},
|
||||
"aarch64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.2.0/osv-scanner_1.2.0_darwin_arm64",
|
||||
"checksum": "1b00100ecc5ec31b79001ae9675850d72449215984d6613d712e051f105ed2d4"
|
||||
},
|
||||
"aarch64_windows": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.2.0/osv-scanner_1.2.0_windows_arm64.exe",
|
||||
"checksum": "95e378acdc3ad65f719e2b3da0740efc4a95f7f76ace4aad3b4041fe38c0c92d"
|
||||
}
|
||||
},
|
||||
@@ -346,21 +525,27 @@
|
||||
},
|
||||
"1.1.0": {
|
||||
"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"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.1.0/osv-scanner_1.1.0_darwin_amd64",
|
||||
"checksum": "fdb19c0f3b4bec887940f73de49b524cebe93e8e5acd74123eb62f90b5a0451f"
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"aarch64_linux_musl": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.1.0/osv-scanner_1.1.0_linux_arm64",
|
||||
"checksum": "fed5a1109f45410d8bcecba852aab48f1812b5254e3cfdd2950ef9330e9e29c2"
|
||||
},
|
||||
"aarch64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.1.0/osv-scanner_1.1.0_darwin_arm64",
|
||||
"checksum": "65fa9c435535fd58cc1fd6878a09009c44d608c749c41b8f7a7e4727cda0e6ee"
|
||||
},
|
||||
"aarch64_windows": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.1.0/osv-scanner_1.1.0_windows_arm64.exe",
|
||||
"checksum": "e01ae91abe3c5f34da01b7a90741663bbc606f85030520946169965b64bd6c5c"
|
||||
}
|
||||
},
|
||||
@@ -369,52 +554,67 @@
|
||||
},
|
||||
"1.0.2": {
|
||||
"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"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.0.2/osv-scanner_1.0.2_darwin_amd64",
|
||||
"checksum": "0e64408697ff1e80f4e0866e890d1dc842dd8316296d7d2659db23c200bf0f3b"
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"aarch64_linux_musl": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.0.2/osv-scanner_1.0.2_linux_arm64",
|
||||
"checksum": "35286ae9ef2c1b24a5900398f1039a268d602279e82ff03695a24e0979f2dc7d"
|
||||
},
|
||||
"aarch64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.0.2/osv-scanner_1.0.2_darwin_arm64",
|
||||
"checksum": "9f3bf97708adb3cd25f609519440ec6b675f8b4c6ca0a71e4de68967bc3bee3e"
|
||||
},
|
||||
"aarch64_windows": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.0.2/osv-scanner_1.0.2_windows_arm64.exe",
|
||||
"checksum": "d04936bff72361efe97cb03f8badb53d743cee2a3664900ca928be9649a0bd6a"
|
||||
}
|
||||
},
|
||||
"1.0.1": {
|
||||
"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"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.0.1/osv-scanner_1.0.1_darwin_amd64",
|
||||
"checksum": "52e3c0082ced8f70558eb9776744585d25bca08f0aeddd93d854344e133bfe5e"
|
||||
},
|
||||
"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"
|
||||
},
|
||||
"aarch64_linux_musl": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.0.1/osv-scanner_1.0.1_linux_arm64",
|
||||
"checksum": "7b02b7330b255c25e91fe1fce85ab9461b925a92894fa82c17cbce1e7ce017c2"
|
||||
},
|
||||
"aarch64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.0.1/osv-scanner_1.0.1_darwin_arm64",
|
||||
"checksum": "ff87ff3add4062bfc1a0c5894df9d256cca4a6c9189a2a778c92c932f667de91"
|
||||
},
|
||||
"aarch64_windows": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.0.1/osv-scanner_1.0.1_windows_arm64.exe",
|
||||
"checksum": "f1bebaad4fb464da0387e4e6bb7245fbb80bd97b9e22cec70bd1291e5319f74b"
|
||||
}
|
||||
},
|
||||
"1.0.0": {
|
||||
"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"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"url": "https://github.com/google/osv-scanner/releases/download/v1.0.0/osv-scanner_1.0.0_darwin_amd64",
|
||||
"checksum": "267b672fd8f2ad422b9fd55fcb319ee04b38d605500b95e8343fe6f65854222c"
|
||||
},
|
||||
"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"
|
||||
}
|
||||
}
|
||||
|
||||
1
manifests/parse-changelog.json
generated
1
manifests/parse-changelog.json
generated
@@ -1,6 +1,7 @@
|
||||
{
|
||||
"rust_crate": "parse-changelog",
|
||||
"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": {
|
||||
"version": "0.6.8"
|
||||
},
|
||||
|
||||
53
manifests/protoc.json
generated
53
manifests/protoc.json
generated
@@ -1,14 +1,37 @@
|
||||
{
|
||||
"rust_crate": null,
|
||||
"template": null,
|
||||
"license_markdown": "[BSD-3-Clause](https://github.com/protocolbuffers/protobuf/blob/HEAD/LICENSE)",
|
||||
"latest": {
|
||||
"version": "3.27.0"
|
||||
"version": "3.27.1"
|
||||
},
|
||||
"3": {
|
||||
"version": "3.27.0"
|
||||
"version": "3.27.1"
|
||||
},
|
||||
"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": {
|
||||
"x86_64_linux_gnu": {
|
||||
@@ -397,7 +420,29 @@
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
"x86_64_linux_gnu": {
|
||||
|
||||
59
manifests/rclone.json
generated
Normal file
59
manifests/rclone.json
generated
Normal file
@@ -0,0 +1,59 @@
|
||||
{
|
||||
"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.66.0"
|
||||
},
|
||||
"1": {
|
||||
"version": "1.66.0"
|
||||
},
|
||||
"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"
|
||||
}
|
||||
}
|
||||
}
|
||||
1
manifests/sccache.json
generated
1
manifests/sccache.json
generated
@@ -22,6 +22,7 @@
|
||||
"bin": "sccache-v${version}-aarch64-apple-darwin/sccache"
|
||||
}
|
||||
},
|
||||
"license_markdown": "[Apache-2.0](https://github.com/mozilla/sccache/blob/main/LICENSE)",
|
||||
"latest": {
|
||||
"version": "0.8.1"
|
||||
},
|
||||
|
||||
1
manifests/shellcheck.json
generated
1
manifests/shellcheck.json
generated
@@ -18,6 +18,7 @@
|
||||
"bin": "shellcheck-v${version}/shellcheck"
|
||||
}
|
||||
},
|
||||
"license_markdown": "[GPL-3.0](https://github.com/koalaman/shellcheck/blob/master/LICENSE)",
|
||||
"latest": {
|
||||
"version": "0.10.0"
|
||||
},
|
||||
|
||||
1
manifests/shfmt.json
generated
1
manifests/shfmt.json
generated
@@ -17,6 +17,7 @@
|
||||
"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": {
|
||||
"version": "3.8.0"
|
||||
},
|
||||
|
||||
45
manifests/syft.json
generated
45
manifests/syft.json
generated
@@ -22,11 +22,52 @@
|
||||
"bin": "syft"
|
||||
}
|
||||
},
|
||||
"license_markdown": "[Apache-2.0](https://github.com/anchore/syft/blob/main/LICENSE)",
|
||||
"latest": {
|
||||
"version": "1.4.1"
|
||||
"version": "1.6.0"
|
||||
},
|
||||
"1": {
|
||||
"version": "1.4.1"
|
||||
"version": "1.6.0"
|
||||
},
|
||||
"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": {
|
||||
"version": "1.4.1"
|
||||
|
||||
78
manifests/typos.json
generated
78
manifests/typos.json
generated
@@ -14,11 +14,85 @@
|
||||
"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": {
|
||||
"version": "1.21.0"
|
||||
"version": "1.22.4"
|
||||
},
|
||||
"1": {
|
||||
"version": "1.21.0"
|
||||
"version": "1.22.4"
|
||||
},
|
||||
"1.22": {
|
||||
"version": "1.22.4"
|
||||
},
|
||||
"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": {
|
||||
"version": "1.21.0"
|
||||
|
||||
32
manifests/wait-for-them.json
generated
Normal file
32
manifests/wait-for-them.json
generated
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
1
manifests/wasm-bindgen.json
generated
1
manifests/wasm-bindgen.json
generated
@@ -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": {
|
||||
"version": "0.2.92"
|
||||
},
|
||||
|
||||
1
manifests/wasm-pack.json
generated
1
manifests/wasm-pack.json
generated
@@ -18,6 +18,7 @@
|
||||
"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": {
|
||||
"version": "0.12.1"
|
||||
},
|
||||
|
||||
1
manifests/wasmtime.json
generated
1
manifests/wasmtime.json
generated
@@ -22,6 +22,7 @@
|
||||
"bin": "wasmtime-v${version}-aarch64-macos/wasmtime"
|
||||
}
|
||||
},
|
||||
"license_markdown": "[Apache-2.0 WITH LLVM-exception](https://github.com/bytecodealliance/wasmtime/blob/main/LICENSE)",
|
||||
"latest": {
|
||||
"version": "21.0.1"
|
||||
},
|
||||
|
||||
1
manifests/xbuild.json
generated
1
manifests/xbuild.json
generated
@@ -14,6 +14,7 @@
|
||||
"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": {
|
||||
"version": "0.2.0"
|
||||
},
|
||||
|
||||
49
manifests/xh.json
generated
Normal file
49
manifests/xh.json
generated
Normal 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
1
manifests/zola.json
generated
@@ -14,6 +14,7 @@
|
||||
"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": {
|
||||
"version": "0.18.0"
|
||||
},
|
||||
|
||||
@@ -8,6 +8,7 @@ cd "$(dirname "$0")"/../..
|
||||
glibc_pre_2_34_incompat=(
|
||||
cargo-cyclonedx
|
||||
cargo-spellcheck
|
||||
wait-for-them
|
||||
xbuild
|
||||
)
|
||||
glibc_pre_2_31_incompat=(
|
||||
@@ -26,6 +27,7 @@ glibc_pre_2_27_incompat=(
|
||||
)
|
||||
musl_incompat=(
|
||||
"${glibc_pre_2_27_incompat[@]}"
|
||||
deepsource
|
||||
)
|
||||
|
||||
incompat_tools=()
|
||||
@@ -128,17 +130,14 @@ case "${host_os}" in
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
# cargo-binstall requires cargo
|
||||
if type -P cargo &>/dev/null; then
|
||||
# cargo-watch/watchexec-cli is supported by cargo-binstall (through quickinstall)
|
||||
case "${version}" in
|
||||
latest) tools+=(cargo-watch watchexec-cli nextest) ;;
|
||||
major.minor.patch) tools+=(cargo-watch@8.1.1 watchexec-cli@1.20.5 nextest@0.9.57) ;;
|
||||
major.minor) tools+=(cargo-watch@8.1 watchexec-cli@1.20 nextest@0.9) ;;
|
||||
major) tools+=(cargo-watch@8 watchexec-cli@1) ;;
|
||||
*) exit 1 ;;
|
||||
esac
|
||||
fi
|
||||
# cargo-watch/watchexec-cli is supported by cargo-binstall (through quickinstall)
|
||||
case "${version}" in
|
||||
latest) tools+=(cargo-watch watchexec-cli) ;;
|
||||
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) ;;
|
||||
major) tools+=(cargo-watch@8 watchexec-cli@1) ;;
|
||||
*) exit 1 ;;
|
||||
esac
|
||||
|
||||
# sort and dedup
|
||||
IFS=$'\n'
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
[package]
|
||||
name = "install-action-internal-codegen"
|
||||
edition = "2021"
|
||||
default-run = "generate-manifest"
|
||||
|
||||
[dependencies]
|
||||
anyhow = "1"
|
||||
@@ -12,6 +13,7 @@ serde = "1"
|
||||
serde_derive = "1"
|
||||
serde_json = "1"
|
||||
sha2 = "0.10"
|
||||
spdx = "0.10"
|
||||
tar = "0.4"
|
||||
toml_edit = { version = "0.22", default-features = false, features = ["parse", "serde"] }
|
||||
# TODO: call curl command instead of using ureq?
|
||||
@@ -19,3 +21,15 @@ ureq = { version = "2", features = ["json"] }
|
||||
|
||||
[lints]
|
||||
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
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
{
|
||||
"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",
|
||||
"bin": "${package}${exe}",
|
||||
"platform": {
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
{
|
||||
"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",
|
||||
"rust_crate": "${package}",
|
||||
"asset_name": "${package}-${rust_target}-v${version}.tgz",
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{
|
||||
"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",
|
||||
"rust_crate": "${package}",
|
||||
"asset_name": "${package}-${rust_target}.zip",
|
||||
|
||||
17
tools/codegen/base/cargo-nextest.json
Normal file
17
tools/codegen/base/cargo-nextest.json
Normal 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": {}
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
"repository": "https://github.com/orium/cargo-rdme",
|
||||
"tag_prefix": "v",
|
||||
"rust_crate": "${package}",
|
||||
"broken": ["1.4.3"],
|
||||
"broken": ["1.4.3", "1.4.4"],
|
||||
"platform": {
|
||||
"x86_64_linux_musl": {
|
||||
"asset_name": "${package}_v${version}_${rust_target}.tar.bz2"
|
||||
|
||||
13
tools/codegen/base/cargo-semver-checks.json
Normal file
13
tools/codegen/base/cargo-semver-checks.json
Normal 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": {}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
{
|
||||
"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",
|
||||
"rust_crate": "${package}",
|
||||
"asset_name": "${package}-${rust_target}.tar.gz",
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{
|
||||
"repository": "https://github.com/drahnr/cargo-spellcheck",
|
||||
"license_markdown": "[LGPLv2.1](https://github.com/drahnr/cargo-spellcheck/blob/master/LICENSE-LGPL)",
|
||||
"tag_prefix": "v",
|
||||
"rust_crate": "${package}",
|
||||
"asset_name": "${package}-v${version}-${rust_target}",
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{
|
||||
"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",
|
||||
"rust_crate": "${package}",
|
||||
"asset_name": "${package}-v${version}-${rust_target}.tar.gz",
|
||||
|
||||
20
tools/codegen/base/cargo-zigbuild.json
Normal file
20
tools/codegen/base/cargo-zigbuild.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
22
tools/codegen/base/deepsource.json
Normal file
22
tools/codegen/base/deepsource.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
22
tools/codegen/base/earthly.json
Normal file
22
tools/codegen/base/earthly.json
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
{
|
||||
"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",
|
||||
"rust_crate": "${package}",
|
||||
"asset_name": "${package}-${rust_target}.tar.bz2",
|
||||
|
||||
16
tools/codegen/base/jaq.json
Normal file
16
tools/codegen/base/jaq.json
Normal 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": {}
|
||||
}
|
||||
}
|
||||
@@ -4,22 +4,22 @@
|
||||
"version_range": ">= 1.0.0",
|
||||
"platform": {
|
||||
"x86_64_linux_musl": {
|
||||
"asset_name": "${package}_${version}_linux_amd64"
|
||||
"asset_name": "${package}_linux_amd64"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"asset_name": "${package}_${version}_darwin_amd64"
|
||||
"asset_name": "${package}_darwin_amd64"
|
||||
},
|
||||
"x86_64_windows": {
|
||||
"asset_name": "${package}_${version}_windows_amd64${exe}"
|
||||
"asset_name": "${package}_windows_amd64${exe}"
|
||||
},
|
||||
"aarch64_linux_musl": {
|
||||
"asset_name": "${package}_${version}_linux_arm64"
|
||||
"asset_name": "${package}_linux_arm64"
|
||||
},
|
||||
"aarch64_macos": {
|
||||
"asset_name": "${package}_${version}_darwin_arm64"
|
||||
"asset_name": "${package}_darwin_arm64"
|
||||
},
|
||||
"aarch64_windows": {
|
||||
"asset_name": "${package}_${version}_windows_arm64${exe}"
|
||||
"asset_name": "${package}_windows_arm64${exe}"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{
|
||||
"repository": "https://github.com/protocolbuffers/protobuf",
|
||||
"license_markdown": "[BSD-3-Clause](https://github.com/protocolbuffers/protobuf/blob/HEAD/LICENSE)",
|
||||
"tag_prefix": "v",
|
||||
"default_major_version": "3",
|
||||
"platform": {
|
||||
|
||||
31
tools/codegen/base/rclone.json
Normal file
31
tools/codegen/base/rclone.json
Normal 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}"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
{
|
||||
"repository": "https://github.com/koalaman/shellcheck",
|
||||
"website": "https://www.shellcheck.net",
|
||||
"tag_prefix": "v",
|
||||
"bin": "${package}-v${version}/${package}${exe}",
|
||||
"platform": {
|
||||
|
||||
13
tools/codegen/base/wait-for-them.json
Normal file
13
tools/codegen/base/wait-for-them.json
Normal 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": {}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
{
|
||||
"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",
|
||||
"rust_crate": "${package}",
|
||||
"asset_name": "${package}-${rust_target_os}-x64${exe}",
|
||||
|
||||
17
tools/codegen/base/xh.json
Normal file
17
tools/codegen/base/xh.json
Normal 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
388
tools/codegen/src/lib.rs
Normal 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",
|
||||
_ => "",
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,26 +1,23 @@
|
||||
// SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
|
||||
use std::{
|
||||
cmp::{self, Reverse},
|
||||
cmp::Reverse,
|
||||
collections::{BTreeMap, BTreeSet},
|
||||
env,
|
||||
ffi::OsStr,
|
||||
fmt,
|
||||
io::Read,
|
||||
path::{Path, PathBuf},
|
||||
slice,
|
||||
str::FromStr,
|
||||
path::Path,
|
||||
time::Duration,
|
||||
};
|
||||
|
||||
use anyhow::{bail, Context as _, Result};
|
||||
use fs_err as fs;
|
||||
use serde::{
|
||||
de::{self, Deserialize, Deserializer},
|
||||
ser::{Serialize, Serializer},
|
||||
use install_action_internal_codegen::{
|
||||
workspace_root, BaseManifest, HostPlatform, Manifest, ManifestDownloadInfo, ManifestRef,
|
||||
ManifestTemplate, ManifestTemplateDownloadInfo, Manifests, Signing, SigningKind, Version,
|
||||
};
|
||||
use serde_derive::{Deserialize, Serialize};
|
||||
use sha2::{Digest, Sha256};
|
||||
use spdx::expression::{ExprNode, ExpressionReq, Operator};
|
||||
|
||||
fn main() -> Result<()> {
|
||||
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(download_cache_dir)?;
|
||||
|
||||
eprintln!("download cache: {}", download_cache_dir.display());
|
||||
|
||||
let mut base_info: BaseManifest = serde_json::from_slice(&fs::read(
|
||||
workspace_root.join("tools/codegen/base").join(format!("{package}.json")),
|
||||
)?)?;
|
||||
@@ -46,7 +45,12 @@ fn main() -> Result<()> {
|
||||
let repo = base_info
|
||||
.repository
|
||||
.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");
|
||||
let mut releases: github::Releases = vec![];
|
||||
@@ -82,6 +86,7 @@ fn main() -> Result<()> {
|
||||
.collect();
|
||||
|
||||
let mut crates_io_info = None;
|
||||
let mut crates_io_version_detail = None;
|
||||
base_info.rust_crate = base_info
|
||||
.rust_crate
|
||||
.as_ref()
|
||||
@@ -89,10 +94,29 @@ fn main() -> Result<()> {
|
||||
.transpose()?;
|
||||
if let Some(crate_name) = &base_info.rust_crate {
|
||||
eprintln!("downloading crate info from https://crates.io/api/v1/crates/{crate_name}");
|
||||
crates_io_info = Some(
|
||||
download(&format!("https://crates.io/api/v1/crates/{crate_name}"))?
|
||||
.into_json::<crates_io::Crate>()?,
|
||||
let info = download(&format!("https://crates.io/api/v1/crates/{crate_name}"))?
|
||||
.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();
|
||||
@@ -130,6 +154,44 @@ fn main() -> Result<()> {
|
||||
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) {
|
||||
_ if latest_only => {
|
||||
let req = format!("={}", releases.first_key_value().unwrap().0 .0).parse()?;
|
||||
@@ -343,15 +405,17 @@ fn main() -> Result<()> {
|
||||
}
|
||||
// compact manifest
|
||||
// TODO: do this before download binaries
|
||||
if download_info.contains_key(&HostPlatform::x86_64_linux_gnu)
|
||||
&& download_info.contains_key(&HostPlatform::x86_64_linux_musl)
|
||||
{
|
||||
download_info.remove(&HostPlatform::x86_64_linux_gnu);
|
||||
}
|
||||
if download_info.contains_key(&HostPlatform::aarch64_linux_gnu)
|
||||
&& download_info.contains_key(&HostPlatform::aarch64_linux_musl)
|
||||
{
|
||||
download_info.remove(&HostPlatform::aarch64_linux_gnu);
|
||||
if !base_info.prefer_linux_gnu {
|
||||
if download_info.contains_key(&HostPlatform::x86_64_linux_gnu)
|
||||
&& download_info.contains_key(&HostPlatform::x86_64_linux_musl)
|
||||
{
|
||||
download_info.remove(&HostPlatform::x86_64_linux_gnu);
|
||||
}
|
||||
if download_info.contains_key(&HostPlatform::aarch64_linux_gnu)
|
||||
&& download_info.contains_key(&HostPlatform::aarch64_linux_musl)
|
||||
{
|
||||
download_info.remove(&HostPlatform::aarch64_linux_gnu);
|
||||
}
|
||||
}
|
||||
if download_info.contains_key(&HostPlatform::x86_64_macos)
|
||||
&& download_info.contains_key(&HostPlatform::aarch64_macos)
|
||||
@@ -365,7 +429,22 @@ fn main() -> Result<()> {
|
||||
if semver_version.pre.is_empty() {
|
||||
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 {
|
||||
eprintln!(
|
||||
@@ -432,15 +511,17 @@ fn main() -> Result<()> {
|
||||
if latest_manifest.download_info.contains_key(&p) {
|
||||
continue;
|
||||
}
|
||||
if p == HostPlatform::x86_64_linux_gnu
|
||||
&& latest_manifest.download_info.contains_key(&HostPlatform::x86_64_linux_musl)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if p == HostPlatform::aarch64_linux_gnu
|
||||
&& latest_manifest.download_info.contains_key(&HostPlatform::aarch64_linux_musl)
|
||||
{
|
||||
continue;
|
||||
if !base_info.prefer_linux_gnu {
|
||||
if p == HostPlatform::x86_64_linux_gnu
|
||||
&& latest_manifest.download_info.contains_key(&HostPlatform::x86_64_linux_musl)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if p == HostPlatform::aarch64_linux_gnu
|
||||
&& latest_manifest.download_info.contains_key(&HostPlatform::aarch64_linux_musl)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
bail!(
|
||||
"platform list in base manifest for {package} contains {p:?}, \
|
||||
@@ -488,13 +569,6 @@ fn main() -> Result<()> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn workspace_root() -> PathBuf {
|
||||
let mut dir = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
|
||||
dir.pop(); // codegen
|
||||
dir.pop(); // tools
|
||||
dir
|
||||
}
|
||||
|
||||
fn replace_vars(
|
||||
s: &str,
|
||||
package: &str,
|
||||
@@ -561,6 +635,35 @@ fn download_github(url: &str) -> Result<ureq::Response> {
|
||||
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.
|
||||
#[allow(clippy::missing_panics_doc)]
|
||||
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())
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
struct Version {
|
||||
major: Option<u64>,
|
||||
minor: Option<u64>,
|
||||
patch: Option<u64>,
|
||||
pre: semver::Prerelease,
|
||||
build: semver::BuildMetadata,
|
||||
#[must_use]
|
||||
fn create_github_raw_link(repository: &String, branch: &String, filename: &String) -> String {
|
||||
format!("https://raw.githubusercontent.com/{repository}/{branch}/{filename}")
|
||||
}
|
||||
|
||||
impl Version {
|
||||
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]
|
||||
fn create_github_link(repository: &String, branch: &String, filename: &String) -> String {
|
||||
format!("https://github.com/{repository}/blob/{branch}/{filename}")
|
||||
}
|
||||
#[must_use]
|
||||
fn get_license_markdown(spdx_expr: &str, repo: &String, default_branch: &String) -> Option<String> {
|
||||
// TODO: use https://docs.rs/spdx/latest/spdx/expression/struct.Expression.html#method.canonicalize ?
|
||||
let expr = spdx::Expression::parse_mode(spdx_expr, spdx::ParseMode::LAX).unwrap();
|
||||
|
||||
let mut op = None;
|
||||
let mut license_ids: Vec<(&spdx::LicenseId, Option<&spdx::ExceptionId>)> = vec![];
|
||||
|
||||
for node in expr.iter() {
|
||||
match node {
|
||||
ExprNode::Req(ExpressionReq {
|
||||
req:
|
||||
spdx::LicenseReq {
|
||||
license: spdx::LicenseItem::Spdx { id, or_later },
|
||||
exception,
|
||||
..
|
||||
},
|
||||
..
|
||||
}) => {
|
||||
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");
|
||||
}
|
||||
op = Some(current_op);
|
||||
}
|
||||
ExprNode::Req(_) => {}
|
||||
}
|
||||
}
|
||||
fn latest() -> Self {
|
||||
Self {
|
||||
major: None,
|
||||
minor: None,
|
||||
patch: None,
|
||||
pre: semver::Prerelease::default(),
|
||||
build: semver::BuildMetadata::default(),
|
||||
}
|
||||
}
|
||||
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 {
|
||||
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(),
|
||||
|
||||
match license_ids.len() {
|
||||
0 => panic!("No licenses"),
|
||||
1 => {
|
||||
let (license_id, exception_id) = license_ids.first().unwrap();
|
||||
let license_name = if let Some(exception_id) = exception_id {
|
||||
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})"));
|
||||
}
|
||||
}
|
||||
}
|
||||
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)]
|
||||
struct Manifests {
|
||||
rust_crate: Option<String>,
|
||||
template: Option<ManifestTemplate>,
|
||||
#[serde(flatten)]
|
||||
map: BTreeMap<Reverse<Version>, ManifestRef>,
|
||||
}
|
||||
|
||||
#[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>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
struct ManifestDownloadInfo {
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
url: Option<String>,
|
||||
checksum: String,
|
||||
/// Path to binaries in archive. Default to `${tool}${exe}`.
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
bin: Option<StringOrArray>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
struct ManifestTemplate {
|
||||
#[serde(flatten)]
|
||||
download_info: BTreeMap<HostPlatform, ManifestTemplateDownloadInfo>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
struct ManifestTemplateDownloadInfo {
|
||||
url: String,
|
||||
/// Path to binaries in archive. Default to `${tool}${exe}`.
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
bin: Option<StringOrArray>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
#[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 {
|
||||
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}"
|
||||
);
|
||||
len => {
|
||||
let mut license_markdowns: Vec<String> = vec![];
|
||||
for (license_id, exception_id) in &license_ids {
|
||||
let name = license_id.name.split('-').next().unwrap().to_ascii_uppercase();
|
||||
let filename = format!("LICENSE-{name}");
|
||||
let url = create_github_raw_link(repo, default_branch, &filename);
|
||||
let license_name = if let Some(exception_id) = exception_id {
|
||||
format!("{} WITH {}", license_id.name, exception_id.name)
|
||||
} 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})"));
|
||||
}
|
||||
}
|
||||
if license_markdowns.is_empty() {
|
||||
panic!("Unable to find any license files in the repo for licenses {license_ids:?}");
|
||||
}
|
||||
if license_markdowns.len() != len {
|
||||
panic!("Unable to find license files in the repo for all licenses {license_ids:?}; found {license_markdowns:?}");
|
||||
}
|
||||
match op {
|
||||
None => panic!("op expected"),
|
||||
Some(Operator::Or) => {
|
||||
return Some(license_markdowns.join(" OR "));
|
||||
}
|
||||
Some(Operator::And) => {
|
||||
return Some(license_markdowns.join(" AND "));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[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",
|
||||
_ => "",
|
||||
}
|
||||
}
|
||||
None
|
||||
}
|
||||
|
||||
mod github {
|
||||
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
|
||||
pub(crate) type Releases = Vec<Release>;
|
||||
|
||||
@@ -948,6 +838,8 @@ mod crates_io {
|
||||
#[derive(Debug, Deserialize)]
|
||||
pub(crate) struct Crate {
|
||||
pub(crate) versions: Vec<Version>,
|
||||
#[serde(rename = "crate")]
|
||||
pub(crate) crate_: CrateMetadata,
|
||||
}
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
@@ -957,6 +849,24 @@ mod crates_io {
|
||||
pub(crate) num: semver::Version,
|
||||
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 {
|
||||
|
||||
218
tools/codegen/src/tools-markdown.rs
Normal file
218
tools/codegen/src/tools-markdown.rs
Normal 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"
|
||||
.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(())
|
||||
}
|
||||
}
|
||||
@@ -102,8 +102,10 @@ tools=()
|
||||
for tool in tools/codegen/base/*.json; do
|
||||
tools+=("$(basename "${tool%.*}")")
|
||||
done
|
||||
# Alias
|
||||
tools+=(nextest)
|
||||
# Not manifest-based
|
||||
tools+=(valgrind nextest cargo-nextest)
|
||||
tools+=(valgrind)
|
||||
|
||||
if [[ -n "${tags}" ]]; then
|
||||
# Create a release commit.
|
||||
|
||||
171
tools/tidy.sh
171
tools/tidy.sh
@@ -16,7 +16,7 @@ trap 's=$?; echo >&2 "$0: error on line "${LINENO}": ${BASH_COMMAND}"; exit ${s}
|
||||
# - shellcheck
|
||||
# - npm
|
||||
# - jq
|
||||
# - python
|
||||
# - python 3
|
||||
# - rustup (if Rust code exists)
|
||||
# - clang-format (if C/C++ code exists)
|
||||
#
|
||||
@@ -40,6 +40,19 @@ check_config() {
|
||||
error "could not found $1 in the repository root"
|
||||
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() {
|
||||
echo >&2 "info: $*"
|
||||
}
|
||||
@@ -56,6 +69,27 @@ venv() {
|
||||
shift
|
||||
"${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
|
||||
cat <<EOF
|
||||
@@ -68,24 +102,23 @@ fi
|
||||
# Rust (if exists)
|
||||
if [[ -n "$(git ls-files '*.rs')" ]]; then
|
||||
info "checking Rust code style"
|
||||
check_install cargo jq python3
|
||||
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
|
||||
# defined inside macros, so run rustfmt directly.
|
||||
# We need to use nightly rustfmt because we use the unstable formatting options of rustfmt.
|
||||
rustc_version=$(rustc -vV | grep '^release:' | cut -d' ' -f2)
|
||||
if [[ "${rustc_version}" == *"nightly"* ]] || [[ "${rustc_version}" == *"dev"* ]]; then
|
||||
rustup component add rustfmt &>/dev/null
|
||||
echo "+ rustfmt \$(git ls-files '*.rs')"
|
||||
info "running \`rustfmt \$(git ls-files '*.rs')\`"
|
||||
rustfmt $(git ls-files '*.rs')
|
||||
else
|
||||
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')
|
||||
fi
|
||||
check_diff $(git ls-files '*.rs')
|
||||
else
|
||||
error "'rustup' is not installed; skipped Rust code style check"
|
||||
fi
|
||||
cast_without_turbofish=$(grep -n -E '\.cast\(\)' $(git ls-files '*.rs') || true)
|
||||
if [[ -n "${cast_without_turbofish}" ]]; then
|
||||
@@ -122,11 +155,12 @@ if [[ -n "$(git ls-files '*.rs')" ]]; then
|
||||
binaries=''
|
||||
metadata=$(cargo metadata --format-version=1 --no-deps)
|
||||
has_public_crate=''
|
||||
venv_install_yq
|
||||
for id in $(jq <<<"${metadata}" '.workspace_members[]'); do
|
||||
pkg=$(jq <<<"${metadata}" ".packages[] | select(.id == ${id})")
|
||||
publish=$(jq <<<"${pkg}" -r '.publish')
|
||||
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'"
|
||||
fi
|
||||
# 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')
|
||||
# Publishing is unrestricted if null, and forbidden if an empty array.
|
||||
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 \"/.*\""
|
||||
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"
|
||||
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"
|
||||
fi
|
||||
fi
|
||||
@@ -196,12 +231,10 @@ fi
|
||||
if [[ -n "$(git ls-files '*.c' '*.h' '*.cpp' '*.hpp')" ]]; then
|
||||
info "checking C/C++ code style"
|
||||
check_config .clang-format
|
||||
if type -P clang-format &>/dev/null; then
|
||||
echo "+ clang-format -i \$(git ls-files '*.c' '*.h' '*.cpp' '*.hpp')"
|
||||
if check_install clang-format; then
|
||||
info "running \`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')
|
||||
else
|
||||
error "'clang-format' is not installed; skipped C/C++ code style check"
|
||||
fi
|
||||
elif [[ -e .clang-format ]]; then
|
||||
error ".clang-format is unused"
|
||||
@@ -211,64 +244,39 @@ fi
|
||||
if [[ -n "$(git ls-files '*.yml' '*.yaml' '*.js' '*.json')" ]]; then
|
||||
info "checking YAML/JavaScript/JSON code style"
|
||||
check_config .editorconfig
|
||||
if type -P npm &>/dev/null; then
|
||||
echo "+ npx -y prettier -l -w \$(git ls-files '*.yml' '*.yaml' '*.js' '*.json')"
|
||||
if check_install npm; then
|
||||
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')
|
||||
check_diff $(git ls-files '*.yml' '*.yaml' '*.js' '*.json')
|
||||
else
|
||||
error "'npm' is not installed; skipped YAML/JavaScript/JSON code style check"
|
||||
fi
|
||||
# Check GitHub workflows.
|
||||
if [[ -d .github/workflows ]]; then
|
||||
info "checking GitHub workflows"
|
||||
if type -P jq &>/dev/null; then
|
||||
if type -P python3 &>/dev/null || type -P python &>/dev/null; then
|
||||
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'
|
||||
;;
|
||||
if check_install jq python3; then
|
||||
venv_install_yq
|
||||
for workflow in .github/workflows/*.yml; do
|
||||
# The top-level permissions must be weak as they are referenced by all jobs.
|
||||
permissions=$(venv yq -c '.permissions' "${workflow}")
|
||||
case "${permissions}" in
|
||||
'{"contents":"read"}' | '{"contents":"none"}') ;;
|
||||
null) error "${workflow}: top level permissions not found; it must be 'contents: read' or weaker permissions" ;;
|
||||
*) error "${workflow}: only 'contents: read' and weaker permissions are allowed at top level; if you want to use stronger permissions, please set job-level permissions" ;;
|
||||
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
|
||||
# The top-level permissions must be weak as they are referenced by all jobs.
|
||||
permissions=$(venv yq -c '.permissions' "${workflow}")
|
||||
case "${permissions}" in
|
||||
'{"contents":"read"}' | '{"contents":"none"}') ;;
|
||||
null) error "${workflow}: top level permissions not found; it must be 'contents: read' or weaker permissions" ;;
|
||||
*) error "${workflow}: only 'contents: read' and weaker permissions are allowed at top level; if you want to use stronger permissions, please set job-level permissions" ;;
|
||||
esac
|
||||
# Make sure the 'needs' section is not out of date.
|
||||
if grep -q '# tidy:needs' "${workflow}" && ! grep -Eq '# *needs: \[' "${workflow}"; then
|
||||
# shellcheck disable=SC2207
|
||||
jobs_actual=($(venv yq '.jobs' "${workflow}" | jq -r 'keys_unsorted[]'))
|
||||
unset 'jobs_actual[${#jobs_actual[@]}-1]'
|
||||
# shellcheck disable=SC2207
|
||||
jobs_expected=($(venv yq -r '.jobs."ci-success".needs[]' "${workflow}"))
|
||||
if [[ "${jobs_actual[*]}" != "${jobs_expected[*]+"${jobs_expected[*]}"}" ]]; then
|
||||
printf -v jobs '%s, ' "${jobs_actual[@]}"
|
||||
sed -i "s/needs: \[.*\] # tidy:needs/needs: [${jobs%, }] # tidy:needs/" "${workflow}"
|
||||
check_diff "${workflow}"
|
||||
error "${workflow}: please update 'needs' section in 'ci-success' job"
|
||||
fi
|
||||
# Make sure the 'needs' section is not out of date.
|
||||
if grep -q '# tidy:needs' "${workflow}" && ! grep -Eq '# *needs: \[' "${workflow}"; then
|
||||
# shellcheck disable=SC2207
|
||||
jobs_actual=($(venv yq '.jobs' "${workflow}" | jq -r 'keys_unsorted[]'))
|
||||
unset 'jobs_actual[${#jobs_actual[@]}-1]'
|
||||
# shellcheck disable=SC2207
|
||||
jobs_expected=($(venv yq -r '.jobs."ci-success".needs[]' "${workflow}"))
|
||||
if [[ "${jobs_actual[*]}" != "${jobs_expected[*]+"${jobs_expected[*]}"}" ]]; then
|
||||
printf -v jobs '%s, ' "${jobs_actual[@]}"
|
||||
sed -i "s/needs: \[.*\] # tidy:needs/needs: [${jobs%, }] # tidy:needs/" "${workflow}"
|
||||
check_diff "${workflow}"
|
||||
error "${workflow}: please update 'needs' section in 'ci-success' job"
|
||||
fi
|
||||
done
|
||||
else
|
||||
error "'python3' is not installed; skipped GitHub workflow check"
|
||||
fi
|
||||
else
|
||||
error "'jq' is not installed; skipped GitHub workflow check"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
@@ -281,12 +289,10 @@ fi
|
||||
if [[ -n "$(git ls-files '*.toml' | (grep -v .taplo.toml || true))" ]]; then
|
||||
info "checking TOML style"
|
||||
check_config .taplo.toml
|
||||
if type -P npm &>/dev/null; then
|
||||
echo "+ npx -y @taplo/cli fmt \$(git ls-files '*.toml')"
|
||||
if check_install npm; then
|
||||
info "running \`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')
|
||||
else
|
||||
error "'npm' is not installed; skipped TOML style check"
|
||||
fi
|
||||
elif [[ -e .taplo.toml ]]; then
|
||||
error ".taplo.toml is unused"
|
||||
@@ -296,11 +302,9 @@ fi
|
||||
if [[ -n "$(git ls-files '*.md')" ]]; then
|
||||
info "checking Markdown style"
|
||||
check_config .markdownlint-cli2.yaml
|
||||
if type -P npm &>/dev/null; then
|
||||
echo "+ npx -y markdownlint-cli2 \$(git ls-files '*.md')"
|
||||
if check_install npm; then
|
||||
info "running \`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
|
||||
elif [[ -e .markdownlint-cli2.yaml ]]; then
|
||||
error ".markdownlint-cli2.yaml is unused"
|
||||
@@ -312,29 +316,25 @@ fi
|
||||
|
||||
# Shell scripts
|
||||
info "checking Shell scripts"
|
||||
if type -P shfmt &>/dev/null; then
|
||||
if check_install shfmt; then
|
||||
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')
|
||||
check_diff $(git ls-files '*.sh')
|
||||
else
|
||||
error "'shfmt' is not installed; skipped Shell scripts style check"
|
||||
fi
|
||||
if type -P shellcheck &>/dev/null; then
|
||||
if check_install shellcheck; then
|
||||
check_config .shellcheckrc
|
||||
echo "+ shellcheck \$(git ls-files '*.sh')"
|
||||
info "running \`shellcheck \$(git ls-files '*.sh')\`"
|
||||
if ! shellcheck $(git ls-files '*.sh'); then
|
||||
should_fail=1
|
||||
fi
|
||||
if [[ -n "$(git ls-files '*Dockerfile')" ]]; then
|
||||
# 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
|
||||
should_fail=1
|
||||
fi
|
||||
fi
|
||||
else
|
||||
error "'shellcheck' is not installed; skipped Shell scripts style check"
|
||||
fi
|
||||
|
||||
# License check
|
||||
@@ -383,13 +383,14 @@ fi
|
||||
if [[ -f .cspell.json ]]; then
|
||||
info "spell checking"
|
||||
project_dictionary=.github/.cspell/project-dictionary.txt
|
||||
if type -P npm &>/dev/null; then
|
||||
if check_install npm jq python3; then
|
||||
has_rust=''
|
||||
if [[ -n "$(git ls-files '*Cargo.toml')" ]]; then
|
||||
venv_install_yq
|
||||
has_rust='1'
|
||||
dependencies=''
|
||||
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
|
||||
fi
|
||||
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"
|
||||
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
|
||||
error "spellcheck failed: please fix uses of above words or add to ${project_dictionary} if correct"
|
||||
fi
|
||||
@@ -454,8 +455,6 @@ EOF
|
||||
echo -n "${unused}"
|
||||
echo "======================================="
|
||||
fi
|
||||
else
|
||||
error "'npm' is not installed; skipped spell check"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
12
tools/update-markdown.sh
Executable file
12
tools/update-markdown.sh
Executable 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
|
||||
Reference in New Issue
Block a user