Compare commits

...

99 Commits

Author SHA1 Message Date
Taiki Endo
e07b619ce2 Release 2.19.0 2023-09-28 12:03:42 +09:00
Taiki Endo
d5124717d1 Update changelog 2023-09-28 12:03:24 +09:00
Taiki Endo
b30758ca4a Support signature verification (minisign) 2023-09-28 12:01:51 +09:00
Taiki Endo
ac65fbce2a Update syft@latest to 0.92.0 (#238) 2023-09-28 08:07:28 +10:00
Taiki Endo
d90c734ca8 Update .rustfmt.toml 2023-09-27 21:35:58 +09:00
Taiki Endo
0831efaca4 Update cargo-make@latest to 0.37.2 (#236) 2023-09-27 17:23:07 +10:00
Taiki Endo
ff7717e39e Update cargo-binstall@latest to 1.4.1 (#235) 2023-09-27 17:04:52 +10:00
Taiki Endo
0087e57cc3 Release 2.18.17 2023-09-27 03:28:10 +09:00
Taiki Endo
63649bfbf1 Update cargo-llvm-cov@latest to 0.5.33 2023-09-27 03:26:06 +09:00
Taiki Endo
5b205dd5b8 Release 2.18.16 2023-09-23 21:13:00 +09:00
Taiki Endo
f664a60d0a Update cargo-machete@latest to 0.6.0 2023-09-23 21:10:09 +09:00
Taiki Endo
99f24c701f Update cargo-llvm-cov@latest to 0.5.32 2023-09-23 21:10:09 +09:00
Taiki Endo
05acba8f2d Release 2.18.15 2023-09-22 20:19:19 +09:00
Taiki Endo
2c288a7d53 Update cargo-careful@latest to 0.4.0 (#232) 2023-09-22 17:01:29 +10:00
Taiki Endo
2afb713f1c Release 2.18.14 2023-09-21 10:07:20 +09:00
Taiki Endo
5d0fca79ad Update readme 2023-09-21 10:07:10 +09:00
Taiki Endo
14deed0413 Update syft@latest to 0.91.0 (#231) 2023-09-20 21:38:21 +00:00
Taiki Endo
0143d8cb45 Update wasmtime@latest to 13.0.0 (#230) 2023-09-21 07:33:26 +10:00
Taiki Endo
2358ab6439 Release 2.18.13 2023-09-17 21:46:26 +09:00
Taiki Endo
d7013fbfd0 Update manifest (#228)
* Update `cargo-binstall@latest` to 1.3.1

* Update `cargo-make@latest` to 0.37.1

* Update `cargo-tarpaulin@latest` to 0.27.0
2023-09-17 21:46:00 +09:00
Taiki Endo
de0d48bde6 Release 2.18.12 2023-09-17 00:24:06 +09:00
Taiki Endo
a4beb34f32 ci: Test cmd on Windows 2023-09-17 00:22:00 +09:00
Taiki Endo
46ad021080 Remove needless $ 2023-09-16 23:11:00 +09:00
Taiki Endo
13c0d6f598 Do not install jq if not affected by bugs, even on Windows 2023-09-16 22:54:11 +09:00
Taiki Endo
af0cad7ea8 ci: Test a case that cargo is not available 2023-09-16 22:27:52 +09:00
Taiki Endo
55b35a1b0d Fix some bugs on Windows 2023-09-16 22:26:41 +09:00
Taiki Endo
b441885d30 tidy: Update tools/tidy.sh and add SPDX-License-Identifier 2023-09-16 17:56:46 +09:00
Taiki Endo
1c8b6e3bf4 Release 2.18.11 2023-09-16 02:45:06 +09:00
Taiki Endo
c50dab88b6 Update cargo-hack@latest to 0.6.8 2023-09-16 02:44:43 +09:00
Taiki Endo
09f5ee3f05 Release 2.18.10 2023-09-15 12:14:14 +09:00
Taiki Endo
befd933e5e Update wasmtime@latest to 12.0.2 (#226) 2023-09-15 10:20:45 +10:00
Taiki Endo
62992553e4 Update cargo-dinghy@latest to 0.6.7 2023-09-15 03:13:45 +09:00
Taiki Endo
0163f6cf65 Release 2.18.9 2023-09-12 10:58:38 +09:00
Taiki Endo
10becfbf4e Update syft@latest to 0.90.0 (#223) 2023-09-12 10:33:21 +10:00
Taiki Endo
63c295a1d1 Release 2.18.8 2023-09-12 02:59:13 +09:00
Taiki Endo
1bbd028e93 Update cargo-no-dev-deps@latest to 0.2.7 2023-09-12 02:58:43 +09:00
Taiki Endo
006fba6182 Update cargo-minimal-versions@latest to 0.1.19 2023-09-12 02:58:43 +09:00
Taiki Endo
4d6ceceded Update cargo-hack@latest to 0.6.7 2023-09-12 02:58:43 +09:00
Taiki Endo
9afdc87209 Release 2.18.7 2023-09-11 21:34:53 +09:00
Taiki Endo
dd988265fe Update cargo-dinghy@latest to 0.6.5 (#221) 2023-09-11 22:17:45 +10:00
Taiki Endo
b89cfc4cdb Release 2.18.6 2023-09-10 13:01:06 +09:00
Taiki Endo
6d728686b1 Update dprint@latest to 0.41.0 2023-09-10 13:00:46 +09:00
Taiki Endo
f4f65fa33a Update cargo-no-dev-deps@latest to 0.2.6 2023-09-10 13:00:46 +09:00
Taiki Endo
ec4a09b691 Update cargo-minimal-versions@latest to 0.1.18 2023-09-10 13:00:46 +09:00
Taiki Endo
230cf1a7c2 Release 2.18.5 2023-09-09 21:30:39 +09:00
Taiki Endo
78fb098b9c Update cargo-no-dev-deps@latest to 0.2.5 2023-09-09 21:27:06 +09:00
Taiki Endo
ff244ea17b Update cargo-minimal-versions@latest to 0.1.17 2023-09-09 21:27:06 +09:00
Taiki Endo
ce41e556bc Update CI config 2023-09-09 21:07:42 +09:00
Taiki Endo
c2391e8e5f Release 2.18.4 2023-09-09 16:48:01 +09:00
Taiki Endo
51f7de925c Update cargo-hack@latest to 0.6.6 2023-09-09 16:47:03 +09:00
Taiki Endo
37beb9ded5 Update CI config 2023-09-09 15:29:11 +09:00
Taiki Endo
f3f0bc9f82 Release 2.18.3 2023-09-09 03:30:45 +09:00
Taiki Endo
f8ff1ab8a1 Update cargo-make@latest to 0.37.0 2023-09-09 03:29:46 +09:00
Taiki Endo
a6b28c31ef Release 2.18.2 2023-09-08 10:22:32 +09:00
Taiki Endo
09cf616b64 Update protoc@latest to 3.24.3 (#216) 2023-09-08 10:20:31 +09:00
Taiki Endo
2f6cd157e0 Simplify CI config 2023-09-05 23:14:31 +09:00
Taiki Endo
3660b253bf Update CI config 2023-09-05 23:05:37 +09:00
Taiki Endo
6cd53f784a Release 2.18.1 2023-09-05 22:49:32 +09:00
Taiki Endo
eb8dccef73 ci: Replace rockylinux with almalinux
rockylinux's package manager infrastructure sometimes is broken.

```
+ dnf install -y cargo tar gzip
Rocky Linux 8 - AppStream                        34 kB/s |  10 MB     05:05
Errors during downloading metadata for repository 'appstream':
  - Downloading successful, but checksum doesn't match. Calculated: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855(sha256)  Expected: 0087a37e2eca36cac787004b7945dbbcc2dba4dd776e50d6d1461bfe2cc30434(sha256)
  - Downloading successful, but checksum doesn't match. Calculated: 839488ebc08446a096a893996ed23eac321ac166724cd8c5d9092057834d2d79(sha256)  Expected: b31374fa4a7a732aae643cea0699f714480387baad33061b2fae4530d380a988(sha256)
  - Downloading successful, but checksum doesn't match. Calculated: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855(sha256)  Expected: 649280a7614f8a30d3fcc03560247b64906a6cf26024e090c0272766e671e5f3(sha256)
Error: Failed to download metadata for repo 'appstream': Yum repo downloading error: Downloading error(s): repodata/b31374fa4a7a732aae643cea0699f714480387baad33061b2fae4530d380a988-updateinfo.xml.gz - Cannot download, all mirrors were already tried without success
```

```
+ microdnf install -y cargo tar gzip
Downloading metadata...
error: cannot update repo 'baseos': repomd.xml parser error: Parse error at line: 1 (Extra content at the end of the document
)
```
2023-09-05 22:44:03 +09:00
Taiki Endo
442088fba1 Update changelog 2023-09-05 22:39:17 +09:00
Taiki Endo
18cb28e03d Sort supported tools table 2023-09-05 22:39:14 +09:00
Taiki Endo
099d544df2 Clean up --version calls 2023-09-05 22:39:05 +09:00
Taiki Endo
05558ee559 ci: Update actions/checkout action to v4 2023-09-05 22:38:58 +09:00
Taiki Endo
5692c4095a Release 2.18.0 2023-09-04 21:48:23 +09:00
Taiki Endo
afd84994bb Update changelog 2023-09-04 21:47:54 +09:00
John Nunley
b45f49a51d Add support for xbuild (#212)
Signed-off-by: John Nunley <dev@notgull.net>
2023-09-04 21:46:18 +09:00
Taiki Endo
01c3792929 Update cargo-hack@latest to 0.6.5 2023-09-04 21:45:18 +09:00
Taiki Endo
401ee5db19 Update cargo-deny@latest to 0.14.2 (#214) 2023-09-04 22:33:23 +10:00
Taiki Endo
6801bd56b9 Release 2.17.8 2023-09-01 11:19:43 +09:00
Taiki Endo
ad25912b73 Update syft@latest to 0.89.0 (#213) 2023-09-01 07:37:05 +10:00
Taiki Endo
cc5a5c56a2 Release 2.17.7 2023-08-29 22:38:14 +09:00
Taiki Endo
d85ed71ccb Update cargo-hack@latest to 0.6.4 2023-08-29 22:37:49 +09:00
Taiki Endo
a257529eaf Release 2.17.6 2023-08-29 05:46:59 +09:00
Taiki Endo
69081f5990 Update cargo-no-dev-deps@latest to 0.2.4 2023-08-29 05:46:27 +09:00
Taiki Endo
fc173345fb Update cargo-minimal-versions@latest to 0.1.16 2023-08-29 05:46:27 +09:00
Taiki Endo
e6b049c3b7 Update cargo-hack@latest to 0.6.3 2023-08-29 05:46:27 +09:00
Taiki Endo
7838381fcf Release 2.17.5 2023-08-29 03:47:19 +09:00
Taiki Endo
8cdc2a9825 Update cargo-hack@latest to 0.6.2 2023-08-29 03:46:21 +09:00
Taiki Endo
7f27b7d8d5 Release 2.17.4 2023-08-29 02:44:41 +09:00
Taiki Endo
e156747327 Update cargo-hack@latest to 0.6.1 2023-08-29 02:44:22 +09:00
Taiki Endo
26fa6681fb Release 2.17.3 2023-08-29 01:56:05 +09:00
Taiki Endo
25d7b33a71 Update cargo-minimal-versions@latest to 0.1.15 2023-08-29 01:55:43 +09:00
Taiki Endo
f96cc5318d Update cargo-hack@latest to 0.6.0 2023-08-29 01:55:43 +09:00
Taiki Endo
f0d0def1e2 Release 2.17.2 2023-08-27 15:22:32 +09:00
Taiki Endo
2b66e0090b Update cargo-udeps@latest to 0.1.42 (#206) 2023-08-27 06:16:18 +00:00
Taiki Endo
ba7482c6af Release 2.17.1 2023-08-26 10:31:08 +09:00
Taiki Endo
425876e44a Update manifest (#205) 2023-08-26 11:05:19 +10:00
Taiki Endo
a5a8275f14 Release 2.17.0 2023-08-25 21:19:57 +09:00
Taiki Endo
38b64619b5 ci: Add macOS 13 to test 2023-08-25 21:18:31 +09:00
Taiki Endo
006e1318d7 Update cspell dictionary 2023-08-25 21:17:08 +09:00
Taiki Endo
942c7835ab Update cargo-binstall@latest to 1.3.0 (#204) 2023-08-25 12:16:33 +00:00
Taiki Endo
bca437466a Release 2.16.5 2023-08-25 04:19:58 +09:00
Taiki Endo
1981e18081 Update wasmtime@latest to 12.0.1 2023-08-25 04:19:36 +09:00
Taiki Endo
fe04be912f Update cargo-llvm-cov@latest to 0.5.31 2023-08-25 04:19:36 +09:00
Taiki Endo
f1e481e035 Release 2.16.4 2023-08-24 00:07:41 +09:00
Taiki Endo
1d42c62e8a Update cspell dictionary 2023-08-24 00:07:27 +09:00
Taiki Endo
d4d12f0d19 Update cargo-llvm-cov@latest to 0.5.30 2023-08-24 00:01:40 +09:00
Taiki Endo
8a5a554374 Release 2.16.3 2023-08-23 22:16:21 +09:00
Taiki Endo
cf629cb4fe Update cargo-llvm-cov@latest to 0.5.29 (#201) 2023-08-23 23:14:53 +10:00
33 changed files with 1692 additions and 276 deletions

View File

@@ -6,15 +6,17 @@ taiki
// tool name and its configs or options // tool name and its configs or options
asan asan
cdylib
cflags cflags
clippy clippy
codegen codegen
cxxflags cxxflags
dylib
exitcode exitcode
miri miri
miriflags miriflags
msan msan
retag rlib
rustc rustc
rustdoc rustdoc
rustdocflags rustdocflags
@@ -22,6 +24,8 @@ rustflags
rustfmt rustfmt
rustsec rustsec
rustup rustup
staticlib
tsan
valgrind valgrind
xcompile xcompile
Zmiri Zmiri

View File

@@ -1,3 +1,4 @@
almalinux
binstall binstall
coreutils coreutils
distro distro
@@ -13,13 +14,14 @@ mdbook
microdnf microdnf
nextest nextest
protoc protoc
pubkey
pwsh pwsh
quickinstall quickinstall
rockylinux
shellcheck shellcheck
shfmt shfmt
syft syft
udeps udeps
wasmtime wasmtime
watchexec watchexec
xbuild
xscale xscale

View File

@@ -1,4 +1,6 @@
// This file is @generated by tidy.sh. // This file is @generated by tidy.sh.
// It is not intended for manual editing. // It is not intended for manual editing.
flate
minisign
ureq ureq

View File

@@ -41,20 +41,21 @@ jobs:
include: include:
- os: ubuntu-20.04 - os: ubuntu-20.04
- os: ubuntu-22.04 - os: ubuntu-22.04
- os: ubuntu-20.04 - os: ubuntu-22.04
tool: major.minor.patch tool: major.minor.patch
- os: ubuntu-20.04 - os: ubuntu-22.04
tool: major.minor tool: major.minor
- os: ubuntu-20.04 - os: ubuntu-22.04
tool: major tool: major
- os: macos-11 - os: macos-11
- os: macos-12 - os: macos-12
- os: macos-13
- os: windows-2019 - os: windows-2019
- os: windows-2022 - os: windows-2022
runs-on: ${{ matrix.os }} runs-on: ${{ matrix.os }}
timeout-minutes: 60 timeout-minutes: 60
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
with: with:
persist-credentials: false persist-credentials: false
# cross attempts to install rust-src when Cargo.toml is available even if `cross --version` # cross attempts to install rust-src when Cargo.toml is available even if `cross --version`
@@ -80,6 +81,10 @@ jobs:
run: just --version; shfmt --version; protoc --version run: just --version; shfmt --version; protoc --version
shell: powershell shell: powershell
if: startsWith(matrix.os, 'windows') if: startsWith(matrix.os, 'windows')
- name: Test cmd
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 binstall, but they
# several times change the version output format in the past so we need to # several times change the version output format in the past so we need to
# check it with CI. (e.g., 0.14.0->0.16.0 update change it # check it with CI. (e.g., 0.14.0->0.16.0 update change it
@@ -101,10 +106,10 @@ jobs:
- debian:11-slim # glibc 2.31 - debian:11-slim # glibc 2.31
- debian:12-slim # glibc 2.36 - debian:12-slim # glibc 2.36
- fedora:latest # glibc 2.37 (as of fedora 38) - fedora:latest # glibc 2.37 (as of fedora 38)
- rockylinux:8 # glibc 2.28 - almalinux:8 # glibc 2.28
- rockylinux:8-minimal # glibc 2.28 - almalinux:8-minimal # glibc 2.28
- rockylinux:9 # glibc 2.34 - almalinux:9 # glibc 2.34
- rockylinux:9-minimal # glibc 2.34 - almalinux:9-minimal # glibc 2.34
- centos:7 # glibc 2.17 - centos:7 # glibc 2.17
- alpine:latest # musl 1.2.4 (as of alpine 3.18) - alpine:latest # musl 1.2.4 (as of alpine 3.18)
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -117,29 +122,23 @@ jobs:
apt-get -o Acquire::Retries=10 -qq update 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 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') if: startsWith(matrix.container, 'ubuntu') || startsWith(matrix.container, 'debian')
- name: Install requirements (fedora/rockylinux) - name: Install requirements (fedora/almalinux/centos)
run: | run: |
set -euxo pipefail set -euxo pipefail
dnf=dnf if ! type -P dnf &>/dev/null && type -P microdnf &>/dev/null; then
if ! type -P dnf &>/dev/null; then # tar and gzip are required for actions/checkout on *-minimal images
dnf=microdnf microdnf install -y tar gzip
fi fi
# tar and gzip are required for actions/checkout on rockylinux:*-minimal curl --proto '=https' --tlsv1.2 -fsSL --retry 10 https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain stable
$dnf install -y cargo tar gzip
if: startsWith(matrix.container, 'fedora') || startsWith(matrix.container, 'rockylinux')
- name: Install requirements (centos)
run: |
set -euxo pipefail
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain stable
echo "$HOME/.cargo/bin" >>"${GITHUB_PATH}" echo "$HOME/.cargo/bin" >>"${GITHUB_PATH}"
if: startsWith(matrix.container, 'centos') if: startsWith(matrix.container, 'fedora') || startsWith(matrix.container, 'almalinux') || startsWith(matrix.container, 'centos')
- name: Install requirements (alpine) - name: Install requirements (alpine)
run: | run: |
set -eux set -eux
apk --no-cache add bash cargo apk --no-cache add bash cargo
shell: sh shell: sh
if: startsWith(matrix.container, 'alpine') if: startsWith(matrix.container, 'alpine')
- uses: actions/checkout@v3 - uses: actions/checkout@v3 # TODO: actions/checkout@v4 requires glibc 2.28+
with: with:
persist-credentials: false persist-credentials: false
# cross attempts to install rust-src when Cargo.toml is available even if `cross --version` # cross attempts to install rust-src when Cargo.toml is available even if `cross --version`
@@ -151,6 +150,21 @@ jobs:
with: with:
tool: ${{ steps.tool-list.outputs.tool }} tool: ${{ steps.tool-list.outputs.tool }}
test-no-cargo:
runs-on: ubuntu-latest
timeout-minutes: 60
container: ubuntu:22.04
steps:
- uses: actions/checkout@v4
with:
persist-credentials: false
- name: Generate tool list
id: tool-list
run: tools/ci/tool-list.sh >>"${GITHUB_OUTPUT}"
- uses: ./
with:
tool: ${{ steps.tool-list.outputs.tool }}
manifest: manifest:
runs-on: ubuntu-latest runs-on: ubuntu-latest
timeout-minutes: 60 timeout-minutes: 60
@@ -158,7 +172,7 @@ jobs:
contents: write contents: write
pull-requests: write pull-requests: write
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
with: with:
persist-credentials: false persist-credentials: false
- name: Install Rust - name: Install Rust

View File

@@ -20,7 +20,7 @@ jobs:
permissions: permissions:
contents: write contents: write
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v4
with: with:
persist-credentials: false persist-credentials: false
- uses: taiki-e/create-gh-release-action@v1 - uses: taiki-e/create-gh-release-action@v1

View File

@@ -1 +1,32 @@
edition = "2021" # Rustfmt configuration
# https://github.com/rust-lang/rustfmt/blob/HEAD/Configurations.md
# Rustfmt cannot format long lines inside macros, but this option detects this.
# This is unstable (tracking issue: https://github.com/rust-lang/rustfmt/issues/3391)
error_on_line_overflow = true
# Override the default formatting style.
# See https://internals.rust-lang.org/t/running-rustfmt-on-rust-lang-rust-and-other-rust-lang-repositories/8732/81.
use_small_heuristics = "Max"
# See https://github.com/rust-dev-tools/fmt-rfcs/issues/149.
# This is unstable (tracking issue: https://github.com/rust-lang/rustfmt/issues/3370)
overflow_delimited_expr = true
# This is unstable (tracking issue: none).
imports_granularity = "Crate"
# This is unstable (tracking issue: none).
group_imports = "StdExternalCrate"
# Apply rustfmt to more places.
# This is unstable (tracking issue: https://github.com/rust-lang/rustfmt/issues/3348).
format_code_in_doc_comments = true
# Automatically fix deprecated style.
use_field_init_shorthand = true
use_try_shorthand = true
# Set the default settings again to always apply the proper formatting without
# being affected by the editor settings.
edition = "2018"
hard_tabs = false
newline_style = "Unix"
tab_spaces = 4

View File

@@ -10,6 +10,170 @@ Note: In this file, do not use the hard wrap in the middle of a sentence for com
## [Unreleased] ## [Unreleased]
## [2.19.0] - 2023-09-28
- Support signature verification. ([#237](https://github.com/taiki-e/install-action/pull/237))
- Update `cargo-binstall@latest` to 1.4.1. This includes support for signature verification.
- Update `syft@latest` to 0.92.0.
- Update `cargo-make@latest` to 0.37.2.
## [2.18.17] - 2023-09-26
- Update `cargo-llvm-cov@latest` to 0.5.33.
## [2.18.16] - 2023-09-23
- Update `cargo-machete@latest` to 0.6.0.
- Update `cargo-llvm-cov@latest` to 0.5.32.
## [2.18.15] - 2023-09-22
- Update `cargo-careful@latest` to 0.4.0.
## [2.18.14] - 2023-09-21
- Update `syft@latest` to 0.91.0.
- Update `wasmtime@latest` to 13.0.0.
## [2.18.13] - 2023-09-17
- Update `cargo-tarpaulin@latest` to 0.27.0.
- Update `cargo-make@latest` to 0.37.1.
- Update `cargo-binstall@latest` to 1.3.1.
## [2.18.12] - 2023-09-16
- Fix some bugs on Windows.
## [2.18.11] - 2023-09-15
- Update `cargo-hack@latest` to 0.6.8.
## [2.18.10] - 2023-09-15
- Update `wasmtime@latest` to 12.0.2.
- Update `cargo-dinghy@latest` to 0.6.7.
## [2.18.9] - 2023-09-12
- Update `syft@latest` to 0.90.0.
## [2.18.8] - 2023-09-11
- Update `cargo-no-dev-deps@latest` to 0.2.7.
- Update `cargo-minimal-versions@latest` to 0.1.19.
- Update `cargo-hack@latest` to 0.6.7.
## [2.18.7] - 2023-09-11
- Update `cargo-dinghy@latest` to 0.6.5.
## [2.18.6] - 2023-09-10
- Update `dprint@latest` to 0.41.0.
- Update `cargo-no-dev-deps@latest` to 0.2.6.
- Update `cargo-minimal-versions@latest` to 0.1.18.
## [2.18.5] - 2023-09-09
- Update `cargo-no-dev-deps@latest` to 0.2.5.
- Update `cargo-minimal-versions@latest` to 0.1.17.
## [2.18.4] - 2023-09-09
- Update `cargo-hack@latest` to 0.6.6.
## [2.18.3] - 2023-09-08
- Update `cargo-make@latest` to 0.37.0.
## [2.18.2] - 2023-09-08
- Update `protoc@latest` to 3.24.3.
## [2.18.1] - 2023-09-05
- Diagnostic improvements.
## [2.18.0] - 2023-09-04
- Support `xbuild`. ([#212](https://github.com/taiki-e/install-action/pull/212), thanks @notgull)
- Update `cargo-hack@latest` to 0.6.5.
- Update `cargo-deny@latest` to 0.14.2.
## [2.17.8] - 2023-09-01
- Update `syft@latest` to 0.89.0.
## [2.17.7] - 2023-08-29
- Update `cargo-hack@latest` to 0.6.4.
## [2.17.6] - 2023-08-28
- Update `cargo-no-dev-deps@latest` to 0.2.4.
- Update `cargo-minimal-versions@latest` to 0.1.16.
- Update `cargo-hack@latest` to 0.6.3.
## [2.17.5] - 2023-08-28
- Update `cargo-hack@latest` to 0.6.2.
## [2.17.4] - 2023-08-28
- Update `cargo-hack@latest` to 0.6.1.
## [2.17.3] - 2023-08-28
- Update `cargo-minimal-versions@latest` to 0.1.15.
- Update `cargo-hack@latest` to 0.6.0.
## [2.17.2] - 2023-08-27
- Update `cargo-udeps@latest` to 0.1.42.
## [2.17.1] - 2023-08-26
- Update `syft@latest` to 0.88.0.
- Update `protoc@latest` to 3.24.2.
## [2.17.0] - 2023-08-25
- Update `cargo-binstall@latest` to 1.3.0.
## [2.16.5] - 2023-08-24
- Update `wasmtime@latest` to 12.0.1.
- Update `cargo-llvm-cov@latest` to 0.5.31.
## [2.16.4] - 2023-08-23
- Update `cargo-llvm-cov@latest` to 0.5.30.
## [2.16.3] - 2023-08-23
- Update `cargo-llvm-cov@latest` to 0.5.29.
## [2.16.2] - 2023-08-22 ## [2.16.2] - 2023-08-22
- Update `cargo-llvm-cov@latest` to 0.5.28. - Update `cargo-llvm-cov@latest` to 0.5.28.
@@ -1099,7 +1263,38 @@ Note: This release is considered a breaking change because installing on version
Initial release Initial release
[Unreleased]: https://github.com/taiki-e/install-action/compare/v2.16.2...HEAD [Unreleased]: https://github.com/taiki-e/install-action/compare/v2.19.0...HEAD
[2.19.0]: https://github.com/taiki-e/install-action/compare/v2.18.17...v2.19.0
[2.18.17]: https://github.com/taiki-e/install-action/compare/v2.18.16...v2.18.17
[2.18.16]: https://github.com/taiki-e/install-action/compare/v2.18.15...v2.18.16
[2.18.15]: https://github.com/taiki-e/install-action/compare/v2.18.14...v2.18.15
[2.18.14]: https://github.com/taiki-e/install-action/compare/v2.18.13...v2.18.14
[2.18.13]: https://github.com/taiki-e/install-action/compare/v2.18.12...v2.18.13
[2.18.12]: https://github.com/taiki-e/install-action/compare/v2.18.11...v2.18.12
[2.18.11]: https://github.com/taiki-e/install-action/compare/v2.18.10...v2.18.11
[2.18.10]: https://github.com/taiki-e/install-action/compare/v2.18.9...v2.18.10
[2.18.9]: https://github.com/taiki-e/install-action/compare/v2.18.8...v2.18.9
[2.18.8]: https://github.com/taiki-e/install-action/compare/v2.18.7...v2.18.8
[2.18.7]: https://github.com/taiki-e/install-action/compare/v2.18.6...v2.18.7
[2.18.6]: https://github.com/taiki-e/install-action/compare/v2.18.5...v2.18.6
[2.18.5]: https://github.com/taiki-e/install-action/compare/v2.18.4...v2.18.5
[2.18.4]: https://github.com/taiki-e/install-action/compare/v2.18.3...v2.18.4
[2.18.3]: https://github.com/taiki-e/install-action/compare/v2.18.2...v2.18.3
[2.18.2]: https://github.com/taiki-e/install-action/compare/v2.18.1...v2.18.2
[2.18.1]: https://github.com/taiki-e/install-action/compare/v2.18.0...v2.18.1
[2.18.0]: https://github.com/taiki-e/install-action/compare/v2.17.8...v2.18.0
[2.17.8]: https://github.com/taiki-e/install-action/compare/v2.17.7...v2.17.8
[2.17.7]: https://github.com/taiki-e/install-action/compare/v2.17.6...v2.17.7
[2.17.6]: https://github.com/taiki-e/install-action/compare/v2.17.5...v2.17.6
[2.17.5]: https://github.com/taiki-e/install-action/compare/v2.17.4...v2.17.5
[2.17.4]: https://github.com/taiki-e/install-action/compare/v2.17.3...v2.17.4
[2.17.3]: https://github.com/taiki-e/install-action/compare/v2.17.2...v2.17.3
[2.17.2]: https://github.com/taiki-e/install-action/compare/v2.17.1...v2.17.2
[2.17.1]: https://github.com/taiki-e/install-action/compare/v2.17.0...v2.17.1
[2.17.0]: https://github.com/taiki-e/install-action/compare/v2.16.5...v2.17.0
[2.16.5]: https://github.com/taiki-e/install-action/compare/v2.16.4...v2.16.5
[2.16.4]: https://github.com/taiki-e/install-action/compare/v2.16.3...v2.16.4
[2.16.3]: https://github.com/taiki-e/install-action/compare/v2.16.2...v2.16.3
[2.16.2]: https://github.com/taiki-e/install-action/compare/v2.16.1...v2.16.2 [2.16.2]: https://github.com/taiki-e/install-action/compare/v2.16.1...v2.16.2
[2.16.1]: https://github.com/taiki-e/install-action/compare/v2.16.0...v2.16.1 [2.16.1]: https://github.com/taiki-e/install-action/compare/v2.16.0...v2.16.1
[2.16.0]: https://github.com/taiki-e/install-action/compare/v2.15.6...v2.16.0 [2.16.0]: https://github.com/taiki-e/install-action/compare/v2.15.6...v2.16.0

View File

@@ -82,13 +82,13 @@ https://spdx.org/licenses
| Name | Where binaries will be installed | Where will it be installed from | Supported platform | License | | Name | Where binaries will be installed | Where will it be installed from | Supported platform | License |
| ---- | -------------------------------- | ------------------------------- | ------------------ | ------- | | ---- | -------------------------------- | ------------------------------- | ------------------ | ------- |
| [**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-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-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-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-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-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-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-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-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-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-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/master/LICENSE) | | [**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-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-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-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/develop/LICENSE-APACHE) OR [MIT](https://github.com/xd009642/tarpaulin/blob/develop/LICENSE-MIT) | | [**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/develop/LICENSE-APACHE) OR [MIT](https://github.com/xd009642/tarpaulin/blob/develop/LICENSE-MIT) |
@@ -109,6 +109,7 @@ https://spdx.org/licenses
| [**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) | | [**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-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) | | [**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) | | [**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) | | [**zola**](https://github.com/getzola/zola) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/getzola/zola/releases) | Linux, macOS, Windows | [MIT](https://github.com/getzola/zola/blob/HEAD/LICENSE) |
If `$CARGO_HOME/bin` is not available, Rust-related binaries will be installed to `$HOME/.cargo/bin`.<br> If `$CARGO_HOME/bin` is not available, Rust-related binaries will be installed to `$HOME/.cargo/bin`.<br>
@@ -127,11 +128,13 @@ When installing the tool from GitHub Releases, this action will download the too
Additionally, this action will also verify SHA256 checksums for downloaded files in all tools installed from GitHub Releases. This is enabled by default and can be disabled by setting the `checksum` input option to `false`. Additionally, this action will also verify SHA256 checksums for downloaded files in all tools installed from GitHub Releases. This is enabled by default and can be disabled by setting the `checksum` input option to `false`.
Additionally, we also verify signature if the tool distributes signed archives. Signature verification is done at the stage of getting the checksum, so disabling the checksum will also disable signature verification.
See the linked documentation for information on security when installed using [snap](https://snapcraft.io/docs) or [cargo-binstall](https://github.com/cargo-bins/cargo-binstall#faq). See the linked documentation for information on security when installed using [snap](https://snapcraft.io/docs) or [cargo-binstall](https://github.com/cargo-bins/cargo-binstall#faq).
## Compatibility ## Compatibility
This action has been tested for GitHub-hosted runners (Ubuntu, macOS, Windows) and containers (Ubuntu, Debian, Alpine, Fedora, CentOS, Rocky). This action has been tested for GitHub-hosted runners (Ubuntu, macOS, Windows) and containers (Ubuntu, Debian, Alpine, Fedora, CentOS, Alma).
To use this action in self-hosted runners or in containers, at least the following tools are required: To use this action in self-hosted runners or in containers, at least the following tools are required:
- bash - bash

285
main.sh
View File

@@ -3,7 +3,7 @@
set -euo pipefail set -euo pipefail
IFS=$'\n\t' IFS=$'\n\t'
x() { rx() {
local cmd="$1" local cmd="$1"
shift shift
( (
@@ -58,18 +58,16 @@ download_and_extract() {
local checksum="$2" local checksum="$2"
local bin_dir="$3" local bin_dir="$3"
local bin_in_archive="$4" # path to bin in archive local bin_in_archive="$4" # path to bin in archive
if [[ "${bin_dir}" == "/usr/"* ]]; then if [[ "${bin_dir}" == "${install_action_dir}/bin" ]]; then
if [[ ! -d "${bin_dir}" ]]; then init_install_action_bin_dir
bin_dir="${HOME}/.install-action/bin"
if [[ ! -d "${bin_dir}" ]]; then
mkdir -p "${bin_dir}"
canonicalize_windows_path "${bin_dir}" >>"${GITHUB_PATH}"
export PATH="${PATH}:${bin_dir}"
fi
fi
fi fi
local installed_bin local installed_bin
installed_bin="${bin_dir}/$(basename "${bin_in_archive}")" # xbuild's binary name is "x", as opposed to the usual crate name
case "${tool}" in
xbuild) installed_bin="${bin_dir}/x" ;;
*) installed_bin="${bin_dir}/$(basename "${bin_in_archive}")" ;;
esac
local tar_args=() local tar_args=()
case "${url}" in case "${url}" in
@@ -152,17 +150,17 @@ read_manifest() {
local tool="$1" local tool="$1"
local version="$2" local version="$2"
local manifest local manifest
rust_crate=$(jq -r ".rust_crate" "${manifest_dir}/${tool}.json") rust_crate=$(call_jq -r ".rust_crate" "${manifest_dir}/${tool}.json")
manifest=$(jq -r ".\"${version}\"" "${manifest_dir}/${tool}.json") manifest=$(call_jq -r ".\"${version}\"" "${manifest_dir}/${tool}.json")
if [[ "${manifest}" == "null" ]]; then if [[ "${manifest}" == "null" ]]; then
download_info="null" download_info="null"
return 0 return 0
fi fi
exact_version=$(jq <<<"${manifest}" -r '.version') exact_version=$(call_jq <<<"${manifest}" -r '.version')
if [[ "${exact_version}" == "null" ]]; then if [[ "${exact_version}" == "null" ]]; then
exact_version="${version}" exact_version="${version}"
else else
manifest=$(jq -r ".\"${exact_version}\"" "${manifest_dir}/${tool}.json") manifest=$(call_jq -r ".\"${exact_version}\"" "${manifest_dir}/${tool}.json")
fi fi
case "${host_os}" in case "${host_os}" in
linux) linux)
@@ -170,24 +168,24 @@ read_manifest() {
# usually preferred over linux-gnu binaries because they can avoid glibc version issues. # 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.) # (rustc enables statically linking for linux-musl by default, except for mips.)
host_platform="${host_arch}_linux_musl" host_platform="${host_arch}_linux_musl"
download_info=$(jq <<<"${manifest}" -r ".${host_platform}") download_info=$(call_jq <<<"${manifest}" -r ".${host_platform}")
if [[ "${download_info}" == "null" ]]; then if [[ "${download_info}" == "null" ]]; then
# Even if host_env is musl, we won't issue an error here because it seems that in # Even if host_env is musl, we won't issue an error here because it seems that in
# some cases linux-gnu binaries will work on linux-musl hosts. # some cases linux-gnu binaries will work on linux-musl hosts.
# https://wiki.alpinelinux.org/wiki/Running_glibc_programs # https://wiki.alpinelinux.org/wiki/Running_glibc_programs
# TODO: However, a warning may make sense. # TODO: However, a warning may make sense.
host_platform="${host_arch}_linux_gnu" host_platform="${host_arch}_linux_gnu"
download_info=$(jq <<<"${manifest}" -r ".${host_platform}") download_info=$(call_jq <<<"${manifest}" -r ".${host_platform}")
fi fi
;; ;;
macos | windows) macos | windows)
# Binaries compiled for x86_64 macOS will usually also work on aarch64 macOS. # 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+. # Binaries compiled for x86_64 Windows will usually also work on aarch64 Windows 11+.
host_platform="${host_arch}_${host_os}" host_platform="${host_arch}_${host_os}"
download_info=$(jq <<<"${manifest}" -r ".${host_platform}") download_info=$(call_jq <<<"${manifest}" -r ".${host_platform}")
if [[ "${download_info}" == "null" ]] && [[ "${host_arch}" != "x86_64" ]]; then if [[ "${download_info}" == "null" ]] && [[ "${host_arch}" != "x86_64" ]]; then
host_platform="x86_64_${host_os}" host_platform="x86_64_${host_os}"
download_info=$(jq <<<"${manifest}" -r ".${host_platform}") download_info=$(call_jq <<<"${manifest}" -r ".${host_platform}")
fi fi
;; ;;
*) bail "unsupported OS type '${host_os}' for ${tool}" ;; *) bail "unsupported OS type '${host_os}' for ${tool}" ;;
@@ -199,20 +197,24 @@ read_download_info() {
if [[ "${download_info}" == "null" ]]; then if [[ "${download_info}" == "null" ]]; then
bail "${tool}@${version} for '${host_os}' is not supported" bail "${tool}@${version} for '${host_os}' is not supported"
fi fi
checksum=$(jq <<<"${download_info}" -r '.checksum') checksum=$(call_jq <<<"${download_info}" -r '.checksum')
url=$(jq <<<"${download_info}" -r '.url') url=$(call_jq <<<"${download_info}" -r '.url')
if [[ "${url}" == "null" ]]; then if [[ "${url}" == "null" ]]; then
local template local template
template=$(jq -r ".template.${host_platform}" "${manifest_dir}/${tool}.json") template=$(call_jq -r ".template.${host_platform}" "${manifest_dir}/${tool}.json")
url=$(jq <<<"${template}" -r '.url') url=$(call_jq <<<"${template}" -r '.url')
url="${url//\$\{version\}/${exact_version}}" url="${url//\$\{version\}/${exact_version}}"
bin_in_archive=$(jq <<<"${template}" -r '.bin') bin_in_archive=$(call_jq <<<"${template}" -r '.bin')
bin_in_archive="${bin_in_archive//\$\{version\}/${exact_version}}" bin_in_archive="${bin_in_archive//\$\{version\}/${exact_version}}"
else else
bin_in_archive=$(jq <<<"${download_info}" -r '.bin') bin_in_archive=$(call_jq <<<"${download_info}" -r '.bin')
fi fi
if [[ "${rust_crate}" == "null" ]]; then if [[ "${rust_crate}" == "null" ]]; then
bin_dir="/usr/local/bin" if [[ "${host_os}" == "windows" ]] || [[ ! -e /usr/local/bin ]]; then
bin_dir="${install_action_dir}/bin"
else
bin_dir=/usr/local/bin
fi
else else
bin_dir="${cargo_bin}" bin_dir="${cargo_bin}"
fi fi
@@ -230,10 +232,11 @@ download_from_download_info() {
} }
install_cargo_binstall() { install_cargo_binstall() {
local binstall_version local binstall_version
binstall_version=$(jq -r '.latest.version' "${manifest_dir}/cargo-binstall.json") binstall_version=$(call_jq -r '.latest.version' "${manifest_dir}/cargo-binstall.json")
local install_binstall='1' local install_binstall='1'
if [[ -f "${cargo_bin}/cargo-binstall${exe}" ]]; then _binstall_version=$("cargo-binstall${exe}" binstall -V 2>/dev/null || echo "")
if [[ "$(cargo binstall -V)" == "${binstall_version}" ]]; then if [[ -n "${_binstall_version}" ]]; then
if [[ "${_binstall_version}" == "${binstall_version}" ]]; then
info "cargo-binstall already installed at ${cargo_bin}/cargo-binstall${exe}" info "cargo-binstall already installed at ${cargo_bin}/cargo-binstall${exe}"
install_binstall='' install_binstall=''
else else
@@ -243,10 +246,15 @@ install_cargo_binstall() {
fi fi
if [[ -n "${install_binstall}" ]]; then if [[ -n "${install_binstall}" ]]; then
info "installing cargo-binstall" info "installing cargo-binstall@latest (${binstall_version})"
download_from_manifest "cargo-binstall" "latest" download_from_manifest "cargo-binstall" "latest"
info "cargo-binstall installed at $(type -P "cargo-binstall${exe}")" installed_at=$(type -P "cargo-binstall${exe}" || echo "")
x cargo binstall -V if [[ -n "${installed_at}" ]]; then
info "cargo-binstall installed at ${installed_at}"
else
warn "cargo-binstall should be installed at ${bin_dir:-}/cargo-binstall${exe}; but cargo-binstall${exe} not found in path"
fi
rx "cargo-binstall${exe}" binstall -V
fi fi
} }
apt_update() { apt_update() {
@@ -302,9 +310,21 @@ sys_install() {
fedora) dnf_install "$@" ;; fedora) dnf_install "$@" ;;
esac esac
} }
init_install_action_bin_dir() {
if [[ -z "${init_install_action_bin:-}" ]]; then
init_install_action_bin=1
mkdir -p "${bin_dir}"
export PATH="${PATH}:${bin_dir}"
local _bin_dir
_bin_dir=$(canonicalize_windows_path "${bin_dir}")
# TODO: avoid this when already added
info "adding '${_bin_dir}' to PATH"
echo "${_bin_dir}" >>"${GITHUB_PATH}"
fi
}
canonicalize_windows_path() { canonicalize_windows_path() {
case "${host_os}" in case "${host_os}" in
windows) sed <<<"$1" 's/^\/c\//C:\\/' ;; windows) sed <<<"$1" 's/^\/c\//C:\\/; s/\//\\/g' ;;
*) echo "$1" ;; *) echo "$1" ;;
esac esac
} }
@@ -402,46 +422,107 @@ case "$(uname -m)" in
# So we can assume x86_64 unless it is aarch64 or arm. # So we can assume x86_64 unless it is aarch64 or arm.
*) host_arch="x86_64" ;; *) host_arch="x86_64" ;;
esac esac
info "host platform: ${host_arch}_${host_os}"
tmp_dir="${HOME}/.install-action/tmp" 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 # If $CARGO_HOME does not exist, or cargo installed outside of $CARGO_HOME/bin
# is used ($CARGO_HOME/bin is most likely not included in the PATH), fallback to # is used ($CARGO_HOME/bin is most likely not included in the PATH), fallback to
# /usr/local/bin or $HOME/.install-action/bin. # /usr/local/bin or $install_action_dir/bin.
if [[ ! -d "${cargo_bin}" ]] || { [[ "${host_os}" != "windows" ]] && [[ "$(type -P cargo || true)" != "${cargo_bin}/cargo${exe}" ]]; }; then if [[ ! -e "${cargo_bin}" ]] || [[ "$(type -P cargo || true)" != "${cargo_bin}/cargo"* ]]; then
cargo_bin=/usr/local/bin 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
cargo_bin="${install_action_dir}/bin"
else
cargo_bin=/usr/local/bin
fi
fi fi
if ! type -P jq &>/dev/null || ! type -P curl &>/dev/null || ! type -P tar &>/dev/null; then jq_use_b=''
case "${base_distro}" in case "${host_os}" in
debian | fedora | alpine) linux)
echo "::group::Install packages required for installation (jq, curl, and/or tar)" if ! type -P jq &>/dev/null || ! type -P curl &>/dev/null || ! type -P tar &>/dev/null; then
sys_packages=() case "${base_distro}" in
if ! type -P curl &>/dev/null; then debian | fedora | alpine)
sys_packages+=(ca-certificates curl) echo "::group::Install packages required for installation (jq, curl, and/or tar)"
fi sys_packages=()
if ! type -P tar &>/dev/null; then if ! type -P curl &>/dev/null; then
sys_packages+=(tar) sys_packages+=(ca-certificates curl)
fi fi
if [[ "${dnf:-}" == "yum" ]]; then if ! type -P tar &>/dev/null; then
# On RHEL7-based distribution jq requires EPEL sys_packages+=(tar)
if ! type -P jq &>/dev/null; then fi
sys_packages+=(epel-release) if [[ "${dnf:-}" == "yum" ]]; then
sys_install "${sys_packages[@]}" # On RHEL7-based distribution jq requires EPEL
sys_install jq --enablerepo=epel if ! type -P jq &>/dev/null; then
else sys_packages+=(epel-release)
sys_install "${sys_packages[@]}" sys_install "${sys_packages[@]}"
fi sys_install jq --enablerepo=epel
else else
if ! type -P jq &>/dev/null; then sys_install "${sys_packages[@]}"
sys_packages+=(jq) fi
fi else
sys_install "${sys_packages[@]}" if ! type -P jq &>/dev/null; then
fi sys_packages+=(jq)
echo "::endgroup::" fi
;; sys_install "${sys_packages[@]}"
esac fi
fi echo "::endgroup::"
;;
*) warn "install-action requires at least jq and curl on non-Debian/Fedora/Alpine-based Linux" ;;
esac
fi
;;
macos)
if ! type -P jq &>/dev/null || ! type -P curl &>/dev/null; then
warn "install-action requires at least jq and curl on macOS"
fi
;;
windows)
if ! type -P curl &>/dev/null; then
warn "install-action requires at least curl on Windows"
fi
# https://github.com/jqlang/jq/issues/1854
jq_use_b=1
jq="${install_action_dir}/jq/bin/jq.exe"
if [[ ! -f "${jq}" ]]; then
jq_version=$(jq --version || echo "")
case "${jq_version}" in
jq-1.[7-9]* | jq-1.[1-9][0-9]*) jq='' ;;
*)
_tmp=$(jq <<<"{}" -r .a || echo "")
if [[ "${_tmp}" == "null" ]]; then
jq=''
jq_use_b=''
else
info "old jq (${jq_version}) has bug on Windows; downloading jq 1.7 (will not be added to PATH)"
mkdir -p "${install_action_dir}/jq/bin"
url='https://github.com/jqlang/jq/releases/download/jq-1.7/jq-windows-amd64.exe'
checksum='2e9cc54d0a5d098e2007decec1dbb3c555ca2f5aabded7aec907fe0ffe401aab'
(
cd "${install_action_dir}/jq/bin"
download_and_checksum "${url}" "${checksum}"
mv tmp jq.exe
)
echo
fi
;;
esac
fi
;;
*) bail "unsupported host OS '${host_os}'" ;;
esac
call_jq() {
# https://github.com/jqlang/jq/issues/1854
if [[ -n "${jq_use_b}" ]]; then
"${jq:-jq}" -b "$@"
else
"${jq:-jq}" "$@"
fi
}
unsupported_tools=() unsupported_tools=()
for tool in "${tools[@]}"; do for tool in "${tools[@]}"; do
@@ -463,13 +544,11 @@ for tool in "${tools[@]}"; do
read_manifest "protoc" "${version}" read_manifest "protoc" "${version}"
read_download_info "protoc" "${version}" read_download_info "protoc" "${version}"
# Copying files to /usr/local/include requires sudo, so do not use it. # Copying files to /usr/local/include requires sudo, so do not use it.
bin_dir="${HOME}/.install-action/bin" bin_dir="${install_action_dir}/bin"
include_dir="${HOME}/.install-action/include" include_dir="${install_action_dir}/include"
if [[ ! -d "${bin_dir}" ]]; then init_install_action_bin_dir
mkdir -p "${bin_dir}" if [[ ! -e "${include_dir}" ]]; then
mkdir -p "${include_dir}" mkdir -p "${include_dir}"
canonicalize_windows_path "${bin_dir}" >>"${GITHUB_PATH}"
export PATH="${PATH}:${bin_dir}"
fi fi
if ! type -P unzip &>/dev/null; then if ! type -P unzip &>/dev/null; then
case "${base_distro}" in case "${base_distro}" in
@@ -488,10 +567,10 @@ for tool in "${tools[@]}"; do
mv "bin/protoc${exe}" "${bin_dir}/" mv "bin/protoc${exe}" "${bin_dir}/"
mkdir -p "${include_dir}/" mkdir -p "${include_dir}/"
cp -r include/. "${include_dir}/" cp -r include/. "${include_dir}/"
bin_dir=$(canonicalize_windows_path "${bin_dir}")
if [[ -z "${PROTOC:-}" ]]; then if [[ -z "${PROTOC:-}" ]]; then
info "setting PROTOC environment variable" _bin_dir=$(canonicalize_windows_path "${bin_dir}")
echo "PROTOC=${bin_dir}/protoc${exe}" >>"${GITHUB_ENV}" info "setting PROTOC environment variable to '${_bin_dir}/protoc${exe}'"
echo "PROTOC=${_bin_dir}/protoc${exe}" >>"${GITHUB_ENV}"
fi fi
) )
rm -rf "${tmp_dir}" rm -rf "${tmp_dir}"
@@ -514,7 +593,6 @@ for tool in "${tools[@]}"; do
snap_install valgrind --classic snap_install valgrind --classic
;; ;;
cargo-binstall) cargo-binstall)
info "installing ${tool}@${version}"
case "${version}" in case "${version}" in
latest) ;; latest) ;;
*) warn "specifying the version of ${tool} is not supported by this action" ;; *) warn "specifying the version of ${tool} is not supported by this action" ;;
@@ -571,34 +649,37 @@ for tool in "${tools[@]}"; do
;; ;;
esac esac
info "${tool} installed at $(type -P "${tool}${exe}")"
# At least cargo-udeps 0.1.30 and wasm-pack 0.12.0 do not support --version option.
case "${tool}" in case "${tool}" in
cargo-careful) ;; # cargo-careful 0.3.4 does not support neither --version nor --help option. xbuild) tool_bin="x" ;;
*) tool_bin="${tool}" ;;
esac
installed_at=$(type -P "${tool_bin}${exe}" || echo "")
if [[ -n "${installed_at}" ]]; then
tool_bin="${tool_bin}${exe}"
else
installed_at=$(type -P "${tool_bin}" || echo "")
fi
if [[ -n "${installed_at}" ]]; then
info "${tool} installed at ${installed_at}"
else
warn "${tool} should be installed at ${bin_dir:+"${bin_dir}/"}${tool_bin}${exe}; but ${tool_bin}${exe} not found in path"
fi
# cargo-udeps 0.1.30 and wasm-pack 0.12.0 do not support --version option.
case "${tool}" in
cargo-careful | cargo-machete) ;; # cargo-careful 0.3.4 and cargo-machete 0.5.0 do not support neither --version nor --help option.
cargo-*) cargo-*)
if type -P cargo &>/dev/null; then case "${tool}" in
case "${tool}" in cargo-valgrind) rx "${tool_bin}" "${tool#cargo-}" --help ;; # cargo-valgrind 2.1.0's --version option just calls cargo's --version option
cargo-valgrind) x cargo "${tool#cargo-}" --help ;; # cargo-valgrind 2.1.0's --version option just calls cargo's --version option *)
*) if ! rx "${tool_bin}" "${tool#cargo-}" --version; then
if ! x cargo "${tool#cargo-}" --version; then rx "${tool_bin}" "${tool#cargo-}" --help
x cargo "${tool#cargo-}" --help fi
fi ;;
;; esac
esac
else
case "${tool}" in
cargo-valgrind) x "${tool}" "${tool#cargo-}" --help ;; # cargo-valgrind 2.1.0's --version option just calls cargo's --version option
*)
if ! x "${tool}" "${tool#cargo-}" --version; then
x "${tool}" "${tool#cargo-}" --help
fi
;;
esac
fi
;; ;;
*) *)
if ! x "${tool}" --version; then if ! rx "${tool_bin}" --version; then
x "${tool}" --help rx "${tool_bin}" --help
fi fi
;; ;;
esac esac
@@ -606,7 +687,7 @@ for tool in "${tools[@]}"; do
done done
if [[ ${#unsupported_tools[@]} -gt 0 ]]; then if [[ ${#unsupported_tools[@]} -gt 0 ]]; then
IFS=$',' IFS=','
info "install-action does not support ${unsupported_tools[*]}; fallback to cargo-binstall" info "install-action does not support ${unsupported_tools[*]}; fallback to cargo-binstall"
IFS=$'\n\t' IFS=$'\n\t'
install_cargo_binstall install_cargo_binstall

View File

@@ -21,26 +21,26 @@
} }
}, },
"latest": { "latest": {
"version": "1.2.1" "version": "1.4.1"
}, },
"1.2.1": { "1.4.1": {
"x86_64_linux_musl": { "x86_64_linux_musl": {
"checksum": "579db0cea00c5afab93a957f5db7aea9b762e0a7cd1e882b5b9fdb94fed78471" "checksum": "382c45dfbdbcaee37f10cb37d6e519c75d174622cab9e287521eaa3b5f71e162"
}, },
"x86_64_macos": { "x86_64_macos": {
"checksum": "50b8090d74b77de12c1dbaa7204476c927c02ee8a5cefddf7959412f72cca5d1" "checksum": "1a553c56353ce90f5d785a1258de5c49ba1fd55d5fb7bda73a94d951b6b5637c"
}, },
"x86_64_windows": { "x86_64_windows": {
"checksum": "8906f2ab674125d73b9cca71db6615fa432b1aa594e6fea7a896b4931798066d" "checksum": "851ec021dd1941bd7e29145bfd913296bd69df7394a5e4872c07ae42028f5137"
}, },
"aarch64_linux_musl": { "aarch64_linux_musl": {
"checksum": "b847dd62ea44b9bcf55a267ee247c69fbe678f291bdf1705ed3565425f6a5cf5" "checksum": "471f47fec2e92bbdeea4466f57e6340fd2c596d5429c1c348329634be706eb7b"
}, },
"aarch64_macos": { "aarch64_macos": {
"checksum": "faedc148029f30496438548b7e7a4583f0cc7fe14e61e8b838df83c5a47a32c8" "checksum": "871fe09b21ae666352f909ee5be53b7eb118471342ab6275e932700c004d2359"
}, },
"aarch64_windows": { "aarch64_windows": {
"checksum": "6809ae3c7f35232ea1c2f2bbaa2bb1aa7493764cbd8445416a801ab781f83d0b" "checksum": "f306e459de20a555acdffa97b6fce367c8d433228785f0d66f995a1f4e63a722"
} }
} }
} }

View File

@@ -12,7 +12,21 @@
} }
}, },
"latest": { "latest": {
"version": "0.3.4" "version": "0.4.0"
},
"0.4": {
"version": "0.4.0"
},
"0.4.0": {
"x86_64_linux_musl": {
"checksum": "54cd7e1972e9faf085e3d0798c02054d064bc72de051a2636ece6f5b0ce0176d"
},
"x86_64_macos": {
"checksum": "70d92ad8adf84192caa2066ba981780df926c8aa6cbd398fe489f87af336fe61"
},
"x86_64_windows": {
"checksum": "01ebcae79d9ba0cbb56e5c6bb5757d9cd074a3635704d15b0ef62a000c5d03a8"
}
}, },
"0.3": { "0.3": {
"version": "0.3.4" "version": "0.3.4"

View File

@@ -19,10 +19,24 @@
} }
}, },
"latest": { "latest": {
"version": "0.14.1" "version": "0.14.2"
}, },
"0.14": { "0.14": {
"version": "0.14.1" "version": "0.14.2"
},
"0.14.2": {
"x86_64_linux_musl": {
"checksum": "5a4913ae3ce1298bd96d29b794ed245b0394f5ec0e2802f19d41fedc70bb5c3c"
},
"x86_64_macos": {
"checksum": "89c80839cfbb87bb8b0e4a1d55d638b79d0d9cac8fa53c0cbbe8fe271c8abcf4"
},
"x86_64_windows": {
"checksum": "25e59c4916a4e28d507185c6783051d0e0824d6e5af5737560be7bcfb1fc7af3"
},
"aarch64_macos": {
"checksum": "c1af65dac2330777744513430200d52cb615de9bef2fdb88cfec1a2e9f87c5f9"
}
}, },
"0.14.1": { "0.14.1": {
"x86_64_linux_musl": { "x86_64_linux_musl": {

View File

@@ -11,10 +11,34 @@
} }
}, },
"latest": { "latest": {
"version": "0.6.4" "version": "0.6.7"
}, },
"0.6": { "0.6": {
"version": "0.6.4" "version": "0.6.7"
},
"0.6.7": {
"x86_64_linux_musl": {
"checksum": "d5c4b78a4e660184fd32f017efbee65015ec86c041623b320c23bb87764e37e2"
},
"x86_64_macos": {
"checksum": "ffa03e78bdc71efd53c1fcbd16d92be0a79c1092de03fd43320db2a3b3800950"
}
},
"0.6.6": {
"x86_64_linux_musl": {
"checksum": "daffbfae6caf0e1c40b53cf33569074e4b1b80b8697e27f91eecd9a0a1f85809"
},
"x86_64_macos": {
"checksum": "ac0d058aab49ab751e072f1978972c22ffa195d68af43d04a9a801bffabbaa16"
}
},
"0.6.5": {
"x86_64_linux_musl": {
"checksum": "250a165b843022ee5e1a356a791f832bf2051a11ba97a9de531060bb98f7bdc0"
},
"x86_64_macos": {
"checksum": "6074cd8dd9ddf553f6915a0dd2c183bf7dd233bfd78322b8db2b421fb1a89a81"
}
}, },
"0.6.4": { "0.6.4": {
"x86_64_linux_musl": { "x86_64_linux_musl": {

View File

@@ -2,7 +2,244 @@
"rust_crate": "cargo-hack", "rust_crate": "cargo-hack",
"template": null, "template": null,
"latest": { "latest": {
"version": "0.5.29" "version": "0.6.8"
},
"0.6": {
"version": "0.6.8"
},
"0.6.8": {
"x86_64_linux_musl": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.8/cargo-hack-x86_64-unknown-linux-musl.tar.gz",
"checksum": "0e99e6ecf6f04cfeb7bd126559f94c7d54c891cd6609fc2d5e6b327da9178069"
},
"x86_64_macos": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.8/cargo-hack-x86_64-apple-darwin.tar.gz",
"checksum": "f21d6c824bc9cac5c174fa61b8375df35f3c022a19eeefd7156dcaf99c18cb94"
},
"x86_64_windows": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.8/cargo-hack-x86_64-pc-windows-msvc.zip",
"checksum": "d3cedb628d4bebfbafd4ff83e47bc5185a0a907c721ab0013af0dcbf0cad7c53"
},
"aarch64_linux_musl": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.8/cargo-hack-aarch64-unknown-linux-musl.tar.gz",
"checksum": "ea6e74180776d0908b21d938515e4a04fcdcb02d564bf08e397dc7191cbce524"
},
"aarch64_macos": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.8/cargo-hack-aarch64-apple-darwin.tar.gz",
"checksum": "9486a0e12919c667e17b9fd22e43c6449369ebeca0e705ed372090e87610e8fc"
},
"aarch64_windows": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.8/cargo-hack-aarch64-pc-windows-msvc.tar.gz",
"checksum": "946a28154a087ee4c1835327973e3e914d90d9e4840bf67b22422f2b634aa214"
}
},
"0.6.7": {
"x86_64_linux_musl": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.7/cargo-hack-x86_64-unknown-linux-musl.tar.gz",
"checksum": "af3f992ce3bc2f766e1dedd91777b00839760d2571abc3d85f6c6b8a8c743ef8"
},
"x86_64_macos": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.7/cargo-hack-x86_64-apple-darwin.tar.gz",
"checksum": "c92a155df6839a17e8b167c6a1d0e5adb55a21623186f9401a151b3b478c041b"
},
"x86_64_windows": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.7/cargo-hack-x86_64-pc-windows-msvc.zip",
"checksum": "3817eed7255cf9683cf9fa580e067584a062cb7029a73b7057de24c2938d1783"
},
"aarch64_linux_musl": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.7/cargo-hack-aarch64-unknown-linux-musl.tar.gz",
"checksum": "decd3237e11fef4d4b30052405905d549d05b9b09c3efe87d45a6f96abbcd460"
},
"aarch64_macos": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.7/cargo-hack-aarch64-apple-darwin.tar.gz",
"checksum": "e36fdcdf6b5064f84837acf3616cac1f191ba7af8f4c6bb599d3eb541cc712fb"
},
"aarch64_windows": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.7/cargo-hack-aarch64-pc-windows-msvc.tar.gz",
"checksum": "0aac8f8cb2b3a0e6158f42318b429bd2720ae55f15ca05477e4268bd3a8c16ea"
}
},
"0.6.6": {
"x86_64_linux_musl": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.6/cargo-hack-x86_64-unknown-linux-musl.tar.gz",
"checksum": "c706770f61c4dcf3dfc0c87125b443306787032c50bf61d30724bac620846a48"
},
"x86_64_macos": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.6/cargo-hack-x86_64-apple-darwin.tar.gz",
"checksum": "d5a619778858d18d4ef3b291012b709b509a79ec66dad41590c692d5f35a30c8"
},
"x86_64_windows": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.6/cargo-hack-x86_64-pc-windows-msvc.zip",
"checksum": "eb56fab90b784fc668e9c25cece9967d296026a24c79db571f7420aca7bd956d"
},
"aarch64_linux_musl": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.6/cargo-hack-aarch64-unknown-linux-musl.tar.gz",
"checksum": "a5d8a424c30bc3b3b6b9e44aa3810d5995dca7e648bfe2f139ef0af14ad8662e"
},
"aarch64_macos": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.6/cargo-hack-aarch64-apple-darwin.tar.gz",
"checksum": "aacf5cebfe7523ba1a610192bd76dcccfbea1b16aa8e8bd3ed8356abd5809980"
},
"aarch64_windows": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.6/cargo-hack-aarch64-pc-windows-msvc.tar.gz",
"checksum": "329f030f530bb65290150e4bf282065ecfe4f988aee6763fb87720e0dc60b4c9"
}
},
"0.6.5": {
"x86_64_linux_musl": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.5/cargo-hack-x86_64-unknown-linux-musl.tar.gz",
"checksum": "767c91d80cacf9568576d9263b8801d4c38a245c472ac3c58320b15824539a74"
},
"x86_64_macos": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.5/cargo-hack-x86_64-apple-darwin.tar.gz",
"checksum": "20530649af2bfa2620368b6a111e5538f9306c4f64a65a1e6dbbb32a7a291b8a"
},
"x86_64_windows": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.5/cargo-hack-x86_64-pc-windows-msvc.zip",
"checksum": "82731808c811daa55021e8a463884c3d1fa3ff4af67fdfd1b0f8db9936ec91df"
},
"aarch64_linux_musl": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.5/cargo-hack-aarch64-unknown-linux-musl.tar.gz",
"checksum": "743fe76f2115bedf6f5a86784ea254c105f171aeeb75e5f2845d6aa83be7319c"
},
"aarch64_macos": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.5/cargo-hack-aarch64-apple-darwin.tar.gz",
"checksum": "3a9ab29db73449b779656199ae645d7b4a3e055e22ee6fa056c7ec61cd57cb87"
},
"aarch64_windows": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.5/cargo-hack-aarch64-pc-windows-msvc.tar.gz",
"checksum": "2bf9b10a41ce7585fa60b1be8424283433eb000c542652145d89d95be7a6fc99"
}
},
"0.6.4": {
"x86_64_linux_musl": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.4/cargo-hack-x86_64-unknown-linux-musl.tar.gz",
"checksum": "f50d28b566a270c49cd5d44fca3badfc0279bd681e9788872c875f81f2125ca0"
},
"x86_64_macos": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.4/cargo-hack-x86_64-apple-darwin.tar.gz",
"checksum": "09502a5e1e66457cc98f114e3ab80ace837c42ca20d12439b45ca09febeada05"
},
"x86_64_windows": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.4/cargo-hack-x86_64-pc-windows-msvc.zip",
"checksum": "5e5f61e74ae060b5ff1aeb0ee593a63762ad5e57fe9fbd56d214af96e8b79db6"
},
"aarch64_linux_musl": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.4/cargo-hack-aarch64-unknown-linux-musl.tar.gz",
"checksum": "0b3cf069d1e433882f800129b288e76f8b0f4972e2f5d2746a43f5976b3f234d"
},
"aarch64_macos": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.4/cargo-hack-aarch64-apple-darwin.tar.gz",
"checksum": "01e237e764b098d1a482e4fc31c2aa1a64d6756e885421a95faa5578cfdd2a50"
},
"aarch64_windows": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.4/cargo-hack-aarch64-pc-windows-msvc.tar.gz",
"checksum": "af68ead95d98a18750da188259678ce53f8cecae8fb7109ae0c631161da8406e"
}
},
"0.6.3": {
"x86_64_linux_musl": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.3/cargo-hack-x86_64-unknown-linux-musl.tar.gz",
"checksum": "b9515accb2c8984841a152f860d6c7c827ab4f91c4e5012d86ef7c44f319bd41"
},
"x86_64_macos": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.3/cargo-hack-x86_64-apple-darwin.tar.gz",
"checksum": "c144b7912bbc9089c116d7c4610c4fc221705af93d6994c31314663bba47785f"
},
"x86_64_windows": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.3/cargo-hack-x86_64-pc-windows-msvc.zip",
"checksum": "a34b31594d58e3ca17e00e1e0837990461570b6382c3ac7e72fbb7c873b3e9f7"
},
"aarch64_linux_musl": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.3/cargo-hack-aarch64-unknown-linux-musl.tar.gz",
"checksum": "c8ee443bb05cd8551b2d9d93befbe7a8f0994a128bc33125cf97da443077b579"
},
"aarch64_macos": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.3/cargo-hack-aarch64-apple-darwin.tar.gz",
"checksum": "279e5cbbcbbe607ac5c81f204f0ae83a62132476fa1ff53f0d8ec24d879bf7f2"
},
"aarch64_windows": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.3/cargo-hack-aarch64-pc-windows-msvc.tar.gz",
"checksum": "63a9df0cdad068b3124a858aa3d47c93513caaaea0efc61befdb0091efefb64d"
}
},
"0.6.2": {
"x86_64_linux_musl": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.2/cargo-hack-x86_64-unknown-linux-musl.tar.gz",
"checksum": "322d1a965c94656e7b766dbdf4f5726372fdd8ac3b98b7aa3fe0b50dd4892be9"
},
"x86_64_macos": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.2/cargo-hack-x86_64-apple-darwin.tar.gz",
"checksum": "a6713d40d955691b0efc48d77f42a9c58f740e9036eb052a4c5b8843477054d3"
},
"x86_64_windows": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.2/cargo-hack-x86_64-pc-windows-msvc.zip",
"checksum": "a3146a6454e02a41c56676ed96ddf5acab6ff97117a8a52c19432756dc268396"
},
"aarch64_linux_musl": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.2/cargo-hack-aarch64-unknown-linux-musl.tar.gz",
"checksum": "305b59c9d89fa76ea91002894cea58e296c062da896a2784c04a39305221079b"
},
"aarch64_macos": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.2/cargo-hack-aarch64-apple-darwin.tar.gz",
"checksum": "860b867a047c8d89aa2b0adb12d6ff085190bde80516a49be6e2cad4cc298bc5"
},
"aarch64_windows": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.2/cargo-hack-aarch64-pc-windows-msvc.tar.gz",
"checksum": "73c04e1670b7d7d7696b81ccdc1ea27f7ddcc8028883cf5b5df8edcda61b899c"
}
},
"0.6.1": {
"x86_64_linux_musl": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.1/cargo-hack-x86_64-unknown-linux-musl.tar.gz",
"checksum": "85f79339499995238287591c86b9ddc9aedf6c4c03f771f9aa7ed0b97dc6da0e"
},
"x86_64_macos": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.1/cargo-hack-x86_64-apple-darwin.tar.gz",
"checksum": "c92fb2bd0351e4ac6ea087e5169b5fc56bc03c9afc3c8a299c21aae8ecda8067"
},
"x86_64_windows": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.1/cargo-hack-x86_64-pc-windows-msvc.zip",
"checksum": "532a25b327dd4fcd9529cc0b2e47caa7919f15d2e40a7477c34a39f40dfea54b"
},
"aarch64_linux_musl": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.1/cargo-hack-aarch64-unknown-linux-musl.tar.gz",
"checksum": "4855ea417b54abca02d0fd076fa1cfffd2068ac2f4abbafc52261a7fa2a9ebfa"
},
"aarch64_macos": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.1/cargo-hack-aarch64-apple-darwin.tar.gz",
"checksum": "fe3c9126fa64f7ef60a9a4e78c77f9741f9848221cc44c43f9346a7f9b268bca"
},
"aarch64_windows": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.1/cargo-hack-aarch64-pc-windows-msvc.tar.gz",
"checksum": "0c6c21cc1e11c7f2794a4e7c800d2459148a7db33dc162af7c2ccd057ca38ee9"
}
},
"0.6.0": {
"x86_64_linux_musl": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.0/cargo-hack-x86_64-unknown-linux-musl.tar.gz",
"checksum": "c1a539de7f0890527d6ecd87c0ac73097921a0cf071ded9a3cf60e6c387ba69d"
},
"x86_64_macos": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.0/cargo-hack-x86_64-apple-darwin.tar.gz",
"checksum": "41fd4566cf743ab06a46ee556be251e8948b1ecc316b2e61bc25ecc818cfaf91"
},
"x86_64_windows": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.0/cargo-hack-x86_64-pc-windows-msvc.zip",
"checksum": "a29683e96871938cb7b63f8389f6a7f6b48b10b40999a5f6b6b3abb0988b3b9f"
},
"aarch64_linux_musl": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.0/cargo-hack-aarch64-unknown-linux-musl.tar.gz",
"checksum": "f5156e8522abd9c2545425ed251da6411bf824b5d94cb0000e0a90153c78b8a2"
},
"aarch64_macos": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.0/cargo-hack-aarch64-apple-darwin.tar.gz",
"checksum": "c8292ab17351307d71fcbe68dad39e0019227b89c3a73dc4a0d6db8ca0b2663e"
},
"aarch64_windows": {
"url": "https://github.com/taiki-e/cargo-hack/releases/download/v0.6.0/cargo-hack-aarch64-pc-windows-msvc.tar.gz",
"checksum": "9d7ca4e2c0530ad966662a56dd7b8b211cfe1067c4e46813ff82f18476dd24f8"
}
}, },
"0.5": { "0.5": {
"version": "0.5.29" "version": "0.5.29"

View File

@@ -18,10 +18,95 @@
} }
}, },
"latest": { "latest": {
"version": "0.5.28" "version": "0.5.33"
}, },
"0.5": { "0.5": {
"version": "0.5.28" "version": "0.5.33"
},
"0.5.33": {
"x86_64_linux_musl": {
"checksum": "3274fb95c5d7ab7dd37db6b75e77b666c6fc06b0bd0172e7923af95fe77711da"
},
"x86_64_macos": {
"checksum": "e890a29534e8a10439bd8c8fccd39867d2cb016f82d7b51e615c60caf67491b7"
},
"x86_64_windows": {
"checksum": "332004d47ad0259fbc077c3dde2fe7f7b51dadcea859ccc33759bc149a38b777"
},
"aarch64_linux_musl": {
"checksum": "dd6deacc791de61dc31e45537bf2e7c9c8c652f51e06357d4a700ec7e81188c9"
},
"aarch64_macos": {
"checksum": "8bc5722370884500381eae586910b633f2a215cd5b5feed31d67682e90bd8412"
}
},
"0.5.32": {
"x86_64_linux_musl": {
"checksum": "2709f1c132eac8c3e1e98f658e2f8fd79f71f0a72b373491aad9e92df3b6684c"
},
"x86_64_macos": {
"checksum": "d56c7b8d5ea02196b8682d242440a400566583f724dee9c9832a99ed9734fa0e"
},
"x86_64_windows": {
"checksum": "194ec6f3657edab3c5f9a4d7a5bb2ab614084d7484f69274d02798fcd2dbea0c"
},
"aarch64_linux_musl": {
"checksum": "2274d691284e4de55fa0a0fd4e7b5003db21f7c62d72986586a81a169cafd7ee"
},
"aarch64_macos": {
"checksum": "7893b26db568ce0c606c0b07cad52659abf2ee488d385581e166fa20924168e5"
}
},
"0.5.31": {
"x86_64_linux_musl": {
"checksum": "f3814f9446f441c8b280ca93ba5aaf211295a6c8363d52e03d7e700808e6692c"
},
"x86_64_macos": {
"checksum": "9cd643daafc0e868c5c284a68cefb57fbc3bb2a11e8c59e54e738168bc691126"
},
"x86_64_windows": {
"checksum": "392cb5e11eaebd21f7ae865807837d0ab54df86e7ab5f98d3bf5b3cda65fea93"
},
"aarch64_linux_musl": {
"checksum": "0261bbfa0bd49964ca3dbd3041ec3fe5b23efd62b51e794bf516cc964af24079"
},
"aarch64_macos": {
"checksum": "9b7e2cb8fbc6694c2a0fd2abb7867108447c39350ca0fd3688a1b991877dff69"
}
},
"0.5.30": {
"x86_64_linux_musl": {
"checksum": "6731e8d7767145debb825095ab3ab7b9ab25cf7f5a10d22d17c1ef4566fbf249"
},
"x86_64_macos": {
"checksum": "9f634e2bed2dff89ec21177daf8abc1d55c1cca07e73d52f70b796f63a7a3d52"
},
"x86_64_windows": {
"checksum": "60dd774010ae493d17ca052f33d4976f5fe13e462d5b0f731a6c5e39de7475e8"
},
"aarch64_linux_musl": {
"checksum": "87718e164f6206fe4b2cf9b600bcafa1b582f22509820147f1060569e1d9217c"
},
"aarch64_macos": {
"checksum": "58d6295dffafdb920a1096635f9dd5334e5911d3e27cd7bccb0d2d9f99cc86b2"
}
},
"0.5.29": {
"x86_64_linux_musl": {
"checksum": "963ef54eca8296c4c112f0453b9bc36e5103ab1bee2b272abeb1e3474ae4aab8"
},
"x86_64_macos": {
"checksum": "be124539c0a1cc99124b28bda4fa916b5189a706fc975add13c4299f74d31237"
},
"x86_64_windows": {
"checksum": "ac70d70ac560a433276b6037f684044fb66627a8ddab38fe999599951d075845"
},
"aarch64_linux_musl": {
"checksum": "5865b9f03bbc6684731eaaa2ae512bf85dc11ee409e25e77882f4183af1ac03d"
},
"aarch64_macos": {
"checksum": "e05bf23c4d8b0af4b3127e10cf3484ca107e32a808e1cab48e417a14d3542edc"
}
}, },
"0.5.28": { "0.5.28": {
"x86_64_linux_musl": { "x86_64_linux_musl": {

View File

@@ -2,7 +2,32 @@
"rust_crate": "cargo-machete", "rust_crate": "cargo-machete",
"template": null, "template": null,
"latest": { "latest": {
"version": "0.5.0" "version": "0.6.0"
},
"0.6": {
"version": "0.6.0"
},
"0.6.0": {
"x86_64_linux_musl": {
"url": "https://github.com/bnjbvr/cargo-machete/releases/download/v0.6.0/cargo-machete-v0.6.0-x86_64-unknown-linux-musl.tar.gz",
"checksum": "8f7f67f87c80d8ee331857e61c03762b71f9e68266a9193f4934cef1c8ccb449",
"bin": "cargo-machete-v0.6.0-x86_64-unknown-linux-musl/cargo-machete"
},
"x86_64_macos": {
"url": "https://github.com/bnjbvr/cargo-machete/releases/download/v0.6.0/cargo-machete-v0.6.0-x86_64-apple-darwin.tar.gz",
"checksum": "dab6a9127166b8889a1933864014664288e16a211a2e3de65585d69b18b84bbf",
"bin": "cargo-machete-v0.6.0-x86_64-apple-darwin/cargo-machete"
},
"x86_64_windows": {
"url": "https://github.com/bnjbvr/cargo-machete/releases/download/v0.6.0/cargo-machete-v0.6.0-x86_64-pc-windows-msvc.tar.gz",
"checksum": "4e3369fea5e87bdab2d4219dd07b69fa562a7b0081433464ead82dced36f3af1",
"bin": "cargo-machete-v0.6.0-x86_64-pc-windows-msvc/cargo-machete.exe"
},
"aarch64_macos": {
"url": "https://github.com/bnjbvr/cargo-machete/releases/download/v0.6.0/cargo-machete-v0.6.0-aarch64-apple-darwin.tar.gz",
"checksum": "c4957bade3109f147ebe1598fa8f0b555713bbe83310cd99c927fa25398ae847",
"bin": "cargo-machete-v0.6.0-aarch64-apple-darwin/cargo-machete"
}
}, },
"0.5": { "0.5": {
"version": "0.5.0" "version": "0.5.0"

View File

@@ -19,7 +19,52 @@
} }
}, },
"latest": { "latest": {
"version": "0.36.13" "version": "0.37.2"
},
"0.37": {
"version": "0.37.2"
},
"0.37.2": {
"x86_64_linux_musl": {
"checksum": "6413e92bbeab0e43aa933a2843cb7abfc087dee7a076f3b367d2b7a0054f1c88"
},
"x86_64_macos": {
"checksum": "265125172bf82d985bb71974b576a763c7da34ed7f6889ea324ca4910f728b54"
},
"x86_64_windows": {
"checksum": "5f20ef9b30620113d2b8c4c0663f4ba219afd8e01868774702889abe4ac75843"
},
"aarch64_macos": {
"checksum": "0cb0ad856383162cf2e3634e6264f096b420694bf78c224afc999d8033186eb1"
}
},
"0.37.1": {
"x86_64_linux_musl": {
"checksum": "6a4fbad3d519e6189772dd0b0d16aa137c8208e7492576ff11497645588459c0"
},
"x86_64_macos": {
"checksum": "a8dea1a7f8bc1e7e35bc14dc1cde15a2e122db1ee2ed8dbb787b5d4e33a19f12"
},
"x86_64_windows": {
"checksum": "531677bf6322139e694da4f37c5df722566675b32a020b7e0f37d4ec5d456052"
},
"aarch64_macos": {
"checksum": "b074fedfb6282b846e047a6336920d2d1bb65c6aa25ce03aa4465615e83a407d"
}
},
"0.37.0": {
"x86_64_linux_musl": {
"checksum": "ea7d52e9847c38f5aec60cd8e2f66fd90a9284f1e06fb25b3ef1276acb5251d7"
},
"x86_64_macos": {
"checksum": "3265730662da54c91002fb4d7deb93c61c46d05f937f751764f3625c22ead87a"
},
"x86_64_windows": {
"checksum": "09041e88db9ec51d2c93448ed4b16f78f0e838ee6e549b0139a71ae30cdc5239"
},
"aarch64_macos": {
"checksum": "8df5efcc19246c8e8fed753ad05f1d95efd2b9ecb84e3f306a36b8056ae631b9"
}
}, },
"0.36": { "0.36": {
"version": "0.36.13" "version": "0.36.13"

View File

@@ -21,10 +21,110 @@
} }
}, },
"latest": { "latest": {
"version": "0.1.14" "version": "0.1.19"
}, },
"0.1": { "0.1": {
"version": "0.1.14" "version": "0.1.19"
},
"0.1.19": {
"x86_64_linux_musl": {
"checksum": "ba393e37118a7f55c47cb14099c0554d5e5fcb3f4bfa422b608e00efb7bcefa2"
},
"x86_64_macos": {
"checksum": "dacffa0bf0b3e6fa1b587e82084bfbf8f74171240d50ecb3309a832f2e43f8e3"
},
"x86_64_windows": {
"checksum": "d6be0676301f3c6e6ba41f72a22e878b6e53a1a94cb6fd8a888cfa8fc8be4301"
},
"aarch64_linux_musl": {
"checksum": "fa5abed03b435bd6b70543f370fdc1c834611041b6b467d972bbec95aee1f9c1"
},
"aarch64_macos": {
"checksum": "376e4aa8f37ffacfd68b1f69fc0aa6ed7dc8f95bf5cc625fc054cc040e2ddd53"
},
"aarch64_windows": {
"checksum": "cde5b7a04a80e465e3ed677ecd75182f9d38e67db0b782d62caeb5f874c34f8b"
}
},
"0.1.18": {
"x86_64_linux_musl": {
"checksum": "d1cde56ac778d61f2179045d9f9f8086afabb1b5a371a35d82000a8cb7b9f150"
},
"x86_64_macos": {
"checksum": "307f516b0353132fa420e19eff3aae7f83ed84273eae5447752f886c23134bcc"
},
"x86_64_windows": {
"checksum": "bd4f276b0c115613992d9fa0ad8dd688828c5bf47c8b91a617638bb170549d7f"
},
"aarch64_linux_musl": {
"checksum": "efc430279c656b7c58965f41c82688ee10d84d4e5bfd193d3f7858d83db98982"
},
"aarch64_macos": {
"checksum": "b398d09d167b3fa253c835e56876151b59804ba083d9d6b4978d55bac767b692"
},
"aarch64_windows": {
"checksum": "a26eeef963905cc14de9dd1e11c8d6a7a1a7db812a040de37e3cdbef74cc546f"
}
},
"0.1.17": {
"x86_64_linux_musl": {
"checksum": "dbab6188ceca0396f80d6f6d931704568377fe5cb2985e3af54b73be721c1826"
},
"x86_64_macos": {
"checksum": "44134caa5b7a88bff8923c2616c4bc3e940b66539ec7d9bf47775f61873d4fc9"
},
"x86_64_windows": {
"checksum": "954948921af804f309368c587a38089a132225434be14d1f6a38f0140f39cb7b"
},
"aarch64_linux_musl": {
"checksum": "5317743fe7f1306f844062fe05c5777880219bd47a32047f5d9e7c5924b140ec"
},
"aarch64_macos": {
"checksum": "1550c655792cb18b03b6d3bec8ee74270eadb891c2f06b98c775134dd71b3801"
},
"aarch64_windows": {
"checksum": "fb81001414eea31810aa84943f2cf22d7f423b20170d1350534c04a3fc934344"
}
},
"0.1.16": {
"x86_64_linux_musl": {
"checksum": "30dc1bc067c6ac347bd0734a3117c0519e7ae715021d56952be3e207ed918447"
},
"x86_64_macos": {
"checksum": "7b81508be9bb73cef8caa8b1b09113eebd1897356aa371246572c4fa6d4b19b9"
},
"x86_64_windows": {
"checksum": "7d36c36b5069d1267ec5c485f904382db16c95b6a78288e3853687ec8691b013"
},
"aarch64_linux_musl": {
"checksum": "c42cba95957e6cea55800658367f59c709205d2888a0728817f15c95c6ed257f"
},
"aarch64_macos": {
"checksum": "27090dbcb9d3046eadc7add438748fdd0795b5caddb985614f5dbcc791902b27"
},
"aarch64_windows": {
"checksum": "0b727650f83886edf5ad8c97d2389273145e367df88f82f712de9b81f366c8e4"
}
},
"0.1.15": {
"x86_64_linux_musl": {
"checksum": "eac1436f7aa50bc34dd2675d97e9cfca6bbda1c9283be0185dae1e9c1c08cec6"
},
"x86_64_macos": {
"checksum": "658581d9ec6c82355c7472d25712eaa0acf048d5cd4a57382bd4a5ba73f212d3"
},
"x86_64_windows": {
"checksum": "b673c444480ca6f6fc983bda35953c2e15a40f484a682c805fbad963dbc02c41"
},
"aarch64_linux_musl": {
"checksum": "accbd49853bc706f9ab330342baf2ff0d2db8f66c26b76b9e6845b911511c2e4"
},
"aarch64_macos": {
"checksum": "4f9ae0aaddf0cda388461e246ac7eadbd0cc326eeb3a28d4ffaf1aa8b509d7d2"
},
"aarch64_windows": {
"checksum": "827c626f40bead527d6eaf7b48017cfd8f559938c370c893ab00c51d3668b37c"
}
}, },
"0.1.14": { "0.1.14": {
"x86_64_linux_musl": { "x86_64_linux_musl": {

View File

@@ -21,10 +21,90 @@
} }
}, },
"latest": { "latest": {
"version": "0.2.3" "version": "0.2.7"
}, },
"0.2": { "0.2": {
"version": "0.2.3" "version": "0.2.7"
},
"0.2.7": {
"x86_64_linux_musl": {
"checksum": "c513030b5c33de29c5d414801a61c64ceca9f58b3a021cd41339e13ef3335abc"
},
"x86_64_macos": {
"checksum": "88ce1a4a6fafbce491cb9037af499ee7dc85a6d3ac7f3c0592114a87782ab90f"
},
"x86_64_windows": {
"checksum": "ff6814dde2441a5c4ca60a5cf0571e907a5691fb4cbdc3dd0b32bb33966bafdb"
},
"aarch64_linux_musl": {
"checksum": "20b5a9e7936fe855877bb6d55090600f42bcf5ef2d86c720ef59e0a12864bd7b"
},
"aarch64_macos": {
"checksum": "8d408a5c9d8276e4e168b92b4a41c9e80bb352eabd431f93e8c147377b637328"
},
"aarch64_windows": {
"checksum": "2cbfa80772909a7195db75713c170f3b91afe8b37b7c7917ccb893b977545c24"
}
},
"0.2.6": {
"x86_64_linux_musl": {
"checksum": "95a00b9a7bac659c273422f68e6bb38e9e69fc0d1c163552ba7bebcf8c4915ee"
},
"x86_64_macos": {
"checksum": "412afe1fdc554ffdc155ba89e573b5c44cef8e5417440f29bf9ae4e9452bccb2"
},
"x86_64_windows": {
"checksum": "8d818e8d66bf5bfea09070377d7f7830d888cf45392734abecb18ab75c837060"
},
"aarch64_linux_musl": {
"checksum": "dcb7de74155818329078f4e0693e71c684e8088bd411bd9c310d40291540b60a"
},
"aarch64_macos": {
"checksum": "e45592ea2e8b9b1e8c00fea545543d5b62229e6159a32f1c11000c2cd680c693"
},
"aarch64_windows": {
"checksum": "7d35cbcf17b3114313f4cc19dbce84fcc51cb3949c0bc1f48110915a8aaac919"
}
},
"0.2.5": {
"x86_64_linux_musl": {
"checksum": "4c609f8d62669a8ecad8a83769e3a3adf5faab94820e69fd73473a37bfd39be4"
},
"x86_64_macos": {
"checksum": "82aea3272e74f49f10afd04f8e7451831408b006dc97a6d36b56bb81bfe862ec"
},
"x86_64_windows": {
"checksum": "a91f0c5f46b479c8e9ff84469a2e9dc5252301696db25900688b8180fb6436a5"
},
"aarch64_linux_musl": {
"checksum": "049696e69c9a1ed571dc93377e944c37e0c886517bc517a84de03a9591b0e013"
},
"aarch64_macos": {
"checksum": "125813b967068757faf1f9733ef018de0850a5e642e86d436b47b317202244ea"
},
"aarch64_windows": {
"checksum": "1cc8c6d9b2dc7619c45dd19fadc5f7465b8993d3242e402bdaac6eb5026bd500"
}
},
"0.2.4": {
"x86_64_linux_musl": {
"checksum": "5dfabc9d10e6eefb6c4847307c7b757a0c5ff20bbc55ba4c156e8ca941130122"
},
"x86_64_macos": {
"checksum": "1e3f1feed216477022ed2fcdff2019de896d6d179e432722009f507822028979"
},
"x86_64_windows": {
"checksum": "09ca80f82b52ed1cd312d5aa2901c4b12b25ad557c5e39e40566de62914cfc7c"
},
"aarch64_linux_musl": {
"checksum": "f358eb55bff29666df98b8b850f44c1dc47fd4f1c35c3f91bfe7173090afeaaf"
},
"aarch64_macos": {
"checksum": "b181d0ec01a93ba4909a8fefd9d4d533647448046fbae28fc81edd902d0658f1"
},
"aarch64_windows": {
"checksum": "a19cddb696f1bb0890c3d26cbe5cbdc12d3a489126941bb10b7fe4f48f6a4b64"
}
}, },
"0.2.3": { "0.2.3": {
"x86_64_linux_musl": { "x86_64_linux_musl": {

View File

@@ -18,7 +18,27 @@
} }
}, },
"latest": { "latest": {
"version": "0.26.1" "version": "0.27.0"
},
"0.27": {
"version": "0.27.0"
},
"0.27.0": {
"x86_64_linux_musl": {
"checksum": "b0cfcb086131773fb8a6a2cf8090c9416a8f233c2ae4bb887500f4e17d39fe7b"
},
"x86_64_macos": {
"checksum": "84c77137ca762c0cda3d4e8330ef3312efe72220da6470e8d657e5e545a11d2b"
},
"x86_64_windows": {
"checksum": "0114eef8cdb3c8466861dd64d7e16fd430cc0380406f230e16aa9e9c32af45e4"
},
"aarch64_linux_musl": {
"checksum": "6e4f5bc5adafd1730c82ec816b89279d5cdb8255180488fc560e646bef624687"
},
"aarch64_macos": {
"checksum": "375e7969d10faf76ec2ec29d11cbfa266e268357514cd05ed2a24554df7a8183"
}
}, },
"0.26": { "0.26": {
"version": "0.26.1" "version": "0.26.1"

View File

@@ -31,10 +31,30 @@
} }
}, },
"latest": { "latest": {
"version": "0.1.41" "version": "0.1.42"
}, },
"0.1": { "0.1": {
"version": "0.1.41" "version": "0.1.42"
},
"0.1.42": {
"x86_64_linux_musl": {
"checksum": "87566d3ef73ab818f64b078de211772b488a536e502b0cadf52d0aa72c98df4e"
},
"x86_64_macos": {
"checksum": "2bb16d6f823e76bae2c80f19327d80defdbad94da56af215a113fdb1ca2a723b"
},
"x86_64_windows": {
"checksum": "2042993093509a11f4f630f4d3dc0a1d48694f15890d6d2fbe1a8c3b1e1662c7"
},
"aarch64_linux_musl": {
"checksum": "c9d93d0114dda2f4992c284ab61a3be57aee5e02cd9a1a9911cfe7c4a93441f8"
},
"aarch64_macos": {
"checksum": "6ba990fea6cafbb305f731c903903aeaa730dee35afd93b4e9ce0efac1fc5d92"
},
"aarch64_windows": {
"checksum": "9e8fda00a0e495a0ed38a327379076ab305041b2fba65649dcb7dd5821463680"
}
}, },
"0.1.41": { "0.1.41": {
"x86_64_linux_musl": { "x86_64_linux_musl": {

22
manifests/dprint.json generated
View File

@@ -21,7 +21,27 @@
} }
}, },
"latest": { "latest": {
"version": "0.40.2" "version": "0.41.0"
},
"0.41": {
"version": "0.41.0"
},
"0.41.0": {
"x86_64_linux_musl": {
"checksum": "a22a0b771327e14bcb2508303502fa325bc85b2ca1c099ec49324c736be37fad"
},
"x86_64_macos": {
"checksum": "28ef80b29135b428c4b87d0b6468b9280f2dea97fd4bada27cf247c7b8870f2f"
},
"x86_64_windows": {
"checksum": "f0416f1418d512066178c123daa5bf3dc061bcebd3e344906087762e3e6bc250"
},
"aarch64_linux_gnu": {
"checksum": "736bae33b5ed619eafbb5f6bdf65f5806f728a7b51e229ba6732afd3117b8f89"
},
"aarch64_macos": {
"checksum": "3edb4521887bae5afe5ced25b5a540fc0f889b61cd335b3b4aab80b4d391981f"
}
}, },
"0.40": { "0.40": {
"version": "0.40.2" "version": "0.40.2"

50
manifests/protoc.json generated
View File

@@ -2,13 +2,57 @@
"rust_crate": null, "rust_crate": null,
"template": null, "template": null,
"latest": { "latest": {
"version": "3.24.1" "version": "3.24.3"
}, },
"3": { "3": {
"version": "3.24.1" "version": "3.24.3"
}, },
"3.24": { "3.24": {
"version": "3.24.1" "version": "3.24.3"
},
"3.24.3": {
"x86_64_linux_gnu": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v24.3/protoc-24.3-linux-x86_64.zip",
"checksum": "fc793561283d9ea6813fb757ae54f1afea6770afcd930904bdf3e590910420aa"
},
"x86_64_macos": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v24.3/protoc-24.3-osx-x86_64.zip",
"checksum": "13b45cdcde9b2101e982de897d5490cfd81dfa181605749c23982379ba0e3288"
},
"x86_64_windows": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v24.3/protoc-24.3-win64.zip",
"checksum": "c8f8c87e2eb6ba1e45f1f0b7b6c17f129309fff421c04290e272de1f7defd8f1"
},
"aarch64_linux_gnu": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v24.3/protoc-24.3-linux-aarch_64.zip",
"checksum": "77a5a41f3e9712af6a35de13143b9b2b77f075aa1ab18a63cca4483b30f6e3cd"
},
"aarch64_macos": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v24.3/protoc-24.3-osx-aarch_64.zip",
"checksum": "cca53adb73a6686dd60bb3b0da33961e6b9dab1f833c851b5e1bb7b5df02b36f"
}
},
"3.24.2": {
"x86_64_linux_gnu": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v24.2/protoc-24.2-linux-x86_64.zip",
"checksum": "1bfa935466cf902200cfba0e80d0ac60fec8e4c61aad3debc9fc97a135604b72"
},
"x86_64_macos": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v24.2/protoc-24.2-osx-x86_64.zip",
"checksum": "335d8623065234734d35b284f36326fbeded4bad88ca20a2df181761f67ca1a5"
},
"x86_64_windows": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v24.2/protoc-24.2-win64.zip",
"checksum": "e0cbca02e34aca5c76059f8b78000512a83c77409f7137ec6977fc554609f79f"
},
"aarch64_linux_gnu": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v24.2/protoc-24.2-linux-aarch_64.zip",
"checksum": "6593cf94c8d66f367e6526fda6c0ee0fdd442171a9e302c4625e6eb0958c06c1"
},
"aarch64_macos": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v24.2/protoc-24.2-osx-aarch_64.zip",
"checksum": "9624e53cd0c061afb5eab9e50fc0372383585dcc22bd2b1fb54fd5a4c3294989"
}
}, },
"3.24.1": { "3.24.1": {
"x86_64_linux_gnu": { "x86_64_linux_gnu": {

102
manifests/syft.json generated
View File

@@ -23,7 +23,107 @@
} }
}, },
"latest": { "latest": {
"version": "0.87.1" "version": "0.92.0"
},
"0.92": {
"version": "0.92.0"
},
"0.92.0": {
"x86_64_linux_musl": {
"checksum": "42159b11660fba22a12f8acad87022987337c0725b99d9cf645b690163d5bfce"
},
"x86_64_macos": {
"checksum": "ac6097010cbba3e0300672868d54670ff514458c6784683172680c47ba1696de"
},
"x86_64_windows": {
"checksum": "071135f3ddff00edd7c21663a08d8c8e1a9d199f55bb0f3cd36aaeb1e186875d"
},
"aarch64_linux_musl": {
"checksum": "33f6636e54eb1731b137c43257d8de8025282ca3570f307f3249ba7d5757ce10"
},
"aarch64_macos": {
"checksum": "8518d8682b5fe287caaabf3584331074220ab3f588ed3d47badf8428af87c320"
}
},
"0.91": {
"version": "0.91.0"
},
"0.91.0": {
"x86_64_linux_musl": {
"checksum": "51188401eb2a2425db1155ba18cb64db8275491a1e1049690fe6e8a371ff222a"
},
"x86_64_macos": {
"checksum": "724e6864a356834d8f3a40a3db2216884fc2c4cf69b67baa03cd08466e80fca9"
},
"x86_64_windows": {
"checksum": "9189e2246b5b649f8f09eb6d7500ee5f698253e94ebb34fab06ea6910489bcdc"
},
"aarch64_linux_musl": {
"checksum": "e9d3eb8120438325b79a8bf2a994692a111e5a47c63bbdf7762f7e9fb5a12f4a"
},
"aarch64_macos": {
"checksum": "d53362e44322e81015c9fa17f2254f2fa3d55dc04f18c1e0bc8891705aaf4696"
}
},
"0.90": {
"version": "0.90.0"
},
"0.90.0": {
"x86_64_linux_musl": {
"checksum": "7368d65830fe90ad96edac8a1d548193a36e18853f30e11b9f97772a573eae2a"
},
"x86_64_macos": {
"checksum": "5b2c36edf5a317eb45691484ad6eea6ffc2aee45fb97612492b93099a9407578"
},
"x86_64_windows": {
"checksum": "eaffd994f6c90ce39e7753f1cb48f5e61f7828b83dc8f27364490f02813d3645"
},
"aarch64_linux_musl": {
"checksum": "06bc39ff9ff3a3a5ba7055a158eace7bf105c8baf9eecfa33fbb1387e9dab4ed"
},
"aarch64_macos": {
"checksum": "9d596ab903becd9061cb9919e6e626835978246adaaf0392c871fdf34b974c38"
}
},
"0.89": {
"version": "0.89.0"
},
"0.89.0": {
"x86_64_linux_musl": {
"checksum": "b7cc7c1fb588454947ca678df7ddd906620d399a05f92a550b1b2d312fb26764"
},
"x86_64_macos": {
"checksum": "fd8fc86772d44b4a93f6566a897f832923cc6aa3de9434772a4ac0966377f8be"
},
"x86_64_windows": {
"checksum": "1a512c97b3fa504ad0b6c8c62660cfe980786a433a1582b460bd35005b36ceb2"
},
"aarch64_linux_musl": {
"checksum": "1c1c8e53d7157c3e861116e24eb494da0b660b3757ea69d6e05038c6ed76c50f"
},
"aarch64_macos": {
"checksum": "7d6d848c4375d10c2ebd019120a835f3d4527bb78250efc47fd2ba010a6798ba"
}
},
"0.88": {
"version": "0.88.0"
},
"0.88.0": {
"x86_64_linux_musl": {
"checksum": "d22c5e840c1a9ba10aee264d8bd015aca9c745bfd23efdfe75fdd36eeaf75ea8"
},
"x86_64_macos": {
"checksum": "f27232e327bf7f533dcffb2275250d325f45b69f5a0bd723c33f40f733e89e15"
},
"x86_64_windows": {
"checksum": "3c4bbcfee4c885e2b344c0de3dc77987057b27079cccb1b15435fd2399f92cfa"
},
"aarch64_linux_musl": {
"checksum": "2c5550833c9c958f29e0f0cd13fd962b1805b97c8775db73c44e274da42a7b39"
},
"aarch64_macos": {
"checksum": "8e822e53eb3f779e446466a93863a75da9e78cefdbcf1fa575b0645a45dcc868"
}
}, },
"0.87": { "0.87": {
"version": "0.87.1" "version": "0.87.1"

View File

@@ -2,13 +2,100 @@
"rust_crate": "wasmtime-cli", "rust_crate": "wasmtime-cli",
"template": null, "template": null,
"latest": { "latest": {
"version": "12.0.0" "version": "13.0.0"
},
"13": {
"version": "13.0.0"
},
"13.0": {
"version": "13.0.0"
},
"13.0.0": {
"x86_64_linux_gnu": {
"url": "https://github.com/bytecodealliance/wasmtime/releases/download/v13.0.0/wasmtime-v13.0.0-x86_64-linux.tar.xz",
"checksum": "af14e310a27d28e07675bb5d5254adee1cfddfeab0d9541e68b074f6263f4c2d",
"bin": "wasmtime-v13.0.0-x86_64-linux/wasmtime"
},
"x86_64_macos": {
"url": "https://github.com/bytecodealliance/wasmtime/releases/download/v13.0.0/wasmtime-v13.0.0-x86_64-macos.tar.xz",
"checksum": "a68023cd806de4432a102f24b07b204c8f83f8ce626c5ac4f248faa0807d0f49",
"bin": "wasmtime-v13.0.0-x86_64-macos/wasmtime"
},
"x86_64_windows": {
"url": "https://github.com/bytecodealliance/wasmtime/releases/download/v13.0.0/wasmtime-v13.0.0-x86_64-windows.zip",
"checksum": "ad1dea7c069eeda2432d4344221b05c46d146aaa7f5b16cbd468932e9fdaac76",
"bin": "wasmtime-v13.0.0-x86_64-windows/wasmtime.exe"
},
"aarch64_linux_gnu": {
"url": "https://github.com/bytecodealliance/wasmtime/releases/download/v13.0.0/wasmtime-v13.0.0-aarch64-linux.tar.xz",
"checksum": "2422b7c6c0d60bcfbab7d098ead0e120e24971525521a7758ea1a1db5ce57395",
"bin": "wasmtime-v13.0.0-aarch64-linux/wasmtime"
},
"aarch64_macos": {
"url": "https://github.com/bytecodealliance/wasmtime/releases/download/v13.0.0/wasmtime-v13.0.0-aarch64-macos.tar.xz",
"checksum": "12b32b91e07f53ea363505530b6fb3312a7ac1e71ae38957bb545011f10dbaab",
"bin": "wasmtime-v13.0.0-aarch64-macos/wasmtime"
}
}, },
"12": { "12": {
"version": "12.0.0" "version": "12.0.2"
}, },
"12.0": { "12.0": {
"version": "12.0.0" "version": "12.0.2"
},
"12.0.2": {
"x86_64_linux_gnu": {
"url": "https://github.com/bytecodealliance/wasmtime/releases/download/v12.0.2/wasmtime-v12.0.2-x86_64-linux.tar.xz",
"checksum": "f78bde3bd5758b9b228b98e45c5b40a3f48f73a8d0b19dbed111cd71fcdca570",
"bin": "wasmtime-v12.0.2-x86_64-linux/wasmtime"
},
"x86_64_macos": {
"url": "https://github.com/bytecodealliance/wasmtime/releases/download/v12.0.2/wasmtime-v12.0.2-x86_64-macos.tar.xz",
"checksum": "ed1a8760c5ddc9d3565a76908bb1e8a008b731b43ffa069b18d403542e49c683",
"bin": "wasmtime-v12.0.2-x86_64-macos/wasmtime"
},
"x86_64_windows": {
"url": "https://github.com/bytecodealliance/wasmtime/releases/download/v12.0.2/wasmtime-v12.0.2-x86_64-windows.zip",
"checksum": "9843d87d6bde399d7ccb3ba8699486f5a5ea145b106fa3bd4ca6e13ab2c61119",
"bin": "wasmtime-v12.0.2-x86_64-windows/wasmtime.exe"
},
"aarch64_linux_gnu": {
"url": "https://github.com/bytecodealliance/wasmtime/releases/download/v12.0.2/wasmtime-v12.0.2-aarch64-linux.tar.xz",
"checksum": "1a59e011e9deb4d3d7eb468028a56026499f5584727ea0a8c90012037455ac3c",
"bin": "wasmtime-v12.0.2-aarch64-linux/wasmtime"
},
"aarch64_macos": {
"url": "https://github.com/bytecodealliance/wasmtime/releases/download/v12.0.2/wasmtime-v12.0.2-aarch64-macos.tar.xz",
"checksum": "3f20a5b95950e7291f9dd07c9d84ebe115b34db283c7939b8f4b45e833b84a4e",
"bin": "wasmtime-v12.0.2-aarch64-macos/wasmtime"
}
},
"12.0.1": {
"x86_64_linux_gnu": {
"url": "https://github.com/bytecodealliance/wasmtime/releases/download/v12.0.1/wasmtime-v12.0.1-x86_64-linux.tar.xz",
"checksum": "59eb24b421c40104240d00848e3d9ffee5403b7e15958ace974aa2705050b0b3",
"bin": "wasmtime-v12.0.1-x86_64-linux/wasmtime"
},
"x86_64_macos": {
"url": "https://github.com/bytecodealliance/wasmtime/releases/download/v12.0.1/wasmtime-v12.0.1-x86_64-macos.tar.xz",
"checksum": "1975f51fd251fa19345776328f958985606458b5d7178c5a10fc72fd9f2ba59f",
"bin": "wasmtime-v12.0.1-x86_64-macos/wasmtime"
},
"x86_64_windows": {
"url": "https://github.com/bytecodealliance/wasmtime/releases/download/v12.0.1/wasmtime-v12.0.1-x86_64-windows.zip",
"checksum": "1878426629e78c7d80d26448fe5c9d8adf878383edc6ea4c772bc7ef59f963fb",
"bin": "wasmtime-v12.0.1-x86_64-windows/wasmtime.exe"
},
"aarch64_linux_gnu": {
"url": "https://github.com/bytecodealliance/wasmtime/releases/download/v12.0.1/wasmtime-v12.0.1-aarch64-linux.tar.xz",
"checksum": "7ec484c9f3c3002a789c41252b630ac509b0532102bfd3aa66e5d6d7dbebcc74",
"bin": "wasmtime-v12.0.1-aarch64-linux/wasmtime"
},
"aarch64_macos": {
"url": "https://github.com/bytecodealliance/wasmtime/releases/download/v12.0.1/wasmtime-v12.0.1-aarch64-macos.tar.xz",
"checksum": "975e286eb7ad4a4e17b7bb73b0b39dd6212ef7606f6d74ff63d5d8f2d5f7c339",
"bin": "wasmtime-v12.0.1-aarch64-macos/wasmtime"
}
}, },
"12.0.0": { "12.0.0": {
"x86_64_linux_gnu": { "x86_64_linux_gnu": {

34
manifests/xbuild.json generated Normal file
View File

@@ -0,0 +1,34 @@
{
"rust_crate": "xbuild",
"template": {
"x86_64_linux_gnu": {
"url": "https://github.com/rust-mobile/xbuild/releases/download/v${version}/xbuild-linux-x64",
"bin": "xbuild-linux-x64"
},
"x86_64_macos": {
"url": "https://github.com/rust-mobile/xbuild/releases/download/v${version}/xbuild-macos-x64",
"bin": "xbuild-macos-x64"
},
"x86_64_windows": {
"url": "https://github.com/rust-mobile/xbuild/releases/download/v${version}/xbuild-windows-x64.exe",
"bin": "xbuild-windows-x64.exe"
}
},
"latest": {
"version": "0.2.0"
},
"0.2": {
"version": "0.2.0"
},
"0.2.0": {
"x86_64_linux_gnu": {
"checksum": "9c294809ec3cb314b34e9f644b5bbf6ed262c25c1eeb78a3691836a95bc58e0d"
},
"x86_64_macos": {
"checksum": "e357205fde5262d77b8b1dc1cb066a4f7b4edd0a83b71b3513ae466b08343305"
},
"x86_64_windows": {
"checksum": "ce503cd64e6449d1c3e3bc2bfb621e9dd3ebfc775e99c97f98c2ab145e533946"
}
}
}

View File

@@ -1 +1 @@
git ls-files '*.sh' # TODO: check more files git ls-files

View File

@@ -5,7 +5,11 @@ IFS=$'\n\t'
cd "$(dirname "$0")"/../.. cd "$(dirname "$0")"/../..
# They don't provide prebuilt binaries for musl or old glibc host. # They don't provide prebuilt binaries for musl or old glibc host.
glibc_pre_2_34_incompat=(
xbuild
)
glibc_pre_2_31_incompat=( glibc_pre_2_31_incompat=(
"${glibc_pre_2_34_incompat[@]}"
zola zola
) )
glibc_pre_2_27_incompat=( glibc_pre_2_27_incompat=(
@@ -41,13 +45,18 @@ case "$(uname -s)" in
incompat_tools+=("${musl_incompat[@]}") incompat_tools+=("${musl_incompat[@]}")
else else
host_glibc_version=$(grep <<<"${ldd_version}" -E "GLIBC|GNU libc" | sed "s/.* //g") host_glibc_version=$(grep <<<"${ldd_version}" -E "GLIBC|GNU libc" | sed "s/.* //g")
higher_glibc_version=$(sort <<<"2.31"$'\n'"${host_glibc_version}" -Vu | tail -1) higher_glibc_version=$(sort <<<"2.34"$'\n'"${host_glibc_version}" -Vu | tail -1)
if [[ "${higher_glibc_version}" != "${host_glibc_version}" ]]; then if [[ "${higher_glibc_version}" != "${host_glibc_version}" ]]; then
higher_glibc_version=$(sort <<<"2.27"$'\n'"${host_glibc_version}" -Vu | tail -1) higher_glibc_version=$(sort <<<"2.31"$'\n'"${host_glibc_version}" -Vu | tail -1)
if [[ "${higher_glibc_version}" == "${host_glibc_version}" ]]; then if [[ "${higher_glibc_version}" != "${host_glibc_version}" ]]; then
incompat_tools+=("${glibc_pre_2_31_incompat[@]}") higher_glibc_version=$(sort <<<"2.27"$'\n'"${host_glibc_version}" -Vu | tail -1)
if [[ "${higher_glibc_version}" == "${host_glibc_version}" ]]; then
incompat_tools+=("${glibc_pre_2_31_incompat[@]}")
else
incompat_tools+=("${glibc_pre_2_27_incompat[@]}")
fi
else else
incompat_tools+=("${glibc_pre_2_27_incompat[@]}") incompat_tools+=("${glibc_pre_2_34_incompat[@]}")
fi fi
fi fi
fi fi
@@ -63,6 +72,10 @@ esac
tools=() tools=()
for manifest in tools/codegen/base/*.json; do for manifest in tools/codegen/base/*.json; do
tool_name=$(basename "${manifest%.*}") tool_name=$(basename "${manifest%.*}")
# cross -V requires rustc
if [[ "${tool_name}" == "cross" ]] && ! type -P rustc &>/dev/null; then
continue
fi
case "${host_os}" in case "${host_os}" in
linux*) linux*)
for incompat in ${incompat_tools[@]+"${incompat_tools[@]}"}; do for incompat in ${incompat_tools[@]+"${incompat_tools[@]}"}; do
@@ -111,14 +124,17 @@ case "${host_os}" in
fi fi
;; ;;
esac esac
# cargo-watch/watchexec-cli is supported by cargo-binstall (through quickinstall) # cargo-binstall requires cargo
case "${version}" in if type -P cargo &>/dev/null; then
latest) tools+=(cargo-watch watchexec-cli nextest) ;; # cargo-watch/watchexec-cli is supported by cargo-binstall (through quickinstall)
major.minor.patch) tools+=(cargo-watch@8.1.1 watchexec-cli@1.20.5 nextest@0.9.57) ;; case "${version}" in
major.minor) tools+=(cargo-watch@8.1 watchexec-cli@1.20 nextest@0.9) ;; latest) tools+=(cargo-watch watchexec-cli nextest) ;;
major) tools+=(cargo-watch@8 watchexec-cli@1) ;; major.minor.patch) tools+=(cargo-watch@8.1.1 watchexec-cli@1.20.5 nextest@0.9.57) ;;
*) exit 1 ;; major.minor) tools+=(cargo-watch@8.1 watchexec-cli@1.20 nextest@0.9) ;;
esac major) tools+=(cargo-watch@8 watchexec-cli@1) ;;
*) exit 1 ;;
esac
fi
# sort and dedup # sort and dedup
IFS=$'\n' IFS=$'\n'

View File

@@ -6,9 +6,13 @@ publish = false
[dependencies] [dependencies]
anyhow = "1" anyhow = "1"
flate2 = "1"
fs-err = "2" fs-err = "2"
minisign-verify = "0.2"
semver = { version = "1", features = ["serde"] } semver = { version = "1", features = ["serde"] }
serde = { version = "1", features = ["derive"] } serde = { version = "1", features = ["derive"] }
serde_json = "1" serde_json = "1"
sha2 = "0.10" sha2 = "0.10"
tar = "0.4"
toml = "0.8"
ureq = { version = "2", features = ["json"] } ureq = { version = "2", features = ["json"] }

View File

@@ -4,6 +4,9 @@
"rust_crate": "${package}", "rust_crate": "${package}",
"asset_name": "${package}-${rust_target}.tgz", "asset_name": "${package}-${rust_target}.tgz",
"version_range": "latest", "version_range": "latest",
"signing": {
"kind": "minisign-binstall"
},
"platform": { "platform": {
"x86_64_linux_musl": {}, "x86_64_linux_musl": {},
"x86_64_macos": { "x86_64_macos": {

View File

@@ -0,0 +1,13 @@
{
"repository": "https://github.com/rust-mobile/xbuild",
"tag_prefix": "v",
"rust_crate": "${package}",
"asset_name": "${package}-${os_name}-x64${exe}",
"bin": "${package}-${os_name}-x64${exe}",
"version_range": ">= 0.2.0",
"platform": {
"x86_64_linux_gnu": {},
"x86_64_macos": {},
"x86_64_windows": {}
}
}

View File

@@ -1,11 +1,13 @@
use anyhow::{bail, Context as _, Result}; // SPDX-License-Identifier: Apache-2.0 OR MIT
use fs_err as fs;
use serde::{Deserialize, Serialize}; #![allow(clippy::single_match)]
use sha2::{Digest, Sha256};
use std::{ use std::{
cmp::Reverse, cmp::Reverse,
collections::{BTreeMap, BTreeSet}, collections::{BTreeMap, BTreeSet},
env, fmt, env,
ffi::OsStr,
fmt,
io::Read, io::Read,
path::{Path, PathBuf}, path::{Path, PathBuf},
slice, slice,
@@ -13,6 +15,11 @@ use std::{
time::Duration, time::Duration,
}; };
use anyhow::{bail, Context as _, Result};
use fs_err as fs;
use serde::{Deserialize, Serialize};
use sha2::{Digest, Sha256};
fn main() -> Result<()> { fn main() -> Result<()> {
let args: Vec<_> = env::args().skip(1).collect(); let args: Vec<_> = env::args().skip(1).collect();
if args.is_empty() || args.iter().any(|arg| arg.starts_with('-')) { if args.is_empty() || args.iter().any(|arg| arg.starts_with('-')) {
@@ -24,17 +31,13 @@ fn main() -> Result<()> {
let package = &args[0]; let package = &args[0];
let workspace_root = &workspace_root(); let workspace_root = &workspace_root();
let manifest_path = &workspace_root let manifest_path = &workspace_root.join("manifests").join(format!("{package}.json"));
.join("manifests")
.join(format!("{package}.json"));
let download_cache_dir = &workspace_root.join("tools/codegen/tmp/cache").join(package); let download_cache_dir = &workspace_root.join("tools/codegen/tmp/cache").join(package);
fs::create_dir_all(manifest_path.parent().unwrap())?; fs::create_dir_all(manifest_path.parent().unwrap())?;
fs::create_dir_all(download_cache_dir)?; fs::create_dir_all(download_cache_dir)?;
let mut base_info: BaseManifest = serde_json::from_slice(&fs::read( let mut base_info: BaseManifest = serde_json::from_slice(&fs::read(
workspace_root workspace_root.join("tools/codegen/base").join(format!("{package}.json")),
.join("tools/codegen/base")
.join(format!("{package}.json")),
)?)?; )?)?;
let repo = base_info let repo = base_info
.repository .repository
@@ -75,11 +78,8 @@ fn main() -> Result<()> {
.collect(); .collect();
let mut crates_io_info = None; let mut crates_io_info = None;
base_info.rust_crate = base_info base_info.rust_crate =
.rust_crate base_info.rust_crate.as_ref().map(|s| replace_vars(s, package, None, None)).transpose()?;
.as_ref()
.map(|s| replace_vars(s, package, None, None))
.transpose()?;
if let Some(crate_name) = &base_info.rust_crate { if let Some(crate_name) = &base_info.rust_crate {
eprintln!("downloading crate info from https://crates.io/api/v1/crates/{crate_name}"); eprintln!("downloading crate info from https://crates.io/api/v1/crates/{crate_name}");
crates_io_info = Some( crates_io_info = Some(
@@ -111,10 +111,7 @@ fn main() -> Result<()> {
for (platform, d) in &mut manifest.download_info { for (platform, d) in &mut manifest.download_info {
let template = &template.download_info[platform]; let template = &template.download_info[platform];
d.url = Some(template.url.replace("${version}", version)); d.url = Some(template.url.replace("${version}", version));
d.bin = template d.bin = template.bin.as_ref().map(|s| s.replace("${version}", version));
.bin
.as_ref()
.map(|s| s.replace("${version}", version));
} }
} }
} }
@@ -125,19 +122,6 @@ fn main() -> Result<()> {
} }
let version_req: Option<semver::VersionReq> = match args.get(1) { let version_req: Option<semver::VersionReq> = match args.get(1) {
_ if latest_only => { _ if latest_only => {
if args.get(1).map(String::as_str) == Some("latest") {
if let Some(m) = manifests.map.first_key_value() {
let version = match m.1 {
ManifestRef::Ref { version } => version,
ManifestRef::Real(_) => &m.0 .0,
};
if !manifests.map.is_empty()
&& *version >= releases.first_key_value().unwrap().0 .0.clone().into()
{
return Ok(());
}
}
}
let req = format!("={}", releases.first_key_value().unwrap().0 .0).parse()?; let req = format!("={}", releases.first_key_value().unwrap().0 .0).parse()?;
eprintln!("update manifest for versions '{req}'"); eprintln!("update manifest for versions '{req}'");
Some(req) Some(req)
@@ -161,7 +145,7 @@ fn main() -> Result<()> {
if manifests.map.is_empty() { if manifests.map.is_empty() {
format!("={}", releases.first_key_value().unwrap().0 .0).parse()? format!("={}", releases.first_key_value().unwrap().0 .0).parse()?
} else { } else {
format!(">{}", semver_versions.last().unwrap()).parse()? format!(">={}", semver_versions.last().unwrap()).parse()?
} }
} else { } else {
version_req.parse()? version_req.parse()?
@@ -172,13 +156,21 @@ fn main() -> Result<()> {
}; };
let mut buf = vec![]; let mut buf = vec![];
let mut buf2 = vec![];
for (Reverse(semver_version), (version, release)) in &releases { for (Reverse(semver_version), (version, release)) in &releases {
if let Some(version_req) = &version_req { if let Some(version_req) = &version_req {
if !version_req.matches(semver_version) { if !version_req.matches(semver_version) {
continue; continue;
} }
} }
// Specifically skip versions of xbuild with build metadata.
if base_info.rust_crate.as_deref() == Some("xbuild") && !semver_version.build.is_empty() {
continue;
}
let mut download_info = BTreeMap::new(); let mut download_info = BTreeMap::new();
let mut pubkey = None;
for (&platform, base_download_info) in &base_info.platform { for (&platform, base_download_info) in &base_info.platform {
let asset_names = base_download_info let asset_names = base_download_info
.asset_name .asset_name
@@ -205,37 +197,112 @@ fn main() -> Result<()> {
} }
}; };
eprintln!("downloading {url} for checksum..."); eprint!("downloading {url} for checksum ... ");
let download_cache = download_cache_dir.join(format!( let download_cache = &download_cache_dir.join(format!(
"{version}-{platform:?}-{}", "{version}-{platform:?}-{}",
Path::new(&url).file_name().unwrap().to_str().unwrap() Path::new(&url).file_name().unwrap().to_str().unwrap()
)); ));
if download_cache.is_file() { if download_cache.is_file() {
eprintln!(" already downloaded"); eprintln!("already downloaded");
fs::File::open(download_cache)?.read_to_end(&mut buf)?; fs::File::open(download_cache)?.read_to_end(&mut buf)?;
} else { } else {
download(&url)?.into_reader().read_to_end(&mut buf)?; download(&url)?.into_reader().read_to_end(&mut buf)?;
eprintln!(" download complete"); eprintln!("download complete");
fs::write(download_cache, &buf)?; fs::write(download_cache, &buf)?;
} }
eprintln!("getting sha256 hash for {url}"); eprintln!("getting sha256 hash for {url}");
let hash = Sha256::digest(&buf); let hash = Sha256::digest(&buf);
let hash = format!("{hash:x}"); let hash = format!("{hash:x}");
eprintln!("{hash} *{asset_name}"); eprintln!("{hash} *{asset_name}");
let bin_url = &url;
download_info.insert( match base_info.signing {
platform, Some(Signing { kind: SigningKind::MinisignBinstall }) => {
ManifestDownloadInfo { let url = url.clone() + ".sig";
url: Some(url), let sig_download_cache = &download_cache.with_extension(format!(
checksum: hash, "{}.sig",
bin: base_download_info download_cache.extension().unwrap_or_default().to_str().unwrap()
.bin ));
.as_ref() eprint!("downloading {url} for signature validation ... ");
.or(base_info.bin.as_ref()) let sig = if sig_download_cache.is_file() {
.map(|s| replace_vars(s, package, Some(version), Some(platform))) eprintln!("already downloaded");
.transpose()?, minisign_verify::Signature::from_file(sig_download_cache)?
}, } else {
); let buf = download(&url)?.into_string()?;
eprintln!("download complete");
fs::write(sig_download_cache, &buf)?;
minisign_verify::Signature::decode(&buf)?
};
let Some(crates_io_info) = &crates_io_info else {
bail!("signing kind minisign-binstall is supported only for rust crate");
};
let v =
crates_io_info.versions.iter().find(|v| v.num == *semver_version).unwrap();
let url = format!("https://crates.io{}", v.dl_path);
let crate_download_cache =
&download_cache_dir.join(format!("{version}-Cargo.toml"));
eprint!("downloading {url} for signature verification ... ");
if crate_download_cache.is_file() {
eprintln!("already downloaded");
} else {
download(&url)?.into_reader().read_to_end(&mut buf2)?;
let hash = Sha256::digest(&buf2);
if format!("{hash:x}") != v.checksum {
bail!("checksum mismatch for {url}");
}
let decoder = flate2::read::GzDecoder::new(&*buf2);
let mut archive = tar::Archive::new(decoder);
for entry in archive.entries()? {
let mut entry = entry?;
let path = entry.path()?;
if path.file_name() == Some(OsStr::new("Cargo.toml")) {
entry.unpack(crate_download_cache)?;
break;
}
}
buf2.clear();
eprintln!("download complete");
}
if pubkey.is_none() {
let cargo_manifest = toml::from_str::<cargo_manifest::Manifest>(
&fs::read_to_string(crate_download_cache)?,
)?;
eprintln!(
"algorithm: {}",
cargo_manifest.package.metadata.binstall.signing.algorithm
);
eprintln!(
"pubkey: {}",
cargo_manifest.package.metadata.binstall.signing.pubkey
);
assert_eq!(
cargo_manifest.package.metadata.binstall.signing.algorithm,
"minisign"
);
pubkey = Some(minisign_verify::PublicKey::from_base64(
&cargo_manifest.package.metadata.binstall.signing.pubkey,
)?);
}
let pubkey = pubkey.as_ref().unwrap();
eprint!("verifying signature for {bin_url} ... ");
let allow_legacy = false;
pubkey.verify(&buf, &sig, allow_legacy)?;
eprintln!("done");
}
None => {}
}
download_info.insert(platform, ManifestDownloadInfo {
url: Some(url),
checksum: hash,
bin: base_download_info
.bin
.as_ref()
.or(base_info.bin.as_ref())
.map(|s| replace_vars(s, package, Some(version), Some(platform)))
.transpose()?,
});
buf.clear(); buf.clear();
} }
if download_info.is_empty() { if download_info.is_empty() {
@@ -287,39 +354,30 @@ fn main() -> Result<()> {
if !(version.major == 0 && version.minor == 0) { if !(version.major == 0 && version.minor == 0) {
manifests.map.insert( manifests.map.insert(
Reverse(Version::omitted(version.major, Some(version.minor))), Reverse(Version::omitted(version.major, Some(version.minor))),
ManifestRef::Ref { ManifestRef::Ref { version: version.clone().into() },
version: version.clone().into(),
},
); );
} }
if version.major != 0 { if version.major != 0 {
manifests.map.insert( manifests
Reverse(Version::omitted(version.major, None)), .map
ManifestRef::Ref { .insert(Reverse(Version::omitted(version.major, None)), ManifestRef::Ref {
version: version.clone().into(), version: version.clone().into(),
}, });
);
} }
prev_version = version; prev_version = version;
} }
manifests.map.insert( manifests.map.insert(Reverse(Version::latest()), ManifestRef::Ref {
Reverse(Version::latest()), version: prev_version.clone().into(),
ManifestRef::Ref { });
version: prev_version.clone().into(),
},
);
} }
let ManifestRef::Ref { let ManifestRef::Ref { version: latest_version } =
version: latest_version, manifests.map.first_key_value().unwrap().1.clone()
} = manifests.map.first_key_value().unwrap().1.clone()
else { else {
unreachable!() unreachable!()
}; };
if latest_only { if latest_only {
manifests manifests.map.retain(|k, _| k.0 == Version::latest() || k.0 == latest_version);
.map
.retain(|k, _| k.0 == Version::latest() || k.0 == latest_version);
} }
let ManifestRef::Real(latest_manifest) = &manifests.map[&Reverse(latest_version.clone())] let ManifestRef::Real(latest_manifest) = &manifests.map[&Reverse(latest_version.clone())]
else { else {
@@ -330,16 +388,12 @@ fn main() -> Result<()> {
continue; continue;
} }
if p == HostPlatform::x86_64_linux_gnu if p == HostPlatform::x86_64_linux_gnu
&& latest_manifest && latest_manifest.download_info.contains_key(&HostPlatform::x86_64_linux_musl)
.download_info
.contains_key(&HostPlatform::x86_64_linux_musl)
{ {
continue; continue;
} }
if p == HostPlatform::aarch64_linux_gnu if p == HostPlatform::aarch64_linux_gnu
&& latest_manifest && latest_manifest.download_info.contains_key(&HostPlatform::aarch64_linux_musl)
.download_info
.contains_key(&HostPlatform::aarch64_linux_musl)
{ {
continue; continue;
} }
@@ -350,9 +404,7 @@ fn main() -> Result<()> {
} }
let original_manifests = manifests.clone(); let original_manifests = manifests.clone();
let mut template = Some(ManifestTemplate { let mut template = Some(ManifestTemplate { download_info: BTreeMap::new() });
download_info: BTreeMap::new(),
});
'outer: for (version, manifest) in &mut manifests.map { 'outer: for (version, manifest) in &mut manifests.map {
let ManifestRef::Real(manifest) = manifest else { let ManifestRef::Real(manifest) = manifest else {
continue; continue;
@@ -368,13 +420,10 @@ fn main() -> Result<()> {
break 'outer; break 'outer;
} }
} else { } else {
t.download_info.insert( t.download_info.insert(*platform, ManifestTemplateDownloadInfo {
*platform, url: template_url,
ManifestTemplateDownloadInfo { bin: template_bin,
url: template_url, });
bin: template_bin,
},
);
} }
} }
} }
@@ -579,9 +628,7 @@ impl<'de> Deserialize<'de> for Version {
D: serde::Deserializer<'de>, D: serde::Deserializer<'de>,
{ {
use serde::de::Error as _; use serde::de::Error as _;
String::deserialize(deserializer)? String::deserialize(deserializer)?.parse().map_err(D::Error::custom)
.parse()
.map_err(D::Error::custom)
} }
} }
@@ -644,10 +691,27 @@ struct BaseManifest {
asset_name: Option<StringOrArray>, asset_name: Option<StringOrArray>,
/// Path to binary in archive. Default to `${tool}${exe}`. /// Path to binary in archive. Default to `${tool}${exe}`.
bin: Option<String>, bin: Option<String>,
signing: Option<Signing>,
platform: BTreeMap<HostPlatform, BaseManifestPlatformInfo>, platform: BTreeMap<HostPlatform, BaseManifestPlatformInfo>,
version_range: Option<String>, version_range: Option<String>,
} }
#[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)] #[derive(Debug, Deserialize)]
#[serde(deny_unknown_fields)] #[serde(deny_unknown_fields)]
struct BaseManifestPlatformInfo { struct BaseManifestPlatformInfo {
@@ -767,7 +831,39 @@ mod crates_io {
#[derive(Debug, Deserialize)] #[derive(Debug, Deserialize)]
pub struct Version { pub struct Version {
pub checksum: String,
pub dl_path: String,
pub num: semver::Version, pub num: semver::Version,
pub yanked: bool, pub yanked: bool,
} }
} }
mod cargo_manifest {
use serde::Deserialize;
#[derive(Debug, Deserialize)]
pub struct Manifest {
pub package: Package,
}
#[derive(Debug, Deserialize)]
pub struct Package {
pub metadata: Metadata,
}
#[derive(Debug, Deserialize)]
pub struct Metadata {
pub binstall: Binstall,
}
#[derive(Debug, Deserialize)]
pub struct Binstall {
pub signing: BinstallSigning,
}
#[derive(Debug, Deserialize)]
pub struct BinstallSigning {
pub algorithm: String,
pub pubkey: String,
}
}

View File

@@ -250,19 +250,22 @@ if [[ -f tools/.tidy-check-license-headers ]]; then
info "checking license headers (experimental)" info "checking license headers (experimental)"
failed_files='' failed_files=''
for p in $(eval $(<tools/.tidy-check-license-headers)); do for p in $(eval $(<tools/.tidy-check-license-headers)); do
# TODO: More file types?
case "$(basename "${p}")" in case "$(basename "${p}")" in
*.sh) prefix=("# ") ;; *.stderr | *.expanded.rs) continue ;; # generated files
*.rs | *.c | *.h | *.cpp | *.hpp | *.s | *.S) prefix=("// " "/* ") ;; *.sh | *.py | *.rb | *Dockerfile) prefix=("# ") ;;
*.rs | *.c | *.h | *.cpp | *.hpp | *.s | *.S | *.js) prefix=("// " "/* ") ;;
*.ld | *.x) prefix=("/* ") ;; *.ld | *.x) prefix=("/* ") ;;
*) error "unrecognized file type: ${p}" ;; # TODO: More file types?
*) continue ;;
esac esac
# TODO: The exact line number is not actually important; it is important # TODO: The exact line number is not actually important; it is important
# that it be part of the top-level comments of the file. # that it be part of the top-level comments of the file.
line="1" line="1"
case "${p}" in if IFS= LC_ALL=C read -rn3 -d '' shebang <"${p}" && [[ "${shebang}" == '#!/' ]]; then
*.sh) line="2" ;; # shebang line="2"
esac elif [[ "${p}" == *"Dockerfile" ]] && IFS= LC_ALL=C read -rn9 -d '' syntax <"${p}" && [[ "${syntax}" == '# syntax=' ]]; then
line="2"
fi
header_found='' header_found=''
for pre in "${prefix[@]}"; do for pre in "${prefix[@]}"; do
if [[ "$(grep -E -n "${pre}SPDX-License-Identifier: " "${p}")" == "${line}:${pre}SPDX-License-Identifier: "* ]]; then if [[ "$(grep -E -n "${pre}SPDX-License-Identifier: " "${p}")" == "${line}:${pre}SPDX-License-Identifier: "* ]]; then