mirror of
https://github.com/taiki-e/install-action.git
synced 2026-04-27 01:20:28 +00:00
Compare commits
112 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dd5387d253 | ||
|
|
1bfbbd1f21 | ||
|
|
f0b85d4f2b | ||
|
|
ac309afb84 | ||
|
|
23eacbb04f | ||
|
|
57aaba576a | ||
|
|
0876ec40d9 | ||
|
|
7d0442ab06 | ||
|
|
d2ffa16971 | ||
|
|
05c9797d84 | ||
|
|
75d87d548b | ||
|
|
6184f1ceea | ||
|
|
3f6d29063f | ||
|
|
e07b619ce2 | ||
|
|
d5124717d1 | ||
|
|
b30758ca4a | ||
|
|
ac65fbce2a | ||
|
|
d90c734ca8 | ||
|
|
0831efaca4 | ||
|
|
ff7717e39e | ||
|
|
0087e57cc3 | ||
|
|
63649bfbf1 | ||
|
|
5b205dd5b8 | ||
|
|
f664a60d0a | ||
|
|
99f24c701f | ||
|
|
05acba8f2d | ||
|
|
2c288a7d53 | ||
|
|
2afb713f1c | ||
|
|
5d0fca79ad | ||
|
|
14deed0413 | ||
|
|
0143d8cb45 | ||
|
|
2358ab6439 | ||
|
|
d7013fbfd0 | ||
|
|
de0d48bde6 | ||
|
|
a4beb34f32 | ||
|
|
46ad021080 | ||
|
|
13c0d6f598 | ||
|
|
af0cad7ea8 | ||
|
|
55b35a1b0d | ||
|
|
b441885d30 | ||
|
|
1c8b6e3bf4 | ||
|
|
c50dab88b6 | ||
|
|
09f5ee3f05 | ||
|
|
befd933e5e | ||
|
|
62992553e4 | ||
|
|
0163f6cf65 | ||
|
|
10becfbf4e | ||
|
|
63c295a1d1 | ||
|
|
1bbd028e93 | ||
|
|
006fba6182 | ||
|
|
4d6ceceded | ||
|
|
9afdc87209 | ||
|
|
dd988265fe | ||
|
|
b89cfc4cdb | ||
|
|
6d728686b1 | ||
|
|
f4f65fa33a | ||
|
|
ec4a09b691 | ||
|
|
230cf1a7c2 | ||
|
|
78fb098b9c | ||
|
|
ff244ea17b | ||
|
|
ce41e556bc | ||
|
|
c2391e8e5f | ||
|
|
51f7de925c | ||
|
|
37beb9ded5 | ||
|
|
f3f0bc9f82 | ||
|
|
f8ff1ab8a1 | ||
|
|
a6b28c31ef | ||
|
|
09cf616b64 | ||
|
|
2f6cd157e0 | ||
|
|
3660b253bf | ||
|
|
6cd53f784a | ||
|
|
eb8dccef73 | ||
|
|
442088fba1 | ||
|
|
18cb28e03d | ||
|
|
099d544df2 | ||
|
|
05558ee559 | ||
|
|
5692c4095a | ||
|
|
afd84994bb | ||
|
|
b45f49a51d | ||
|
|
01c3792929 | ||
|
|
401ee5db19 | ||
|
|
6801bd56b9 | ||
|
|
ad25912b73 | ||
|
|
cc5a5c56a2 | ||
|
|
d85ed71ccb | ||
|
|
a257529eaf | ||
|
|
69081f5990 | ||
|
|
fc173345fb | ||
|
|
e6b049c3b7 | ||
|
|
7838381fcf | ||
|
|
8cdc2a9825 | ||
|
|
7f27b7d8d5 | ||
|
|
e156747327 | ||
|
|
26fa6681fb | ||
|
|
25d7b33a71 | ||
|
|
f96cc5318d | ||
|
|
f0d0def1e2 | ||
|
|
2b66e0090b | ||
|
|
ba7482c6af | ||
|
|
425876e44a | ||
|
|
a5a8275f14 | ||
|
|
38b64619b5 | ||
|
|
006e1318d7 | ||
|
|
942c7835ab | ||
|
|
bca437466a | ||
|
|
1981e18081 | ||
|
|
fe04be912f | ||
|
|
f1e481e035 | ||
|
|
1d42c62e8a | ||
|
|
d4d12f0d19 | ||
|
|
8a5a554374 | ||
|
|
cf629cb4fe |
7
.github/.cspell/organization-dictionary.txt
vendored
7
.github/.cspell/organization-dictionary.txt
vendored
@@ -6,15 +6,17 @@ taiki
|
||||
|
||||
// tool name and its configs or options
|
||||
asan
|
||||
cdylib
|
||||
cflags
|
||||
clippy
|
||||
codegen
|
||||
cxxflags
|
||||
dylib
|
||||
exitcode
|
||||
miri
|
||||
miriflags
|
||||
msan
|
||||
retag
|
||||
rlib
|
||||
rustc
|
||||
rustdoc
|
||||
rustdocflags
|
||||
@@ -22,6 +24,8 @@ rustflags
|
||||
rustfmt
|
||||
rustsec
|
||||
rustup
|
||||
staticlib
|
||||
tsan
|
||||
valgrind
|
||||
xcompile
|
||||
Zmiri
|
||||
@@ -156,6 +160,7 @@ esac
|
||||
euxo
|
||||
gsub
|
||||
libc
|
||||
markdownlint
|
||||
moreutils
|
||||
msys
|
||||
noninteractive
|
||||
|
||||
4
.github/.cspell/project-dictionary.txt
vendored
4
.github/.cspell/project-dictionary.txt
vendored
@@ -1,3 +1,4 @@
|
||||
almalinux
|
||||
binstall
|
||||
coreutils
|
||||
distro
|
||||
@@ -13,13 +14,14 @@ mdbook
|
||||
microdnf
|
||||
nextest
|
||||
protoc
|
||||
pubkey
|
||||
pwsh
|
||||
quickinstall
|
||||
rockylinux
|
||||
shellcheck
|
||||
shfmt
|
||||
syft
|
||||
udeps
|
||||
wasmtime
|
||||
watchexec
|
||||
xbuild
|
||||
xscale
|
||||
|
||||
2
.github/.cspell/rust-dependencies.txt
generated
vendored
2
.github/.cspell/rust-dependencies.txt
generated
vendored
@@ -1,4 +1,6 @@
|
||||
// This file is @generated by tidy.sh.
|
||||
// It is not intended for manual editing.
|
||||
|
||||
flate
|
||||
minisign
|
||||
ureq
|
||||
|
||||
88
.github/workflows/ci.yml
vendored
88
.github/workflows/ci.yml
vendored
@@ -32,7 +32,7 @@ concurrency:
|
||||
|
||||
jobs:
|
||||
tidy:
|
||||
uses: taiki-e/workflows/.github/workflows/tidy.yml@main
|
||||
uses: taiki-e/github-actions/.github/workflows/tidy.yml@main
|
||||
|
||||
test:
|
||||
strategy:
|
||||
@@ -41,20 +41,21 @@ jobs:
|
||||
include:
|
||||
- os: ubuntu-20.04
|
||||
- os: ubuntu-22.04
|
||||
- os: ubuntu-20.04
|
||||
- os: ubuntu-22.04
|
||||
tool: major.minor.patch
|
||||
- os: ubuntu-20.04
|
||||
- os: ubuntu-22.04
|
||||
tool: major.minor
|
||||
- os: ubuntu-20.04
|
||||
- os: ubuntu-22.04
|
||||
tool: major
|
||||
- os: macos-11
|
||||
- os: macos-12
|
||||
- os: macos-13
|
||||
- os: windows-2019
|
||||
- os: windows-2022
|
||||
runs-on: ${{ matrix.os }}
|
||||
timeout-minutes: 60
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
# 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
|
||||
shell: powershell
|
||||
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
|
||||
# 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
|
||||
@@ -101,10 +106,10 @@ jobs:
|
||||
- debian:11-slim # glibc 2.31
|
||||
- debian:12-slim # glibc 2.36
|
||||
- fedora:latest # glibc 2.37 (as of fedora 38)
|
||||
- rockylinux:8 # glibc 2.28
|
||||
- rockylinux:8-minimal # glibc 2.28
|
||||
- rockylinux:9 # glibc 2.34
|
||||
- rockylinux:9-minimal # glibc 2.34
|
||||
- almalinux:8 # glibc 2.28
|
||||
- almalinux:8-minimal # glibc 2.28
|
||||
- almalinux:9 # glibc 2.34
|
||||
- almalinux:9-minimal # glibc 2.34
|
||||
- centos:7 # glibc 2.17
|
||||
- alpine:latest # musl 1.2.4 (as of alpine 3.18)
|
||||
runs-on: ubuntu-latest
|
||||
@@ -113,33 +118,25 @@ jobs:
|
||||
steps:
|
||||
- name: Install requirements (ubuntu/debian)
|
||||
run: |
|
||||
set -euxo pipefail
|
||||
set -eEuxo pipefail
|
||||
apt-get -o Acquire::Retries=10 -qq update
|
||||
apt-get -o Acquire::Retries=10 -o Dpkg::Use-Pty=0 install -y --no-install-recommends cargo
|
||||
if: startsWith(matrix.container, 'ubuntu') || startsWith(matrix.container, 'debian')
|
||||
- name: Install requirements (fedora/rockylinux)
|
||||
- name: Install requirements (fedora/almalinux/centos)
|
||||
run: |
|
||||
set -euxo pipefail
|
||||
dnf=dnf
|
||||
if ! type -P dnf &>/dev/null; then
|
||||
dnf=microdnf
|
||||
set -eEuxo pipefail
|
||||
if ! type -P dnf &>/dev/null && type -P microdnf &>/dev/null; then
|
||||
# tar and gzip are required for actions/checkout on *-minimal images
|
||||
microdnf install -y tar gzip
|
||||
fi
|
||||
# tar and gzip are required for actions/checkout on rockylinux:*-minimal
|
||||
$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
|
||||
curl --proto '=https' --tlsv1.2 -fsSL --retry 10 https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain stable --no-modify-path
|
||||
echo "$HOME/.cargo/bin" >>"${GITHUB_PATH}"
|
||||
if: startsWith(matrix.container, 'centos')
|
||||
if: startsWith(matrix.container, 'fedora') || startsWith(matrix.container, 'almalinux') || startsWith(matrix.container, 'centos')
|
||||
- name: Install requirements (alpine)
|
||||
run: |
|
||||
set -eux
|
||||
apk --no-cache add bash cargo
|
||||
run: apk --no-cache add bash cargo
|
||||
shell: sh
|
||||
if: startsWith(matrix.container, 'alpine')
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v3 # TODO: actions/checkout@v4 requires glibc 2.28+
|
||||
with:
|
||||
persist-credentials: false
|
||||
# cross attempts to install rust-src when Cargo.toml is available even if `cross --version`
|
||||
@@ -151,6 +148,21 @@ jobs:
|
||||
with:
|
||||
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:
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 60
|
||||
@@ -158,7 +170,7 @@ jobs:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
- name: Install Rust
|
||||
@@ -169,12 +181,28 @@ jobs:
|
||||
- id: diff
|
||||
run: tools/ci/manifest.sh
|
||||
if: github.repository_owner == 'taiki-e' && (github.event_name == 'schedule' || github.event_name == 'push' && github.ref == 'refs/heads/main')
|
||||
- uses: peter-evans/create-pull-request@v5
|
||||
- name: Create PR
|
||||
id: create-pull-request
|
||||
uses: peter-evans/create-pull-request@v5
|
||||
with:
|
||||
title: Update manifest
|
||||
body: |
|
||||
Auto-generated by [create-pull-request](https://github.com/peter-evans/create-pull-request)
|
||||
Auto-generated by [create-pull-request](https://github.com/peter-evans/create-pull-request).
|
||||
|
||||
This will be auto-merged when CI has passed because this is an auto-generated PR in a defined format and is usually considered no additional review is required.
|
||||
branch: update-manifest
|
||||
token: ${{ secrets.CREATE_PR_TOKEN }}
|
||||
if: github.repository_owner == 'taiki-e' && (github.event_name == 'schedule' || github.event_name == 'push' && github.ref == 'refs/heads/main') && steps.diff.outputs.success == 'false'
|
||||
- name: Enable auto-merge for auto-generated PR
|
||||
run: gh pr merge --rebase --auto "${PR_NUMBER:?}"
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.CREATE_PR_TOKEN }}
|
||||
PR_NUMBER: ${{ steps.create-pull-request.outputs.pull-request-number }}
|
||||
if: github.repository_owner == 'taiki-e' && (github.event_name == 'schedule' || github.event_name == 'push' && github.ref == 'refs/heads/main') && steps.diff.outputs.success == 'false' && steps.create-pull-request.outputs.pull-request-operation == 'created'
|
||||
- name: Auto approve for auto-generated PR
|
||||
run: gh pr review --approve "${PR_NUMBER:?}"
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
PR_NUMBER: ${{ steps.create-pull-request.outputs.pull-request-number }}
|
||||
if: github.repository_owner == 'taiki-e' && (github.event_name == 'schedule' || github.event_name == 'push' && github.ref == 'refs/heads/main') && steps.diff.outputs.success == 'false' && steps.create-pull-request.outputs.pull-request-operation == 'created'
|
||||
- run: git add -N . && git diff --exit-code
|
||||
|
||||
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
@@ -20,7 +20,7 @@ jobs:
|
||||
permissions:
|
||||
contents: write
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
- uses: taiki-e/create-gh-release-action@v1
|
||||
|
||||
6
.markdownlint.yml
Normal file
6
.markdownlint.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
# https://github.com/DavidAnson/markdownlint#rules--aliases
|
||||
|
||||
MD013: false # line-length
|
||||
MD024: false # no-duplicate-heading/no-duplicate-header
|
||||
MD033: false # no-inline-html
|
||||
MD036: false # no-emphasis-as-heading/no-emphasis-as-header
|
||||
@@ -1 +1,32 @@
|
||||
# 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 = "2021"
|
||||
hard_tabs = false
|
||||
newline_style = "Unix"
|
||||
tab_spaces = 4
|
||||
|
||||
218
CHANGELOG.md
218
CHANGELOG.md
@@ -10,6 +10,188 @@ Note: In this file, do not use the hard wrap in the middle of a sentence for com
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [2.19.3] - 2023-10-03
|
||||
|
||||
- Update `cargo-tarpaulin@latest` to 0.27.1.
|
||||
|
||||
## [2.19.2] - 2023-09-30
|
||||
|
||||
- Update `mdbook@latest` to 0.4.35.
|
||||
|
||||
- Update `parse-changelog@latest` to 0.6.3.
|
||||
|
||||
- Update `cargo-dinghy@latest` to 0.6.8.
|
||||
|
||||
- Update `cargo-deny@latest` to 0.14.3.
|
||||
|
||||
## [2.19.1] - 2023-09-28
|
||||
|
||||
- Update `cargo-binstall@latest` to 1.4.2.
|
||||
|
||||
## [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
|
||||
|
||||
- Update `cargo-llvm-cov@latest` to 0.5.28.
|
||||
@@ -1099,7 +1281,41 @@ Note: This release is considered a breaking change because installing on version
|
||||
|
||||
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.3...HEAD
|
||||
[2.19.3]: https://github.com/taiki-e/install-action/compare/v2.19.2...v2.19.3
|
||||
[2.19.2]: https://github.com/taiki-e/install-action/compare/v2.19.1...v2.19.2
|
||||
[2.19.1]: https://github.com/taiki-e/install-action/compare/v2.19.0...v2.19.1
|
||||
[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.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
|
||||
|
||||
@@ -82,13 +82,13 @@ https://spdx.org/licenses
|
||||
| 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-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-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-hack**](https://github.com/taiki-e/cargo-hack) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/taiki-e/cargo-hack/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/taiki-e/cargo-hack/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/cargo-hack/blob/HEAD/LICENSE-MIT) |
|
||||
| [**cargo-llvm-cov**](https://github.com/taiki-e/cargo-llvm-cov) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/taiki-e/cargo-llvm-cov/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/taiki-e/cargo-llvm-cov/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/cargo-llvm-cov/blob/HEAD/LICENSE-MIT) |
|
||||
| [**cargo-machete**](https://github.com/bnjbvr/cargo-machete) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/bnjbvr/cargo-machete/releases) | Linux, macOS, Windows | [MIT](https://github.com/bnjbvr/cargo-machete/blob/HEAD/LICENSE.md) |
|
||||
| [**cargo-make**](https://github.com/sagiegurari/cargo-make) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/sagiegurari/cargo-make/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/sagiegurari/cargo-make/blob/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-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) |
|
||||
@@ -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) |
|
||||
| [**wasm-pack**](https://github.com/rustwasm/wasm-pack) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/rustwasm/wasm-pack/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/rustwasm/wasm-pack/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/rustwasm/wasm-pack/blob/HEAD/LICENSE-MIT) |
|
||||
| [**wasmtime**](https://github.com/bytecodealliance/wasmtime) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/bytecodealliance/wasmtime/releases) | Linux, macOS, Windows | [Apache-2.0 WITH LLVM-exception](https://github.com/bytecodealliance/wasmtime/blob/HEAD/LICENSE) |
|
||||
| [**xbuild**](https://github.com/rust-mobile/xbuild) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/rust-mobile/xbuild/releases) | Linux, macOS, Windows | Apache-2.0 OR MIT |
|
||||
| [**zola**](https://github.com/getzola/zola) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/getzola/zola/releases) | Linux, macOS, Windows | [MIT](https://github.com/getzola/zola/blob/HEAD/LICENSE) |
|
||||
|
||||
If `$CARGO_HOME/bin` is not available, Rust-related binaries will be installed to `$HOME/.cargo/bin`.<br>
|
||||
@@ -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, 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).
|
||||
|
||||
## 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:
|
||||
|
||||
- bash
|
||||
|
||||
287
main.sh
287
main.sh
@@ -1,9 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
set -euo pipefail
|
||||
set -eEuo pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
x() {
|
||||
rx() {
|
||||
local cmd="$1"
|
||||
shift
|
||||
(
|
||||
@@ -58,18 +58,16 @@ download_and_extract() {
|
||||
local checksum="$2"
|
||||
local bin_dir="$3"
|
||||
local bin_in_archive="$4" # path to bin in archive
|
||||
if [[ "${bin_dir}" == "/usr/"* ]]; then
|
||||
if [[ ! -d "${bin_dir}" ]]; then
|
||||
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
|
||||
if [[ "${bin_dir}" == "${install_action_dir}/bin" ]]; then
|
||||
init_install_action_bin_dir
|
||||
fi
|
||||
|
||||
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=()
|
||||
case "${url}" in
|
||||
@@ -152,17 +150,17 @@ read_manifest() {
|
||||
local tool="$1"
|
||||
local version="$2"
|
||||
local manifest
|
||||
rust_crate=$(jq -r ".rust_crate" "${manifest_dir}/${tool}.json")
|
||||
manifest=$(jq -r ".\"${version}\"" "${manifest_dir}/${tool}.json")
|
||||
rust_crate=$(call_jq -r ".rust_crate" "${manifest_dir}/${tool}.json")
|
||||
manifest=$(call_jq -r ".\"${version}\"" "${manifest_dir}/${tool}.json")
|
||||
if [[ "${manifest}" == "null" ]]; then
|
||||
download_info="null"
|
||||
return 0
|
||||
fi
|
||||
exact_version=$(jq <<<"${manifest}" -r '.version')
|
||||
exact_version=$(call_jq <<<"${manifest}" -r '.version')
|
||||
if [[ "${exact_version}" == "null" ]]; then
|
||||
exact_version="${version}"
|
||||
else
|
||||
manifest=$(jq -r ".\"${exact_version}\"" "${manifest_dir}/${tool}.json")
|
||||
manifest=$(call_jq -r ".\"${exact_version}\"" "${manifest_dir}/${tool}.json")
|
||||
fi
|
||||
case "${host_os}" in
|
||||
linux)
|
||||
@@ -170,24 +168,24 @@ read_manifest() {
|
||||
# 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.)
|
||||
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
|
||||
# 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.
|
||||
# https://wiki.alpinelinux.org/wiki/Running_glibc_programs
|
||||
# TODO: However, a warning may make sense.
|
||||
host_platform="${host_arch}_linux_gnu"
|
||||
download_info=$(jq <<<"${manifest}" -r ".${host_platform}")
|
||||
download_info=$(call_jq <<<"${manifest}" -r ".${host_platform}")
|
||||
fi
|
||||
;;
|
||||
macos | windows)
|
||||
# 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+.
|
||||
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
|
||||
host_platform="x86_64_${host_os}"
|
||||
download_info=$(jq <<<"${manifest}" -r ".${host_platform}")
|
||||
download_info=$(call_jq <<<"${manifest}" -r ".${host_platform}")
|
||||
fi
|
||||
;;
|
||||
*) bail "unsupported OS type '${host_os}' for ${tool}" ;;
|
||||
@@ -199,20 +197,24 @@ read_download_info() {
|
||||
if [[ "${download_info}" == "null" ]]; then
|
||||
bail "${tool}@${version} for '${host_os}' is not supported"
|
||||
fi
|
||||
checksum=$(jq <<<"${download_info}" -r '.checksum')
|
||||
url=$(jq <<<"${download_info}" -r '.url')
|
||||
checksum=$(call_jq <<<"${download_info}" -r '.checksum')
|
||||
url=$(call_jq <<<"${download_info}" -r '.url')
|
||||
if [[ "${url}" == "null" ]]; then
|
||||
local template
|
||||
template=$(jq -r ".template.${host_platform}" "${manifest_dir}/${tool}.json")
|
||||
url=$(jq <<<"${template}" -r '.url')
|
||||
template=$(call_jq -r ".template.${host_platform}" "${manifest_dir}/${tool}.json")
|
||||
url=$(call_jq <<<"${template}" -r '.url')
|
||||
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}}"
|
||||
else
|
||||
bin_in_archive=$(jq <<<"${download_info}" -r '.bin')
|
||||
bin_in_archive=$(call_jq <<<"${download_info}" -r '.bin')
|
||||
fi
|
||||
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
|
||||
bin_dir="${cargo_bin}"
|
||||
fi
|
||||
@@ -230,10 +232,11 @@ download_from_download_info() {
|
||||
}
|
||||
install_cargo_binstall() {
|
||||
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'
|
||||
if [[ -f "${cargo_bin}/cargo-binstall${exe}" ]]; then
|
||||
if [[ "$(cargo binstall -V)" == "${binstall_version}" ]]; then
|
||||
_binstall_version=$("cargo-binstall${exe}" binstall -V 2>/dev/null || echo "")
|
||||
if [[ -n "${_binstall_version}" ]]; then
|
||||
if [[ "${_binstall_version}" == "${binstall_version}" ]]; then
|
||||
info "cargo-binstall already installed at ${cargo_bin}/cargo-binstall${exe}"
|
||||
install_binstall=''
|
||||
else
|
||||
@@ -243,10 +246,15 @@ install_cargo_binstall() {
|
||||
fi
|
||||
|
||||
if [[ -n "${install_binstall}" ]]; then
|
||||
info "installing cargo-binstall"
|
||||
info "installing cargo-binstall@latest (${binstall_version})"
|
||||
download_from_manifest "cargo-binstall" "latest"
|
||||
info "cargo-binstall installed at $(type -P "cargo-binstall${exe}")"
|
||||
x cargo binstall -V
|
||||
installed_at=$(type -P "cargo-binstall${exe}" || echo "")
|
||||
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
|
||||
}
|
||||
apt_update() {
|
||||
@@ -302,9 +310,21 @@ sys_install() {
|
||||
fedora) dnf_install "$@" ;;
|
||||
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() {
|
||||
case "${host_os}" in
|
||||
windows) sed <<<"$1" 's/^\/c\//C:\\/' ;;
|
||||
windows) sed <<<"$1" 's/^\/c\//C:\\/; s/\//\\/g' ;;
|
||||
*) echo "$1" ;;
|
||||
esac
|
||||
}
|
||||
@@ -402,46 +422,107 @@ case "$(uname -m)" in
|
||||
# So we can assume x86_64 unless it is aarch64 or arm.
|
||||
*) host_arch="x86_64" ;;
|
||||
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"
|
||||
# If $CARGO_HOME does not exist, or cargo installed outside of $CARGO_HOME/bin
|
||||
# is used ($CARGO_HOME/bin is most likely not included in the PATH), fallback to
|
||||
# /usr/local/bin or $HOME/.install-action/bin.
|
||||
if [[ ! -d "${cargo_bin}" ]] || { [[ "${host_os}" != "windows" ]] && [[ "$(type -P cargo || true)" != "${cargo_bin}/cargo${exe}" ]]; }; then
|
||||
cargo_bin=/usr/local/bin
|
||||
# /usr/local/bin or $install_action_dir/bin.
|
||||
if [[ ! -e "${cargo_bin}" ]] || [[ "$(type -P cargo || true)" != "${cargo_bin}/cargo"* ]]; then
|
||||
if type -P cargo &>/dev/null; then
|
||||
info "cargo is located at $(type -P cargo)"
|
||||
fi
|
||||
if [[ "${host_os}" == "windows" ]] || [[ ! -e /usr/local/bin ]]; then
|
||||
cargo_bin="${install_action_dir}/bin"
|
||||
else
|
||||
cargo_bin=/usr/local/bin
|
||||
fi
|
||||
fi
|
||||
|
||||
if ! type -P jq &>/dev/null || ! type -P curl &>/dev/null || ! type -P tar &>/dev/null; then
|
||||
case "${base_distro}" in
|
||||
debian | fedora | alpine)
|
||||
echo "::group::Install packages required for installation (jq, curl, and/or tar)"
|
||||
sys_packages=()
|
||||
if ! type -P curl &>/dev/null; then
|
||||
sys_packages+=(ca-certificates curl)
|
||||
fi
|
||||
if ! type -P tar &>/dev/null; then
|
||||
sys_packages+=(tar)
|
||||
fi
|
||||
if [[ "${dnf:-}" == "yum" ]]; then
|
||||
# On RHEL7-based distribution jq requires EPEL
|
||||
if ! type -P jq &>/dev/null; then
|
||||
sys_packages+=(epel-release)
|
||||
sys_install "${sys_packages[@]}"
|
||||
sys_install jq --enablerepo=epel
|
||||
else
|
||||
sys_install "${sys_packages[@]}"
|
||||
fi
|
||||
else
|
||||
if ! type -P jq &>/dev/null; then
|
||||
sys_packages+=(jq)
|
||||
fi
|
||||
sys_install "${sys_packages[@]}"
|
||||
fi
|
||||
echo "::endgroup::"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
jq_use_b=''
|
||||
case "${host_os}" in
|
||||
linux)
|
||||
if ! type -P jq &>/dev/null || ! type -P curl &>/dev/null || ! type -P tar &>/dev/null; then
|
||||
case "${base_distro}" in
|
||||
debian | fedora | alpine)
|
||||
echo "::group::Install packages required for installation (jq, curl, and/or tar)"
|
||||
sys_packages=()
|
||||
if ! type -P curl &>/dev/null; then
|
||||
sys_packages+=(ca-certificates curl)
|
||||
fi
|
||||
if ! type -P tar &>/dev/null; then
|
||||
sys_packages+=(tar)
|
||||
fi
|
||||
if [[ "${dnf:-}" == "yum" ]]; then
|
||||
# On RHEL7-based distribution jq requires EPEL
|
||||
if ! type -P jq &>/dev/null; then
|
||||
sys_packages+=(epel-release)
|
||||
sys_install "${sys_packages[@]}"
|
||||
sys_install jq --enablerepo=epel
|
||||
else
|
||||
sys_install "${sys_packages[@]}"
|
||||
fi
|
||||
else
|
||||
if ! type -P jq &>/dev/null; then
|
||||
sys_packages+=(jq)
|
||||
fi
|
||||
sys_install "${sys_packages[@]}"
|
||||
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=()
|
||||
for tool in "${tools[@]}"; do
|
||||
@@ -463,13 +544,11 @@ for tool in "${tools[@]}"; do
|
||||
read_manifest "protoc" "${version}"
|
||||
read_download_info "protoc" "${version}"
|
||||
# Copying files to /usr/local/include requires sudo, so do not use it.
|
||||
bin_dir="${HOME}/.install-action/bin"
|
||||
include_dir="${HOME}/.install-action/include"
|
||||
if [[ ! -d "${bin_dir}" ]]; then
|
||||
mkdir -p "${bin_dir}"
|
||||
bin_dir="${install_action_dir}/bin"
|
||||
include_dir="${install_action_dir}/include"
|
||||
init_install_action_bin_dir
|
||||
if [[ ! -e "${include_dir}" ]]; then
|
||||
mkdir -p "${include_dir}"
|
||||
canonicalize_windows_path "${bin_dir}" >>"${GITHUB_PATH}"
|
||||
export PATH="${PATH}:${bin_dir}"
|
||||
fi
|
||||
if ! type -P unzip &>/dev/null; then
|
||||
case "${base_distro}" in
|
||||
@@ -488,10 +567,10 @@ for tool in "${tools[@]}"; do
|
||||
mv "bin/protoc${exe}" "${bin_dir}/"
|
||||
mkdir -p "${include_dir}/"
|
||||
cp -r include/. "${include_dir}/"
|
||||
bin_dir=$(canonicalize_windows_path "${bin_dir}")
|
||||
if [[ -z "${PROTOC:-}" ]]; then
|
||||
info "setting PROTOC environment variable"
|
||||
echo "PROTOC=${bin_dir}/protoc${exe}" >>"${GITHUB_ENV}"
|
||||
_bin_dir=$(canonicalize_windows_path "${bin_dir}")
|
||||
info "setting PROTOC environment variable to '${_bin_dir}/protoc${exe}'"
|
||||
echo "PROTOC=${_bin_dir}/protoc${exe}" >>"${GITHUB_ENV}"
|
||||
fi
|
||||
)
|
||||
rm -rf "${tmp_dir}"
|
||||
@@ -514,7 +593,6 @@ for tool in "${tools[@]}"; do
|
||||
snap_install valgrind --classic
|
||||
;;
|
||||
cargo-binstall)
|
||||
info "installing ${tool}@${version}"
|
||||
case "${version}" in
|
||||
latest) ;;
|
||||
*) warn "specifying the version of ${tool} is not supported by this action" ;;
|
||||
@@ -571,34 +649,37 @@ for tool in "${tools[@]}"; do
|
||||
;;
|
||||
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
|
||||
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-*)
|
||||
if type -P cargo &>/dev/null; then
|
||||
case "${tool}" in
|
||||
cargo-valgrind) x cargo "${tool#cargo-}" --help ;; # cargo-valgrind 2.1.0's --version option just calls cargo's --version option
|
||||
*)
|
||||
if ! x cargo "${tool#cargo-}" --version; then
|
||||
x cargo "${tool#cargo-}" --help
|
||||
fi
|
||||
;;
|
||||
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
|
||||
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
|
||||
*)
|
||||
if ! rx "${tool_bin}" "${tool#cargo-}" --version; then
|
||||
rx "${tool_bin}" "${tool#cargo-}" --help
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*)
|
||||
if ! x "${tool}" --version; then
|
||||
x "${tool}" --help
|
||||
if ! rx "${tool_bin}" --version; then
|
||||
rx "${tool_bin}" --help
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
@@ -606,7 +687,7 @@ for tool in "${tools[@]}"; do
|
||||
done
|
||||
|
||||
if [[ ${#unsupported_tools[@]} -gt 0 ]]; then
|
||||
IFS=$','
|
||||
IFS=','
|
||||
info "install-action does not support ${unsupported_tools[*]}; fallback to cargo-binstall"
|
||||
IFS=$'\n\t'
|
||||
install_cargo_binstall
|
||||
|
||||
16
manifests/cargo-binstall.json
generated
16
manifests/cargo-binstall.json
generated
@@ -21,26 +21,26 @@
|
||||
}
|
||||
},
|
||||
"latest": {
|
||||
"version": "1.2.1"
|
||||
"version": "1.4.2"
|
||||
},
|
||||
"1.2.1": {
|
||||
"1.4.2": {
|
||||
"x86_64_linux_musl": {
|
||||
"checksum": "579db0cea00c5afab93a957f5db7aea9b762e0a7cd1e882b5b9fdb94fed78471"
|
||||
"checksum": "d791f2000d934951003c483c2b147f32f09cd7def0e02a06fec51ffda9b9d8f6"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"checksum": "50b8090d74b77de12c1dbaa7204476c927c02ee8a5cefddf7959412f72cca5d1"
|
||||
"checksum": "59f9d03d9028ea3c46a2fef5d72e6f2a1fa337669f7e0f5a4b4aec90043f2355"
|
||||
},
|
||||
"x86_64_windows": {
|
||||
"checksum": "8906f2ab674125d73b9cca71db6615fa432b1aa594e6fea7a896b4931798066d"
|
||||
"checksum": "81af3737320412d87a40b7ffa5e2087af3f5f47eae76572370d36e985e14c1eb"
|
||||
},
|
||||
"aarch64_linux_musl": {
|
||||
"checksum": "b847dd62ea44b9bcf55a267ee247c69fbe678f291bdf1705ed3565425f6a5cf5"
|
||||
"checksum": "e8bdd620ae8a2d97c516354d7df7ffc9eca893f4f840ef309ded90b633df29f3"
|
||||
},
|
||||
"aarch64_macos": {
|
||||
"checksum": "faedc148029f30496438548b7e7a4583f0cc7fe14e61e8b838df83c5a47a32c8"
|
||||
"checksum": "71cbdee21425a2b77769f6a4ec4af6a00b0a62102c8d2931ed7d9dff43b1c900"
|
||||
},
|
||||
"aarch64_windows": {
|
||||
"checksum": "6809ae3c7f35232ea1c2f2bbaa2bb1aa7493764cbd8445416a801ab781f83d0b"
|
||||
"checksum": "6d8cdc54dd9a37348418a389f3357f30c605c37abe4d36caa6cd6c1ba433a6d7"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
16
manifests/cargo-careful.json
generated
16
manifests/cargo-careful.json
generated
@@ -12,7 +12,21 @@
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
"version": "0.3.4"
|
||||
|
||||
32
manifests/cargo-deny.json
generated
32
manifests/cargo-deny.json
generated
@@ -19,10 +19,38 @@
|
||||
}
|
||||
},
|
||||
"latest": {
|
||||
"version": "0.14.1"
|
||||
"version": "0.14.3"
|
||||
},
|
||||
"0.14": {
|
||||
"version": "0.14.1"
|
||||
"version": "0.14.3"
|
||||
},
|
||||
"0.14.3": {
|
||||
"x86_64_linux_musl": {
|
||||
"checksum": "7a8b4ccaa6cadda7feea6c125a08f4b63f644fc4e42b09f0e4cdffc42f33f1c3"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"checksum": "68543cdbb1b33cc42ca744e7914d33bde7eb117a26645e09ef3959992396a4c1"
|
||||
},
|
||||
"x86_64_windows": {
|
||||
"checksum": "92c27d586f1929598e3adc09f8737011b0072817bc18e64c6d612627805aa93a"
|
||||
},
|
||||
"aarch64_macos": {
|
||||
"checksum": "1890410b05c898233cc0025109d383dad412efe2d80ab05f7476e0db5fe721de"
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
"x86_64_linux_musl": {
|
||||
|
||||
36
manifests/cargo-dinghy.json
generated
36
manifests/cargo-dinghy.json
generated
@@ -11,10 +11,42 @@
|
||||
}
|
||||
},
|
||||
"latest": {
|
||||
"version": "0.6.4"
|
||||
"version": "0.6.8"
|
||||
},
|
||||
"0.6": {
|
||||
"version": "0.6.4"
|
||||
"version": "0.6.8"
|
||||
},
|
||||
"0.6.8": {
|
||||
"x86_64_linux_musl": {
|
||||
"checksum": "732752302dbd31dda85c93fd639d72122d138e913e3e7163b57b739c32832dc5"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"checksum": "245d9ec0e0fe95f07c112375146edb6f559f7846f0b347f6632d49775e7b1fc3"
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
"x86_64_linux_musl": {
|
||||
|
||||
239
manifests/cargo-hack.json
generated
239
manifests/cargo-hack.json
generated
@@ -2,7 +2,244 @@
|
||||
"rust_crate": "cargo-hack",
|
||||
"template": null,
|
||||
"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": {
|
||||
"version": "0.5.29"
|
||||
|
||||
89
manifests/cargo-llvm-cov.json
generated
89
manifests/cargo-llvm-cov.json
generated
@@ -18,10 +18,95 @@
|
||||
}
|
||||
},
|
||||
"latest": {
|
||||
"version": "0.5.28"
|
||||
"version": "0.5.33"
|
||||
},
|
||||
"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": {
|
||||
"x86_64_linux_musl": {
|
||||
|
||||
27
manifests/cargo-machete.json
generated
27
manifests/cargo-machete.json
generated
@@ -2,7 +2,32 @@
|
||||
"rust_crate": "cargo-machete",
|
||||
"template": null,
|
||||
"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": {
|
||||
"version": "0.5.0"
|
||||
|
||||
47
manifests/cargo-make.json
generated
47
manifests/cargo-make.json
generated
@@ -19,7 +19,52 @@
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
"version": "0.36.13"
|
||||
|
||||
104
manifests/cargo-minimal-versions.json
generated
104
manifests/cargo-minimal-versions.json
generated
@@ -21,10 +21,110 @@
|
||||
}
|
||||
},
|
||||
"latest": {
|
||||
"version": "0.1.14"
|
||||
"version": "0.1.19"
|
||||
},
|
||||
"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": {
|
||||
"x86_64_linux_musl": {
|
||||
|
||||
84
manifests/cargo-no-dev-deps.json
generated
84
manifests/cargo-no-dev-deps.json
generated
@@ -21,10 +21,90 @@
|
||||
}
|
||||
},
|
||||
"latest": {
|
||||
"version": "0.2.3"
|
||||
"version": "0.2.7"
|
||||
},
|
||||
"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": {
|
||||
"x86_64_linux_musl": {
|
||||
|
||||
39
manifests/cargo-tarpaulin.json
generated
39
manifests/cargo-tarpaulin.json
generated
@@ -18,7 +18,44 @@
|
||||
}
|
||||
},
|
||||
"latest": {
|
||||
"version": "0.26.1"
|
||||
"version": "0.27.1"
|
||||
},
|
||||
"0.27": {
|
||||
"version": "0.27.1"
|
||||
},
|
||||
"0.27.1": {
|
||||
"x86_64_linux_musl": {
|
||||
"checksum": "a32bbf4da747a61348aebfd3dde141506e372618f85149536972c7e6f713e1c5"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"checksum": "9c833aa8ec463d3825009ebd509e015a479de716aae89bd78ca76bc45607304c"
|
||||
},
|
||||
"x86_64_windows": {
|
||||
"checksum": "f885b42a00f2af183d2a62a2746133c155f6aab6fd4be99d7a6ae062da7b227d"
|
||||
},
|
||||
"aarch64_linux_musl": {
|
||||
"checksum": "5a48b3e552172dc868ea88453d92bad94f716815c9b225af03029d0209c26499"
|
||||
},
|
||||
"aarch64_macos": {
|
||||
"checksum": "60b79c029d99a57dc1b7ffa6823436796f176a515cca088a6869a8fe50af9ee6"
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
"version": "0.26.1"
|
||||
|
||||
24
manifests/cargo-udeps.json
generated
24
manifests/cargo-udeps.json
generated
@@ -31,10 +31,30 @@
|
||||
}
|
||||
},
|
||||
"latest": {
|
||||
"version": "0.1.41"
|
||||
"version": "0.1.42"
|
||||
},
|
||||
"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": {
|
||||
"x86_64_linux_musl": {
|
||||
|
||||
22
manifests/dprint.json
generated
22
manifests/dprint.json
generated
@@ -21,7 +21,27 @@
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
"version": "0.40.2"
|
||||
|
||||
18
manifests/mdbook.json
generated
18
manifests/mdbook.json
generated
@@ -18,10 +18,24 @@
|
||||
}
|
||||
},
|
||||
"latest": {
|
||||
"version": "0.4.34"
|
||||
"version": "0.4.35"
|
||||
},
|
||||
"0.4": {
|
||||
"version": "0.4.34"
|
||||
"version": "0.4.35"
|
||||
},
|
||||
"0.4.35": {
|
||||
"x86_64_linux_musl": {
|
||||
"checksum": "574c2a4e03ee656999da506c4288084a690f234c589812e29825a7687af5942c"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"checksum": "ca3281c2b5437a1ccd9079ed8121b3dd97c49be74dae32ea803b540a38c334bb"
|
||||
},
|
||||
"x86_64_windows": {
|
||||
"checksum": "d306a09e552616c1d27f10cebe85848b96970881674ad28d9414cd259a949c39"
|
||||
},
|
||||
"aarch64_linux_musl": {
|
||||
"checksum": "359af01b77fbd6bf6243a3f2b2491a37b5480bbb2674eb2d94f91354253b34f4"
|
||||
}
|
||||
},
|
||||
"0.4.34": {
|
||||
"x86_64_linux_musl": {
|
||||
|
||||
24
manifests/parse-changelog.json
generated
24
manifests/parse-changelog.json
generated
@@ -24,10 +24,30 @@
|
||||
}
|
||||
},
|
||||
"latest": {
|
||||
"version": "0.6.2"
|
||||
"version": "0.6.3"
|
||||
},
|
||||
"0.6": {
|
||||
"version": "0.6.2"
|
||||
"version": "0.6.3"
|
||||
},
|
||||
"0.6.3": {
|
||||
"x86_64_linux_musl": {
|
||||
"checksum": "b01992d759aad7e861363e1d4bbb808b28d530844da1efbc9f8f0f54bad2f813"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"checksum": "5d0fa26aa6e742b96d1ef8c7aeccdf63469512a706961921242bde2de7640d89"
|
||||
},
|
||||
"x86_64_windows": {
|
||||
"checksum": "71f9367dd33b6ea754a71bdc59524470c955e78d9cf02ad2c09ec98a3ef44b81"
|
||||
},
|
||||
"aarch64_linux_musl": {
|
||||
"checksum": "6aa06d96c2a7c89786f9925e6c54472c77fda0c813c335566f870ecb4ca34d8e"
|
||||
},
|
||||
"aarch64_macos": {
|
||||
"checksum": "963e1b4614cd42a28090365522efc9d7a4f1220ffe9d7bc0b1da8ae29fa6fba9"
|
||||
},
|
||||
"aarch64_windows": {
|
||||
"checksum": "67fb1af8515d0b531bcea8686570d600fbe80c95994cb0c4cf7216b21a48aac4"
|
||||
}
|
||||
},
|
||||
"0.6.2": {
|
||||
"x86_64_linux_musl": {
|
||||
|
||||
50
manifests/protoc.json
generated
50
manifests/protoc.json
generated
@@ -2,13 +2,57 @@
|
||||
"rust_crate": null,
|
||||
"template": null,
|
||||
"latest": {
|
||||
"version": "3.24.1"
|
||||
"version": "3.24.3"
|
||||
},
|
||||
"3": {
|
||||
"version": "3.24.1"
|
||||
"version": "3.24.3"
|
||||
},
|
||||
"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": {
|
||||
"x86_64_linux_gnu": {
|
||||
|
||||
102
manifests/syft.json
generated
102
manifests/syft.json
generated
@@ -23,7 +23,107 @@
|
||||
}
|
||||
},
|
||||
"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": {
|
||||
"version": "0.87.1"
|
||||
|
||||
93
manifests/wasmtime.json
generated
93
manifests/wasmtime.json
generated
@@ -2,13 +2,100 @@
|
||||
"rust_crate": "wasmtime-cli",
|
||||
"template": null,
|
||||
"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": {
|
||||
"version": "12.0.0"
|
||||
"version": "12.0.2"
|
||||
},
|
||||
"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": {
|
||||
"x86_64_linux_gnu": {
|
||||
|
||||
34
manifests/xbuild.json
generated
Normal file
34
manifests/xbuild.json
generated
Normal 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"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1 +1 @@
|
||||
git ls-files '*.sh' # TODO: check more files
|
||||
git ls-files
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
set -euo pipefail
|
||||
set -eEuo pipefail
|
||||
IFS=$'\n\t'
|
||||
cd "$(dirname "$0")"/../..
|
||||
|
||||
|
||||
@@ -1,11 +1,15 @@
|
||||
#!/usr/bin/env bash
|
||||
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
set -euo pipefail
|
||||
set -eEuo pipefail
|
||||
IFS=$'\n\t'
|
||||
cd "$(dirname "$0")"/../..
|
||||
|
||||
# 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_34_incompat[@]}"
|
||||
zola
|
||||
)
|
||||
glibc_pre_2_27_incompat=(
|
||||
@@ -41,13 +45,18 @@ case "$(uname -s)" in
|
||||
incompat_tools+=("${musl_incompat[@]}")
|
||||
else
|
||||
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
|
||||
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[@]}")
|
||||
higher_glibc_version=$(sort <<<"2.31"$'\n'"${host_glibc_version}" -Vu | tail -1)
|
||||
if [[ "${higher_glibc_version}" != "${host_glibc_version}" ]]; then
|
||||
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
|
||||
incompat_tools+=("${glibc_pre_2_27_incompat[@]}")
|
||||
incompat_tools+=("${glibc_pre_2_34_incompat[@]}")
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
@@ -63,6 +72,10 @@ esac
|
||||
tools=()
|
||||
for manifest in tools/codegen/base/*.json; do
|
||||
tool_name=$(basename "${manifest%.*}")
|
||||
# cross -V requires rustc
|
||||
if [[ "${tool_name}" == "cross" ]] && ! type -P rustc &>/dev/null; then
|
||||
continue
|
||||
fi
|
||||
case "${host_os}" in
|
||||
linux*)
|
||||
for incompat in ${incompat_tools[@]+"${incompat_tools[@]}"}; do
|
||||
@@ -111,14 +124,17 @@ case "${host_os}" in
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
# cargo-watch/watchexec-cli is supported by cargo-binstall (through quickinstall)
|
||||
case "${version}" in
|
||||
latest) tools+=(cargo-watch watchexec-cli nextest) ;;
|
||||
major.minor.patch) tools+=(cargo-watch@8.1.1 watchexec-cli@1.20.5 nextest@0.9.57) ;;
|
||||
major.minor) tools+=(cargo-watch@8.1 watchexec-cli@1.20 nextest@0.9) ;;
|
||||
major) tools+=(cargo-watch@8 watchexec-cli@1) ;;
|
||||
*) exit 1 ;;
|
||||
esac
|
||||
# cargo-binstall requires cargo
|
||||
if type -P cargo &>/dev/null; then
|
||||
# cargo-watch/watchexec-cli is supported by cargo-binstall (through quickinstall)
|
||||
case "${version}" in
|
||||
latest) tools+=(cargo-watch watchexec-cli nextest) ;;
|
||||
major.minor.patch) tools+=(cargo-watch@8.1.1 watchexec-cli@1.20.5 nextest@0.9.57) ;;
|
||||
major.minor) tools+=(cargo-watch@8.1 watchexec-cli@1.20 nextest@0.9) ;;
|
||||
major) tools+=(cargo-watch@8 watchexec-cli@1) ;;
|
||||
*) exit 1 ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# sort and dedup
|
||||
IFS=$'\n'
|
||||
|
||||
@@ -6,9 +6,13 @@ publish = false
|
||||
|
||||
[dependencies]
|
||||
anyhow = "1"
|
||||
flate2 = "1"
|
||||
fs-err = "2"
|
||||
minisign-verify = "0.2"
|
||||
semver = { version = "1", features = ["serde"] }
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
serde_json = "1"
|
||||
sha2 = "0.10"
|
||||
tar = "0.4"
|
||||
toml = "0.8"
|
||||
ureq = { version = "2", features = ["json"] }
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
"rust_crate": "${package}",
|
||||
"asset_name": "${package}-${rust_target}.tgz",
|
||||
"version_range": "latest",
|
||||
"signing": {
|
||||
"kind": "minisign-binstall"
|
||||
},
|
||||
"platform": {
|
||||
"x86_64_linux_musl": {},
|
||||
"x86_64_macos": {
|
||||
|
||||
13
tools/codegen/base/xbuild.json
Normal file
13
tools/codegen/base/xbuild.json
Normal 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": {}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,13 @@
|
||||
use anyhow::{bail, Context as _, Result};
|
||||
use fs_err as fs;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use sha2::{Digest, Sha256};
|
||||
// SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
|
||||
#![allow(clippy::single_match)]
|
||||
|
||||
use std::{
|
||||
cmp::Reverse,
|
||||
collections::{BTreeMap, BTreeSet},
|
||||
env, fmt,
|
||||
env,
|
||||
ffi::OsStr,
|
||||
fmt,
|
||||
io::Read,
|
||||
path::{Path, PathBuf},
|
||||
slice,
|
||||
@@ -13,6 +15,11 @@ use std::{
|
||||
time::Duration,
|
||||
};
|
||||
|
||||
use anyhow::{bail, Context as _, Result};
|
||||
use fs_err as fs;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use sha2::{Digest, Sha256};
|
||||
|
||||
fn main() -> Result<()> {
|
||||
let args: Vec<_> = env::args().skip(1).collect();
|
||||
if args.is_empty() || args.iter().any(|arg| arg.starts_with('-')) {
|
||||
@@ -24,17 +31,13 @@ fn main() -> Result<()> {
|
||||
let package = &args[0];
|
||||
|
||||
let workspace_root = &workspace_root();
|
||||
let manifest_path = &workspace_root
|
||||
.join("manifests")
|
||||
.join(format!("{package}.json"));
|
||||
let manifest_path = &workspace_root.join("manifests").join(format!("{package}.json"));
|
||||
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(download_cache_dir)?;
|
||||
|
||||
let mut base_info: BaseManifest = serde_json::from_slice(&fs::read(
|
||||
workspace_root
|
||||
.join("tools/codegen/base")
|
||||
.join(format!("{package}.json")),
|
||||
workspace_root.join("tools/codegen/base").join(format!("{package}.json")),
|
||||
)?)?;
|
||||
let repo = base_info
|
||||
.repository
|
||||
@@ -75,11 +78,8 @@ fn main() -> Result<()> {
|
||||
.collect();
|
||||
|
||||
let mut crates_io_info = None;
|
||||
base_info.rust_crate = base_info
|
||||
.rust_crate
|
||||
.as_ref()
|
||||
.map(|s| replace_vars(s, package, None, None))
|
||||
.transpose()?;
|
||||
base_info.rust_crate =
|
||||
base_info.rust_crate.as_ref().map(|s| replace_vars(s, package, None, None)).transpose()?;
|
||||
if let Some(crate_name) = &base_info.rust_crate {
|
||||
eprintln!("downloading crate info from https://crates.io/api/v1/crates/{crate_name}");
|
||||
crates_io_info = Some(
|
||||
@@ -111,10 +111,7 @@ fn main() -> Result<()> {
|
||||
for (platform, d) in &mut manifest.download_info {
|
||||
let template = &template.download_info[platform];
|
||||
d.url = Some(template.url.replace("${version}", version));
|
||||
d.bin = template
|
||||
.bin
|
||||
.as_ref()
|
||||
.map(|s| s.replace("${version}", version));
|
||||
d.bin = template.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) {
|
||||
_ 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()?;
|
||||
eprintln!("update manifest for versions '{req}'");
|
||||
Some(req)
|
||||
@@ -161,7 +145,7 @@ fn main() -> Result<()> {
|
||||
if manifests.map.is_empty() {
|
||||
format!("={}", releases.first_key_value().unwrap().0 .0).parse()?
|
||||
} else {
|
||||
format!(">{}", semver_versions.last().unwrap()).parse()?
|
||||
format!(">={}", semver_versions.last().unwrap()).parse()?
|
||||
}
|
||||
} else {
|
||||
version_req.parse()?
|
||||
@@ -172,13 +156,21 @@ fn main() -> Result<()> {
|
||||
};
|
||||
|
||||
let mut buf = vec![];
|
||||
let mut buf2 = vec![];
|
||||
for (Reverse(semver_version), (version, release)) in &releases {
|
||||
if let Some(version_req) = &version_req {
|
||||
if !version_req.matches(semver_version) {
|
||||
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 pubkey = None;
|
||||
for (&platform, base_download_info) in &base_info.platform {
|
||||
let asset_names = base_download_info
|
||||
.asset_name
|
||||
@@ -205,37 +197,112 @@ fn main() -> Result<()> {
|
||||
}
|
||||
};
|
||||
|
||||
eprintln!("downloading {url} for checksum...");
|
||||
let download_cache = download_cache_dir.join(format!(
|
||||
eprint!("downloading {url} for checksum ... ");
|
||||
let download_cache = &download_cache_dir.join(format!(
|
||||
"{version}-{platform:?}-{}",
|
||||
Path::new(&url).file_name().unwrap().to_str().unwrap()
|
||||
));
|
||||
if download_cache.is_file() {
|
||||
eprintln!(" already downloaded");
|
||||
eprintln!("already downloaded");
|
||||
fs::File::open(download_cache)?.read_to_end(&mut buf)?;
|
||||
} else {
|
||||
download(&url)?.into_reader().read_to_end(&mut buf)?;
|
||||
eprintln!(" download complete");
|
||||
eprintln!("download complete");
|
||||
fs::write(download_cache, &buf)?;
|
||||
}
|
||||
eprintln!("getting sha256 hash for {url}");
|
||||
let hash = Sha256::digest(&buf);
|
||||
let hash = format!("{hash:x}");
|
||||
eprintln!("{hash} *{asset_name}");
|
||||
let bin_url = &url;
|
||||
|
||||
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()?,
|
||||
},
|
||||
);
|
||||
match base_info.signing {
|
||||
Some(Signing { kind: SigningKind::MinisignBinstall }) => {
|
||||
let url = url.clone() + ".sig";
|
||||
let sig_download_cache = &download_cache.with_extension(format!(
|
||||
"{}.sig",
|
||||
download_cache.extension().unwrap_or_default().to_str().unwrap()
|
||||
));
|
||||
eprint!("downloading {url} for signature validation ... ");
|
||||
let sig = if sig_download_cache.is_file() {
|
||||
eprintln!("already downloaded");
|
||||
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();
|
||||
}
|
||||
if download_info.is_empty() {
|
||||
@@ -287,39 +354,30 @@ fn main() -> Result<()> {
|
||||
if !(version.major == 0 && version.minor == 0) {
|
||||
manifests.map.insert(
|
||||
Reverse(Version::omitted(version.major, Some(version.minor))),
|
||||
ManifestRef::Ref {
|
||||
version: version.clone().into(),
|
||||
},
|
||||
ManifestRef::Ref { version: version.clone().into() },
|
||||
);
|
||||
}
|
||||
if version.major != 0 {
|
||||
manifests.map.insert(
|
||||
Reverse(Version::omitted(version.major, None)),
|
||||
ManifestRef::Ref {
|
||||
manifests
|
||||
.map
|
||||
.insert(Reverse(Version::omitted(version.major, None)), ManifestRef::Ref {
|
||||
version: version.clone().into(),
|
||||
},
|
||||
);
|
||||
});
|
||||
}
|
||||
prev_version = version;
|
||||
}
|
||||
manifests.map.insert(
|
||||
Reverse(Version::latest()),
|
||||
ManifestRef::Ref {
|
||||
version: prev_version.clone().into(),
|
||||
},
|
||||
);
|
||||
manifests.map.insert(Reverse(Version::latest()), ManifestRef::Ref {
|
||||
version: prev_version.clone().into(),
|
||||
});
|
||||
}
|
||||
|
||||
let ManifestRef::Ref {
|
||||
version: latest_version,
|
||||
} = manifests.map.first_key_value().unwrap().1.clone()
|
||||
let ManifestRef::Ref { version: latest_version } =
|
||||
manifests.map.first_key_value().unwrap().1.clone()
|
||||
else {
|
||||
unreachable!()
|
||||
};
|
||||
if latest_only {
|
||||
manifests
|
||||
.map
|
||||
.retain(|k, _| k.0 == Version::latest() || k.0 == latest_version);
|
||||
manifests.map.retain(|k, _| k.0 == Version::latest() || k.0 == latest_version);
|
||||
}
|
||||
let ManifestRef::Real(latest_manifest) = &manifests.map[&Reverse(latest_version.clone())]
|
||||
else {
|
||||
@@ -330,16 +388,12 @@ fn main() -> Result<()> {
|
||||
continue;
|
||||
}
|
||||
if p == HostPlatform::x86_64_linux_gnu
|
||||
&& latest_manifest
|
||||
.download_info
|
||||
.contains_key(&HostPlatform::x86_64_linux_musl)
|
||||
&& latest_manifest.download_info.contains_key(&HostPlatform::x86_64_linux_musl)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if p == HostPlatform::aarch64_linux_gnu
|
||||
&& latest_manifest
|
||||
.download_info
|
||||
.contains_key(&HostPlatform::aarch64_linux_musl)
|
||||
&& latest_manifest.download_info.contains_key(&HostPlatform::aarch64_linux_musl)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -350,9 +404,7 @@ fn main() -> Result<()> {
|
||||
}
|
||||
|
||||
let original_manifests = manifests.clone();
|
||||
let mut template = Some(ManifestTemplate {
|
||||
download_info: BTreeMap::new(),
|
||||
});
|
||||
let mut template = Some(ManifestTemplate { download_info: BTreeMap::new() });
|
||||
'outer: for (version, manifest) in &mut manifests.map {
|
||||
let ManifestRef::Real(manifest) = manifest else {
|
||||
continue;
|
||||
@@ -368,13 +420,10 @@ fn main() -> Result<()> {
|
||||
break 'outer;
|
||||
}
|
||||
} else {
|
||||
t.download_info.insert(
|
||||
*platform,
|
||||
ManifestTemplateDownloadInfo {
|
||||
url: template_url,
|
||||
bin: template_bin,
|
||||
},
|
||||
);
|
||||
t.download_info.insert(*platform, ManifestTemplateDownloadInfo {
|
||||
url: template_url,
|
||||
bin: template_bin,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -579,9 +628,7 @@ impl<'de> Deserialize<'de> for Version {
|
||||
D: serde::Deserializer<'de>,
|
||||
{
|
||||
use serde::de::Error as _;
|
||||
String::deserialize(deserializer)?
|
||||
.parse()
|
||||
.map_err(D::Error::custom)
|
||||
String::deserialize(deserializer)?.parse().map_err(D::Error::custom)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -644,10 +691,27 @@ struct BaseManifest {
|
||||
asset_name: Option<StringOrArray>,
|
||||
/// Path to binary in archive. Default to `${tool}${exe}`.
|
||||
bin: Option<String>,
|
||||
signing: Option<Signing>,
|
||||
platform: BTreeMap<HostPlatform, BaseManifestPlatformInfo>,
|
||||
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)]
|
||||
#[serde(deny_unknown_fields)]
|
||||
struct BaseManifestPlatformInfo {
|
||||
@@ -767,7 +831,39 @@ mod crates_io {
|
||||
|
||||
#[derive(Debug, Deserialize)]
|
||||
pub struct Version {
|
||||
pub checksum: String,
|
||||
pub dl_path: String,
|
||||
pub num: semver::Version,
|
||||
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,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
set -euo pipefail
|
||||
set -eEuo pipefail
|
||||
IFS=$'\n\t'
|
||||
cd "$(dirname "$0")"/..
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
set -euo pipefail
|
||||
set -eEuo pipefail
|
||||
IFS=$'\n\t'
|
||||
cd "$(dirname "$0")"/..
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||
# shellcheck disable=SC2046
|
||||
set -euo pipefail
|
||||
set -eEuo pipefail
|
||||
IFS=$'\n\t'
|
||||
cd "$(dirname "$0")"/..
|
||||
|
||||
@@ -81,7 +81,7 @@ if [[ -n "$(git ls-files '*.rs')" ]]; then
|
||||
fi
|
||||
check_diff $(git ls-files '*.rs')
|
||||
else
|
||||
warn "'rustup' is not installed"
|
||||
warn "'rustup' is not installed; skipped Rust code style check"
|
||||
fi
|
||||
cast_without_turbofish=$(grep -n -E '\.cast\(\)' $(git ls-files '*.rs') || true)
|
||||
if [[ -n "${cast_without_turbofish}" ]]; then
|
||||
@@ -168,7 +168,7 @@ if [[ -n "$(git ls-files '*.c')$(git ls-files '*.cpp')" ]]; then
|
||||
clang-format -i $(git ls-files '*.c') $(git ls-files '*.cpp')
|
||||
check_diff $(git ls-files '*.c') $(git ls-files '*.cpp')
|
||||
else
|
||||
warn "'clang-format' is not installed"
|
||||
warn "'clang-format' is not installed; skipped C/C++ code style check"
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -176,11 +176,11 @@ fi
|
||||
if [[ -n "$(git ls-files '*.yml')$(git ls-files '*.js')$(git ls-files '*.json')" ]]; then
|
||||
info "checking YAML/JavaScript/JSON code style"
|
||||
if type -P npm &>/dev/null; then
|
||||
echo "+ npx prettier -l -w \$(git ls-files '*.yml') \$(git ls-files '*.js') \$(git ls-files '*.json')"
|
||||
npx prettier -l -w $(git ls-files '*.yml') $(git ls-files '*.js') $(git ls-files '*.json')
|
||||
echo "+ npx -y prettier -l -w \$(git ls-files '*.yml') \$(git ls-files '*.js') \$(git ls-files '*.json')"
|
||||
npx -y prettier -l -w $(git ls-files '*.yml') $(git ls-files '*.js') $(git ls-files '*.json')
|
||||
check_diff $(git ls-files '*.yml') $(git ls-files '*.js') $(git ls-files '*.json')
|
||||
else
|
||||
warn "'npm' is not installed"
|
||||
warn "'npm' is not installed; skipped YAML/JavaScript/JSON code style check"
|
||||
fi
|
||||
# Check GitHub workflows.
|
||||
if [[ -d .github/workflows ]]; then
|
||||
@@ -190,7 +190,7 @@ if [[ -n "$(git ls-files '*.yml')$(git ls-files '*.js')$(git ls-files '*.json')"
|
||||
# The top-level permissions must be weak as they are referenced by all jobs.
|
||||
permissions=$(yq '.permissions' "${workflow}" | jq -c)
|
||||
case "${permissions}" in
|
||||
'{"contents":"read"}' | '{"contents":"none"}' | '{}') ;;
|
||||
'{"contents":"read"}' | '{"contents":"none"}') ;;
|
||||
null) error "${workflow}: top level permissions not found; it must be 'contents: read' or weaker permissions" ;;
|
||||
*) error "${workflow}: only 'contents: read' and weaker permissions are allowed at top level; if you want to use stronger permissions, please set job-level permissions" ;;
|
||||
esac
|
||||
@@ -210,7 +210,7 @@ if [[ -n "$(git ls-files '*.yml')$(git ls-files '*.js')$(git ls-files '*.json')"
|
||||
fi
|
||||
done
|
||||
else
|
||||
warn "'jq' or 'yq' is not installed"
|
||||
warn "'jq' or 'yq' is not installed; skipped GitHub workflow check"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
@@ -219,6 +219,21 @@ if [[ -n "$(git ls-files '*.yaml')" ]]; then
|
||||
git ls-files '*.yaml'
|
||||
fi
|
||||
|
||||
# Markdown (if exists)
|
||||
if [[ -n "$(git ls-files '*.md')" ]]; then
|
||||
info "checking Markdown style"
|
||||
if type -P npm &>/dev/null; then
|
||||
echo "+ npx -y markdownlint-cli2 \$(git ls-files '*.md')"
|
||||
npx -y markdownlint-cli2 $(git ls-files '*.md')
|
||||
else
|
||||
warn "'npm' is not installed; skipped Markdown style check"
|
||||
fi
|
||||
fi
|
||||
if [[ -n "$(git ls-files '*.markdown')" ]]; then
|
||||
error "please use '.md' instead of '.markdown' for consistency"
|
||||
git ls-files '*.markdown'
|
||||
fi
|
||||
|
||||
# Shell scripts
|
||||
info "checking Shell scripts"
|
||||
if type -P shfmt &>/dev/null; then
|
||||
@@ -226,7 +241,7 @@ if type -P shfmt &>/dev/null; then
|
||||
shfmt -l -w $(git ls-files '*.sh')
|
||||
check_diff $(git ls-files '*.sh')
|
||||
else
|
||||
warn "'shfmt' is not installed"
|
||||
warn "'shfmt' is not installed; skipped Shell scripts style check"
|
||||
fi
|
||||
if type -P shellcheck &>/dev/null; then
|
||||
echo "+ shellcheck \$(git ls-files '*.sh')"
|
||||
@@ -241,7 +256,7 @@ if type -P shellcheck &>/dev/null; then
|
||||
fi
|
||||
fi
|
||||
else
|
||||
warn "'shellcheck' is not installed"
|
||||
warn "'shellcheck' is not installed; skipped Shell scripts style check"
|
||||
fi
|
||||
|
||||
# License check
|
||||
@@ -250,24 +265,28 @@ if [[ -f tools/.tidy-check-license-headers ]]; then
|
||||
info "checking license headers (experimental)"
|
||||
failed_files=''
|
||||
for p in $(eval $(<tools/.tidy-check-license-headers)); do
|
||||
# TODO: More file types?
|
||||
case "$(basename "${p}")" in
|
||||
*.sh) prefix=("# ") ;;
|
||||
*.rs | *.c | *.h | *.cpp | *.hpp | *.s | *.S) prefix=("// " "/* ") ;;
|
||||
*.stderr | *.expanded.rs) continue ;; # generated files
|
||||
*.sh | *.py | *.rb | *Dockerfile) prefix=("# ") ;;
|
||||
*.rs | *.c | *.h | *.cpp | *.hpp | *.s | *.S | *.js) prefix=("// " "/* ") ;;
|
||||
*.ld | *.x) prefix=("/* ") ;;
|
||||
*) error "unrecognized file type: ${p}" ;;
|
||||
# TODO: More file types?
|
||||
*) continue ;;
|
||||
esac
|
||||
# TODO: The exact line number is not actually important; it is important
|
||||
# that it be part of the top-level comments of the file.
|
||||
line="1"
|
||||
case "${p}" in
|
||||
*.sh) line="2" ;; # shebang
|
||||
esac
|
||||
if IFS= LC_ALL=C read -rn3 -d '' shebang <"${p}" && [[ "${shebang}" == '#!/' ]]; then
|
||||
line="2"
|
||||
elif [[ "${p}" == *"Dockerfile" ]] && IFS= LC_ALL=C read -rn9 -d '' syntax <"${p}" && [[ "${syntax}" == '# syntax=' ]]; then
|
||||
line="2"
|
||||
fi
|
||||
header_found=''
|
||||
for pre in "${prefix[@]}"; do
|
||||
# TODO: check that the license is valid as SPDX and is allowed in this project.
|
||||
if [[ "$(grep -E -n "${pre}SPDX-License-Identifier: " "${p}")" == "${line}:${pre}SPDX-License-Identifier: "* ]]; then
|
||||
header_found='1'
|
||||
continue
|
||||
break
|
||||
fi
|
||||
done
|
||||
if [[ -z "${header_found}" ]]; then
|
||||
@@ -305,13 +324,14 @@ if [[ -f .cspell.json ]]; then
|
||||
fi
|
||||
config_old=$(<.cspell.json)
|
||||
config_new=$(grep <<<"${config_old}" -v ' *//' | jq 'del(.dictionaries[] | select(index("organization-dictionary") | not))' | jq 'del(.dictionaryDefinitions[] | select(.name == "organization-dictionary" | not))')
|
||||
trap -- 'echo "${config_old}" >.cspell.json; echo >&2 "$0: trapped SIGINT"; exit 1' SIGINT
|
||||
echo "${config_new}" >.cspell.json
|
||||
if [[ -n "${has_rust}" ]]; then
|
||||
dependencies_words=$(npx <<<"${dependencies}" cspell stdin --no-progress --no-summary --words-only --unique || true)
|
||||
dependencies_words=$(npx <<<"${dependencies}" -y cspell stdin --no-progress --no-summary --words-only --unique || true)
|
||||
fi
|
||||
all_words=$(npx cspell --no-progress --no-summary --words-only --unique $(git ls-files | (grep -v "${project_dictionary//\./\\.}" || true)) || true)
|
||||
# TODO: handle SIGINT
|
||||
all_words=$(npx -y cspell --no-progress --no-summary --words-only --unique $(git ls-files | (grep -v "${project_dictionary//\./\\.}" || true)) || true)
|
||||
echo "${config_old}" >.cspell.json
|
||||
trap - SIGINT
|
||||
cat >.github/.cspell/rust-dependencies.txt <<EOF
|
||||
// This file is @generated by $(basename "$0").
|
||||
// It is not intended for manual editing.
|
||||
@@ -324,8 +344,8 @@ EOF
|
||||
echo "warning: you may want to mark .github/.cspell/rust-dependencies.txt linguist-generated"
|
||||
fi
|
||||
|
||||
echo "+ npx cspell --no-progress --no-summary \$(git ls-files)"
|
||||
if ! npx cspell --no-progress --no-summary $(git ls-files); then
|
||||
echo "+ npx -y cspell --no-progress --no-summary \$(git ls-files)"
|
||||
if ! npx -y cspell --no-progress --no-summary $(git ls-files); then
|
||||
error "spellcheck failed: please fix uses of above words or add to ${project_dictionary} if correct"
|
||||
fi
|
||||
|
||||
@@ -357,7 +377,7 @@ EOF
|
||||
echo "======================================="
|
||||
fi
|
||||
else
|
||||
warn "'npm' is not installed"
|
||||
warn "'npm' is not installed; skipped spell check"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user