Compare commits

..

1 Commits

Author SHA1 Message Date
Taiki Endo
f7379c13bb Add release instructions and update release script 2023-03-26 18:47:22 +09:00
33 changed files with 489 additions and 2215 deletions

View File

@@ -26,7 +26,7 @@
],
"ignoreRegExpList": [
// Copyright notice
"Copyright .*",
"Copyright ((\\(c\\)|\\(C\\)|©) )?.*",
// GHA actions/workflows
"uses: .+@",
// GHA context (repo name, owner name, etc.)
@@ -35,8 +35,6 @@
"( |\\[)@[\\w_-]+",
// Git config username
"git config user.name .*",
// Username in todo comment
"(TODO|FIXME)\\([\\w_., -]+\\)",
// Cargo.toml authors
"authors *= *\\[.*\\]",
"\".* <[\\w_.+-]+@[\\w.-]+>\""

View File

@@ -29,7 +29,6 @@ Zmiri
// Rust target triple
aarch
amdgpu
androideabi
armeb
armebv
@@ -62,12 +61,10 @@ musleabi
musleabihf
newlibeabihf
nvptx
ohos
openwrt
riscv
softfloat
sparcv
spirv
thumbeb
thumbebv
thumbv
@@ -88,28 +85,21 @@ acqrel
alloc
bools
builtins
bytecount
canonicalize
cfgs
concat
consts
ctypes
dealloc
deque
docsrs
doctest
doctests
hasher
idents
impls
inlateout
intrinsics
lateout
mclass
memcpy
msrv
nand
nanos
nomem
nonoverlapping
noreturn
@@ -120,14 +110,10 @@ rclass
repr
rfind
rfold
rposition
rsplit
rustlib
seqcst
simd
splitn
structs
subsec
supertrait
supertraits
sysroot
@@ -138,18 +124,12 @@ unsized
upcastable
// Other
armel
armhf
binutils
connrefused
cygwin
dpkg
elif
endianness
esac
euxo
gsub
moreutils
msys
noninteractive
noprofile
@@ -159,12 +139,9 @@ objdump
pipefail
powerset
proto
ranlib
readelf
shellcheckrc
SIGABRT
SIGILL
SIGINT
SIGTERM
subcmd
tlsv

View File

@@ -1,4 +1,5 @@
binstall
bytecodealliance
coreutils
distro
doas
@@ -6,18 +7,23 @@ dprint
enablerepo
epel
grcov
jfrimmel
koalaman
libc
linkcheck
mdbook
microdnf
mvdan
nextest
protobuf
protoc
protocolbuffers
pwsh
quickinstall
rockylinux
rustwasm
shellcheck
shfmt
syft
udeps
wasmtime
watchexec

View File

@@ -44,19 +44,19 @@ jobs:
tool:
# cargo-watch/watchexec-cli is supported by cargo-binstall (through quickinstall)
# TODO: valgrind installation sometime hangs.
- cargo-hack,cargo-llvm-cov,cargo-minimal-versions,cargo-no-dev-deps,parse-changelog,cargo-udeps,cargo-valgrind,cargo-deny,cross,dprint,just,nextest,protoc,shellcheck,shfmt,wasm-pack,wasmtime,mdbook,mdbook-linkcheck,cargo-watch,grcov,watchexec-cli,cargo-tarpaulin,zola,syft
- cargo-hack,cargo-llvm-cov,cargo-minimal-versions,cargo-no-dev-deps,parse-changelog,cargo-udeps,cargo-valgrind,cargo-deny,cross,dprint,just,nextest,protoc,shellcheck,shfmt,wasm-pack,wasmtime,mdbook,mdbook-linkcheck,cargo-watch,grcov,watchexec-cli,cargo-tarpaulin,zola
include:
# Note: Specifying the version of valgrind and cargo-binstall is not supported.
- os: ubuntu-20.04
tool: cargo-hack@0.5.24,cargo-llvm-cov@0.5.3,cargo-minimal-versions@0.1.8,cargo-no-dev-deps@0.1.0,parse-changelog@0.5.2,cargo-udeps@0.1.35,cargo-valgrind@2.1.0,cargo-deny@0.13.5,cross@0.2.4,dprint@0.34.1,just@1.9.0,nextest@0.9.11,protoc@3.21.12,shellcheck@0.9.0,shfmt@3.6.0,wasm-pack@0.10.3,wasmtime@4.0.0,mdbook@0.4.25,mdbook-linkcheck@0.7.7,cargo-watch@8.1.1,grcov@0.8.13,watchexec-cli@1.20.5,cargo-tarpaulin@0.25.0,zola@0.16.1,syft@0.83.0
tool: cargo-hack@0.5.24,cargo-llvm-cov@0.5.3,cargo-minimal-versions@0.1.8,cargo-no-dev-deps@0.1.0,parse-changelog@0.5.2,cargo-udeps@0.1.35,cargo-valgrind@2.1.0,cargo-deny@0.13.5,cross@0.2.4,dprint@0.34.1,just@1.9.0,nextest@0.9.11,protoc@3.21.12,shellcheck@0.9.0,shfmt@3.6.0,wasm-pack@0.10.3,wasmtime@4.0.0,mdbook@0.4.25,mdbook-linkcheck@0.7.7,cargo-watch@8.1.1,grcov@0.8.13,watchexec-cli@1.20.5,cargo-tarpaulin@0.25.0,zola@0.16.1
- os: ubuntu-20.04
tool: cargo-hack@0.5,cargo-llvm-cov@0.5,cargo-minimal-versions@0.1,cargo-no-dev-deps@0.1,parse-changelog@0.5,cargo-udeps@0.1,cargo-valgrind@2.1,cargo-deny@0.13,cross@0.2,dprint@0.34,just@1.9,nextest@0.9,protoc@3.21,shellcheck@0.9,shfmt@3.5,wasm-pack@0.10,wasmtime@6.0,mdbook@0.4,mdbook-linkcheck@0.7,cargo-watch@8.1,grcov@0.8,watchexec-cli@1.20,cargo-tarpaulin@0.25,zola@0.16,syft@0.83
tool: cargo-hack@0.5,cargo-llvm-cov@0.5,cargo-minimal-versions@0.1,cargo-no-dev-deps@0.1,parse-changelog@0.5,cargo-udeps@0.1,cargo-valgrind@2.1,cargo-deny@0.13,cross@0.2,dprint@0.34,just@1.9,nextest@0.9,protoc@3.21,shellcheck@0.9,shfmt@3.5,wasm-pack@0.10,wasmtime@4.0,mdbook@0.4,mdbook-linkcheck@0.7,cargo-watch@8.1,grcov@0.8,watchexec-cli@1.20,cargo-tarpaulin@0.25,zola@0.16
- os: ubuntu-20.04
tool: cargo-valgrind@2, just@1,protoc@3 , shfmt@3 ,wasmtime@7,cargo-watch@8,watchexec-cli@1
tool: cargo-valgrind@2,just@1,protoc@3,shfmt@3,wasmtime@4,cargo-watch@8,watchexec-cli@1
- os: macos-11
tool: cargo-hack,cargo-llvm-cov,cargo-minimal-versions,cargo-no-dev-deps,parse-changelog,cargo-udeps,cargo-valgrind,cargo-deny,cross,dprint,just,nextest,protoc,shellcheck,shfmt,wasm-pack,wasmtime,mdbook,mdbook-linkcheck,cargo-watch,grcov,watchexec-cli,cargo-tarpaulin,zola,syft
tool: cargo-hack,cargo-llvm-cov,cargo-minimal-versions,cargo-no-dev-deps,parse-changelog,cargo-udeps,cargo-valgrind,cargo-deny,cross,dprint,just,nextest,protoc,shellcheck,shfmt,wasm-pack,wasmtime,mdbook,mdbook-linkcheck,cargo-watch,grcov,watchexec-cli,cargo-tarpaulin,zola
- os: windows-2019
tool: cargo-hack,cargo-llvm-cov,cargo-minimal-versions,cargo-no-dev-deps,parse-changelog,cargo-udeps,cargo-valgrind,cargo-deny,cross,dprint,just,nextest,protoc,shellcheck,shfmt,wasm-pack,wasmtime,mdbook,mdbook-linkcheck,cargo-watch,grcov,watchexec-cli,cargo-tarpaulin,zola,syft
tool: cargo-hack,cargo-llvm-cov,cargo-minimal-versions,cargo-no-dev-deps,parse-changelog,cargo-udeps,cargo-valgrind,cargo-deny,cross,dprint,just,nextest,protoc,shellcheck,shfmt,wasm-pack,wasmtime,mdbook,mdbook-linkcheck,cargo-watch,grcov,watchexec-cli,cargo-tarpaulin,zola
runs-on: ${{ matrix.os }}
timeout-minutes: 60
steps:
@@ -97,32 +97,28 @@ jobs:
fail-fast: false
matrix:
container:
# glibc >= 2.31
- ubuntu:18.04 # glibc 2.27
- ubuntu:20.04 # glibc 2.31
- ubuntu:22.04 # glibc 2.35
- debian:10-slim # glibc 2.28
- debian:11-slim # glibc 2.31
- fedora:latest # glibc 2.36 (as of fedora 37)
- rockylinux:8 # glibc 2.28
- rockylinux:8-minimal # glibc 2.28
tool:
# valgrind: installing snap to container is difficult...
- cargo-hack,cargo-llvm-cov,cargo-minimal-versions,cargo-no-dev-deps,parse-changelog,cargo-udeps,cargo-valgrind,cargo-deny,cross,dprint,just,nextest,protoc,shellcheck,shfmt,wasm-pack,wasmtime,mdbook,mdbook-linkcheck,cargo-watch,grcov,watchexec-cli,cargo-tarpaulin,zola,syft
- cargo-hack,cargo-llvm-cov,cargo-minimal-versions,cargo-no-dev-deps,parse-changelog,cargo-udeps,cargo-valgrind,cargo-deny,cross,dprint,just,nextest,protoc,shellcheck,shfmt,wasm-pack,wasmtime,mdbook,mdbook-linkcheck,cargo-watch,grcov,watchexec-cli,cargo-tarpaulin
include:
# glibc < 2.31
# zola don't provide prebuilt binaries for musl or old glibc host.
- container: ubuntu:18.04 # glibc 2.27
tool: cargo-hack,cargo-llvm-cov,cargo-minimal-versions,cargo-no-dev-deps,parse-changelog,cargo-udeps,cargo-valgrind,cargo-deny,cross,dprint,just,nextest,protoc,shellcheck,shfmt,wasm-pack,wasmtime,mdbook,mdbook-linkcheck,cargo-watch,grcov,watchexec-cli,cargo-tarpaulin,syft
- container: debian:10-slim # glibc 2.28
tool: cargo-hack,cargo-llvm-cov,cargo-minimal-versions,cargo-no-dev-deps,parse-changelog,cargo-udeps,cargo-valgrind,cargo-deny,cross,dprint,just,nextest,protoc,shellcheck,shfmt,wasm-pack,wasmtime,mdbook,mdbook-linkcheck,cargo-watch,grcov,watchexec-cli,cargo-tarpaulin,syft
- container: rockylinux:8 # glibc 2.28
tool: cargo-hack,cargo-llvm-cov,cargo-minimal-versions,cargo-no-dev-deps,parse-changelog,cargo-udeps,cargo-valgrind,cargo-deny,cross,dprint,just,nextest,protoc,shellcheck,shfmt,wasm-pack,wasmtime,mdbook,mdbook-linkcheck,cargo-watch,grcov,watchexec-cli,cargo-tarpaulin,syft
- container: rockylinux:8-minimal # glibc 2.28
tool: cargo-hack,cargo-llvm-cov,cargo-minimal-versions,cargo-no-dev-deps,parse-changelog,cargo-udeps,cargo-valgrind,cargo-deny,cross,dprint,just,nextest,protoc,shellcheck,shfmt,wasm-pack,wasmtime,mdbook,mdbook-linkcheck,cargo-watch,grcov,watchexec-cli,cargo-tarpaulin,syft
# glibc < 2.27 or musl
- container: ubuntu:22.04 # glibc 2.35
# cargo-udeps depends on openssl 1.1
tool: cargo-hack,cargo-llvm-cov,cargo-minimal-versions,cargo-no-dev-deps,parse-changelog,cargo-valgrind,cargo-deny,cross,dprint,just,nextest,protoc,shellcheck,shfmt,wasm-pack,wasmtime,mdbook,mdbook-linkcheck,cargo-watch,grcov,watchexec-cli,cargo-tarpaulin,zola
- container: fedora:latest # glibc 2.36 (as of fedora 37)
# cargo-udeps depends on openssl 1.1
tool: cargo-hack,cargo-llvm-cov,cargo-minimal-versions,cargo-no-dev-deps,parse-changelog,cargo-valgrind,cargo-deny,cross,dprint,just,nextest,protoc,shellcheck,shfmt,wasm-pack,wasmtime,mdbook,mdbook-linkcheck,cargo-watch,grcov,watchexec-cli,cargo-tarpaulin,zola
- container: centos:7 # glibc 2.17
# protoc,valgrind,wasmtime,mdbook-linkcheck,cargo-watch,zola don't provide prebuilt binaries for musl or old glibc host.
tool: cargo-hack,cargo-llvm-cov,cargo-minimal-versions,cargo-no-dev-deps,parse-changelog,cargo-udeps,cargo-valgrind,cargo-deny,cross,dprint,just,nextest,shellcheck,shfmt,wasm-pack,mdbook,cargo-binstall,grcov,watchexec-cli,cargo-tarpaulin,syft
# cargo-udeps,protoc,valgrind,wasmtime,mdbook-linkcheck,cargo-watch,zola don't provide prebuilt binaries for musl or old glibc host.
tool: cargo-hack,cargo-llvm-cov,cargo-minimal-versions,cargo-no-dev-deps,parse-changelog,cargo-valgrind,cargo-deny,cross,dprint,just,nextest,shellcheck,shfmt,wasm-pack,mdbook,cargo-binstall,grcov,watchexec-cli,cargo-tarpaulin
- container: alpine:latest # musl 1.2.3 (as of alpine 3.17)
# protoc,valgrind,wasmtime,mdbook-linkcheck,cargo-watch,zola don't provide prebuilt binaries for musl host.
tool: cargo-hack,cargo-llvm-cov,cargo-minimal-versions,cargo-no-dev-deps,parse-changelog,cargo-udeps,cargo-valgrind,cargo-deny,cross,dprint,just,nextest,shellcheck,shfmt,wasm-pack,mdbook,cargo-binstall,grcov,watchexec-cli,cargo-tarpaulin,syft
# cargo-udeps,protoc,valgrind,wasmtime,mdbook-linkcheck,cargo-watch,zola don't provide prebuilt binaries for musl host.
tool: cargo-hack,cargo-llvm-cov,cargo-minimal-versions,cargo-no-dev-deps,parse-changelog,cargo-valgrind,cargo-deny,cross,dprint,just,nextest,shellcheck,shfmt,wasm-pack,mdbook,cargo-binstall,grcov,watchexec-cli,cargo-tarpaulin
runs-on: ubuntu-latest
timeout-minutes: 60
container: ${{ matrix.container }}
@@ -184,7 +180,7 @@ jobs:
- id: diff
run: 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
- uses: taiki-e/create-pull-request@v4
with:
title: Update manifest
body: |

View File

@@ -29,3 +29,4 @@ jobs:
title: $version
branch: 'main|v[0-9]+'
token: ${{ secrets.GITHUB_TOKEN }}
- run: ci/publish.sh

View File

@@ -10,156 +10,6 @@ Note: In this file, do not use the hard wrap in the middle of a sentence for com
## [Unreleased]
## [2.10.0] - 2023-06-10
- Support `syft`. ([#135](https://github.com/taiki-e/install-action/pull/135), thanks @FirelightFlagboy)
## [2.9.4] - 2023-06-08
- Update `parse-changelog@latest` to 0.5.4.
## [2.9.3] - 2023-06-05
- Update `cargo-udeps@latest` to 0.1.40.
## [2.9.2] - 2023-06-03
- Update `just@latest` to 1.14.0.
- Update `dprint@latest` to 0.37.1.
- Update `cargo-llvm-cov@latest` to 0.5.20.
## [2.9.1] - 2023-06-01
- Update `wasmtime@latest` to 9.0.3.
## [2.9.0] - 2023-05-29
- Update `mdbook@latest` to 0.4.30.
- Make cargo-binstall fallback more robust. ([#124](https://github.com/taiki-e/install-action/pull/124), thanks @NobodyXu)
## [2.8.8] - 2023-05-27
- Update `wasmtime@latest` to 9.0.2.
- Update `protoc@latest` to 3.23.2.
- Update `cargo-binstall@latest` to 0.23.1.
## [2.8.7] - 2023-05-23
- Update `wasmtime@latest` to 9.0.1.
## [2.8.6] - 2023-05-18
- Update `protoc@latest` to 3.23.1.
## [2.8.5] - 2023-05-16
- Update `cargo-nextest@latest` to 0.9.53.
## [2.8.4] - 2023-05-14
- Update `mdbook@latest` to 0.4.29.
## [2.8.3] - 2023-05-12
- Update `wasm-pack@latest` to 0.11.1.
## [2.8.2] - 2023-05-09
- Update `protoc@latest` to 3.23.0.
## [2.8.1] - 2023-05-06
- Update `protoc@latest` to 3.22.4.
- Update `dprint@latest` to 0.36.1.
- Update `cargo-udeps@latest` to 0.1.39.
- Update `cargo-nextest@latest` to 0.9.52.
- Support `cargo-udeps` on x86_64 Linux (musl) and aarch64 Linux/macOS/Windows.
## [2.8.0] - 2023-05-03
- Trim whitespace from tool names. ([#115](https://github.com/taiki-e/install-action/pull/115))
## [2.7.2] - 2023-04-28
- Update `cargo-llvm-cov@latest` to 0.5.19.
## [2.7.1] - 2023-04-28
- Update `wasmtime@latest` to 8.0.1.
## [2.7.0] - 2023-04-27
- Update `grcov@latest` to 0.8.18.
- Update `cargo-binstall@latest` to 0.23.0.
## [2.6.19] - 2023-04-25
- Update `cargo-llvm-cov@latest` to 0.5.18.
## [2.6.18] - 2023-04-21
- Update `cargo-llvm-cov@latest` to 0.5.17.
## [2.6.17] - 2023-04-20
- Update `wasmtime@latest` to 8.0.0.
## [2.6.16] - 2023-04-18
- Update `cargo-llvm-cov@latest` to 0.5.16.
## [2.6.15] - 2023-04-18
- Update `dprint@latest` to 0.36.0.
## [2.6.14] - 2023-04-16
- Update `cargo-minimal-versions@latest` to 0.1.12.
- Update `cargo-llvm-cov@latest` to 0.5.15.
## [2.6.13] - 2023-04-13
- Update `protoc@latest` to 3.22.3.
## [2.6.12] - 2023-04-12
- Update `cargo-deny@latest` to 0.13.9.
## [2.6.11] - 2023-04-11
- Update `dprint@latest` to 0.35.4.
## [2.6.10] - 2023-04-07
- Update `cargo-deny@latest` to 0.13.8.
## [2.6.9] - 2023-04-05
- Update `cargo-llvm-cov@latest` to 0.5.14.
## [2.6.8] - 2023-04-05
- Update `cargo-tarpaulin@latest` to 0.25.2.
## [2.6.7] - 2023-04-04
- Update `cargo-llvm-cov@latest` to 0.5.13.
## [2.6.6] - 2023-04-02
- Update `cargo-llvm-cov@latest` to 0.5.12.
## [2.6.5] - 2023-03-25
- Update `cargo-binstall@latest` to 0.22.0.
@@ -849,39 +699,7 @@ Note: This release is considered a breaking change because installing on version
Initial release
[Unreleased]: https://github.com/taiki-e/install-action/compare/v2.10.0...HEAD
[2.10.0]: https://github.com/taiki-e/install-action/compare/v2.9.4...v2.10.0
[2.9.4]: https://github.com/taiki-e/install-action/compare/v2.9.3...v2.9.4
[2.9.3]: https://github.com/taiki-e/install-action/compare/v2.9.2...v2.9.3
[2.9.2]: https://github.com/taiki-e/install-action/compare/v2.9.1...v2.9.2
[2.9.1]: https://github.com/taiki-e/install-action/compare/v2.9.0...v2.9.1
[2.9.0]: https://github.com/taiki-e/install-action/compare/v2.8.8...v2.9.0
[2.8.8]: https://github.com/taiki-e/install-action/compare/v2.8.7...v2.8.8
[2.8.7]: https://github.com/taiki-e/install-action/compare/v2.8.6...v2.8.7
[2.8.6]: https://github.com/taiki-e/install-action/compare/v2.8.5...v2.8.6
[2.8.5]: https://github.com/taiki-e/install-action/compare/v2.8.4...v2.8.5
[2.8.4]: https://github.com/taiki-e/install-action/compare/v2.8.3...v2.8.4
[2.8.3]: https://github.com/taiki-e/install-action/compare/v2.8.2...v2.8.3
[2.8.2]: https://github.com/taiki-e/install-action/compare/v2.8.1...v2.8.2
[2.8.1]: https://github.com/taiki-e/install-action/compare/v2.8.0...v2.8.1
[2.8.0]: https://github.com/taiki-e/install-action/compare/v2.7.2...v2.8.0
[2.7.2]: https://github.com/taiki-e/install-action/compare/v2.7.1...v2.7.2
[2.7.1]: https://github.com/taiki-e/install-action/compare/v2.7.0...v2.7.1
[2.7.0]: https://github.com/taiki-e/install-action/compare/v2.6.19...v2.7.0
[2.6.19]: https://github.com/taiki-e/install-action/compare/v2.6.18...v2.6.19
[2.6.18]: https://github.com/taiki-e/install-action/compare/v2.6.17...v2.6.18
[2.6.17]: https://github.com/taiki-e/install-action/compare/v2.6.16...v2.6.17
[2.6.16]: https://github.com/taiki-e/install-action/compare/v2.6.15...v2.6.16
[2.6.15]: https://github.com/taiki-e/install-action/compare/v2.6.14...v2.6.15
[2.6.14]: https://github.com/taiki-e/install-action/compare/v2.6.13...v2.6.14
[2.6.13]: https://github.com/taiki-e/install-action/compare/v2.6.12...v2.6.13
[2.6.12]: https://github.com/taiki-e/install-action/compare/v2.6.11...v2.6.12
[2.6.11]: https://github.com/taiki-e/install-action/compare/v2.6.10...v2.6.11
[2.6.10]: https://github.com/taiki-e/install-action/compare/v2.6.9...v2.6.10
[2.6.9]: https://github.com/taiki-e/install-action/compare/v2.6.8...v2.6.9
[2.6.8]: https://github.com/taiki-e/install-action/compare/v2.6.7...v2.6.8
[2.6.7]: https://github.com/taiki-e/install-action/compare/v2.6.6...v2.6.7
[2.6.6]: https://github.com/taiki-e/install-action/compare/v2.6.5...v2.6.6
[Unreleased]: https://github.com/taiki-e/install-action/compare/v2.6.5...HEAD
[2.6.5]: https://github.com/taiki-e/install-action/compare/v2.6.4...v2.6.5
[2.6.4]: https://github.com/taiki-e/install-action/compare/v2.6.3...v2.6.4
[2.6.3]: https://github.com/taiki-e/install-action/compare/v2.6.2...v2.6.3

View File

@@ -14,13 +14,34 @@ See JSON files in `tools/codegen/base` directory for examples of the manifest.
./tools/manifest.sh <tool>
```
> If you're having problem with github api rate limit, you can use your GITHUB_TOKEN to increase the rate limit.
> If you have `Github CLI` installed (the command `gh`), you can:
>
> ```shell
> GITHUB_TOKEN=$(gh auth status --show-token 2>&1 | sed -n 's/^.*Token: \(.*\)$/\1/p') ./tools/manifest.sh <tool>
> ```
3\. Add tool name to test matrix in `.github/workflows/ci.yml`.
4\. Add tool name to the table in ["Supported tools" section in `README.md`](https://github.com/taiki-e/install-action#supported-tools).
4\. Add tool name to table in "Supported tools" section in `README.md`.
## Release new version
Note: This is a guide for maintainers.
### Minor version vs patch version
Increase the patch version if only the following changes are included.
- Update the `@latest` version of the tool.
Rationale: Normally, tool versions are controlled by the `@<version>` syntax, which is explicitly separated from the versioning of the install-action itself.
Exception: If the major or minor version of the `cargo-binstall` is updated, the minor version should be increased because the behavior of the fallback may change slightly.
- Fix regressions or minor bugs.
Rationale: Semantic Versioning.
- Improve documentation or diagnostics.
Rationale: Semantic Versioning.
Increase the minor version otherwise.
### Release instructions
TODO: current release script assumes admin permissions

View File

@@ -9,7 +9,6 @@ GitHub Action for installing development tools (mainly from GitHub Releases).
- [Inputs](#inputs)
- [Example workflow](#example-workflow)
- [Supported tools](#supported-tools)
- [Add support for new tool](#add-support-for-new-tool)
- [Security](#security)
- [Compatibility](#compatibility)
- [Related Projects](#related-projects)
@@ -86,14 +85,14 @@ https://spdx.org/licenses
| [**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-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) |
| [**cargo-udeps**](https://github.com/est31/cargo-udeps) | `$CARGO_HOME/bin` | [GitHub Release](https://github.com/est31/cargo-udeps/releases) | Linux, macOS, Windows | [Apache-2.0 OR MIT](https://github.com/est31/cargo-udeps/blob/HEAD/LICENSE) |
| [**cargo-valgrind**](https://github.com/jfrimmel/cargo-valgrind) | `$CARGO_HOME/bin` | [GitHub Release](https://github.com/jfrimmel/cargo-valgrind/releases) | Linux, macOS, Windows | [MIT](https://github.com/jfrimmel/cargo-valgrind/blob/HEAD/LICENSE-MIT) or [Apache-2.0](https://github.com/jfrimmel/cargo-valgrind/blob/HEAD/LICENSE-APACHE) |
| [**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-udeps**](https://github.com/est31/cargo-udeps) | `$CARGO_HOME/bin` | [GitHub Release](https://github.com/est31/cargo-udeps/releases) | Linux, macOS, Windows | [Apache-2.0 OR MIT](https://github.com/est31/cargo-udeps/blob/master/LICENSE) |
| [**cargo-valgrind**](https://github.com/jfrimmel/cargo-valgrind) | `$CARGO_HOME/bin` | [GitHub Release](https://github.com/jfrimmel/cargo-valgrind/releases) | Linux, macOS, Windows | [MIT](https://github.com/jfrimmel/cargo-valgrind/blob/master/LICENSE-MIT) or [Apache-2.0](https://github.com/jfrimmel/cargo-valgrind/blob/master/LICENSE-APACHE) |
| [**cross**](https://github.com/cross-rs/cross) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/cross-rs/cross/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/cross-rs/cross/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/cross-rs/cross/blob/HEAD/LICENSE-MIT) |
| [**dprint**](https://github.com/dprint/dprint) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/dprint/dprint/releases) | Linux, macOS, Windows | [MIT](https://github.com/dprint/dprint/blob/HEAD/LICENSE) |
| [**grcov**](https://github.com/mozilla/grcov) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/mozilla/grcov/releases) | Linux, macOS, Windows | [MPL-2.0](https://github.com/mozilla/grcov/blob/HEAD/LICENSE-MPL-2.0) |
| [**grcov**](https://github.com/mozilla/grcov) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/mozilla/grcov/releases) | Linux, macOS, Windows | [MPL-2.0](https://github.com/mozilla/grcov/blob/master/LICENSE-MPL-2.0) |
| [**just**](https://github.com/casey/just) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/casey/just/releases) | Linux, macOS, Windows | [CC0-1.0](https://github.com/casey/just/blob/HEAD/LICENSE) |
| [**dprint**](https://github.com/dprint/dprint) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/dprint/dprint/releases) | Linux, macOS, Windows | [MIT](https://github.com/dprint/dprint/blob/HEAD/LICENSE) |
| [**mdbook-linkcheck**](https://github.com/Michael-F-Bryan/mdbook-linkcheck) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/Michael-F-Bryan/mdbook-linkcheck/releases) | Linux, macOS, Windows | [MIT](https://github.com/Michael-F-Bryan/mdbook-linkcheck/blob/HEAD/LICENSE) |
| [**mdbook**](https://github.com/rust-lang/mdBook) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/rust-lang/mdBook/releases) | Linux, macOS, Windows | [MPL-2.0](https://github.com/rust-lang/mdBook/blob/HEAD/LICENSE) |
| [**nextest**](https://github.com/nextest-rs/nextest) (alias: `cargo-nextest`) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/nextest-rs/nextest/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/nextest-rs/nextest/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/nextest-rs/nextest/blob/HEAD/LICENSE-MIT) |
@@ -101,21 +100,16 @@ https://spdx.org/licenses
| [**protoc**](https://github.com/protocolbuffers/protobuf) | `$HOME/.install-action/bin` | [GitHub Releases](https://github.com/protocolbuffers/protobuf/releases) | Linux, macOS, Windows | [BSD-3-Clause](https://github.com/protocolbuffers/protobuf/blob/HEAD/LICENSE) |
| [**shellcheck**](https://www.shellcheck.net) | `/usr/local/bin` | [GitHub Releases](https://github.com/koalaman/shellcheck/releases) | Linux, macOS, Windows | [GPL-3.0-or-later](https://github.com/koalaman/shellcheck/blob/HEAD/LICENSE) |
| [**shfmt**](https://github.com/mvdan/sh) | `/usr/local/bin` | [GitHub Releases](https://github.com/mvdan/sh/releases) | Linux, macOS, Windows | [BSD-3-Clause](https://github.com/mvdan/sh/blob/HEAD/LICENSE) |
| [**syft**](https://github.com/anchore/syft) | `/usr/local/bin` | [Github Releases](https://github.com/anchore/syft/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/anchore/syft/blob/main/LICENSE) |
| [**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) |
| [**zola**](https://github.com/getzola/zola) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/getzola/zola/releases) | Linux, macOS, Windows | [MIT](https://github.com/getzola/zola/blob/HEAD/LICENSE) |
| [**zola**](https://github.com/getzola/zola) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/getzola/zola/releases) | Linux, macOS, Windows | [MIT](https://github.com/getzola/zola/blob/master/LICENSE) |
If `$CARGO_HOME/bin` is not available, Rust-related binaries will be installed to `$HOME/.cargo/bin`.<br>
If `$HOME/.cargo/bin` is not available, Rust-related binaries will be installed to `/usr/local/bin`.<br>
If `/usr/local/bin` is not available, binaries will be installed to `$HOME/.install-action/bin`.<br>
**If a tool not included in the list above is specified, this action uses [cargo-binstall] as a fallback.**
### Add support for new tool
See the [development guide](DEVELOPMENT.md) for how to add support for new tool.
If a tool not included in the list above is specified, this action uses [cargo-binstall] as a fallback.
## Security

View File

@@ -1,9 +1,17 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: Apache-2.0 OR MIT
set -euxo pipefail
IFS=$'\n\t'
cd "$(dirname "$0")"/..
bail() {
echo >&2 "error: $*"
exit 1
}
if [[ -z "${CI:-}" ]]; then
bail "this script is intended to call from release workflow on CI"
fi
git config user.name "Taiki Endo"
git config user.email "te316e89@gmail.com"

74
ci/publish.sh Executable file
View File

@@ -0,0 +1,74 @@
#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n\t'
cd "$(dirname "$0")"/..
# shellcheck disable=SC2154
trap 's=$?; echo >&2 "$0: Error on line "${LINENO}": ${BASH_COMMAND}"; exit ${s}' ERR
bail() {
echo >&2 "error: $*"
exit 1
}
if [[ -z "${CI:-}" ]]; then
bail "this script is intended to call from release workflow on CI"
fi
ref="${GITHUB_REF:-}"
if [[ "${ref}" != "refs/tags/"* ]]; then
bail "tag ref should start with 'refs/tags/'"
fi
tag="${ref#refs/tags/}"
git config user.name "Taiki Endo"
git config user.email "te316e89@gmail.com"
version="${tag}"
version="${version#v}"
tools=()
for tool in tools/codegen/base/*.json; do
tools+=("$(basename "${tool%.*}")")
done
# Aliases
tools+=(nextest)
# Not manifest-base
tools+=(valgrind)
(
set -x
major_version_tag="v${version%%.*}"
git checkout -b "${major_version_tag}"
git push origin refs/heads/"${major_version_tag}"
if git --no-pager tag | grep -Eq "^${major_version_tag}$"; then
git tag -d "${major_version_tag}"
git push --delete origin refs/tags/"${major_version_tag}"
fi
git tag "${major_version_tag}"
git checkout main
git branch -d "${major_version_tag}"
)
for tool in "${tools[@]}"; do
(
set -x
git checkout -b "${tool}"
sed -i -e "s/required: true/required: false/g" action.yml
sed -i -e "s/# default: #publish:tool/default: ${tool}/g" action.yml
git add action.yml
git commit -m "${tool}"
git push origin -f refs/heads/"${tool}"
if git --no-pager tag | grep -Eq "^${tool}$"; then
git tag -d "${tool}"
git push --delete origin refs/tags/"${tool}"
fi
git tag "${tool}"
git checkout main
git branch -D "${tool}"
)
done
set -x
git push origin --tags

12
main.sh
View File

@@ -1,5 +1,4 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: Apache-2.0 OR MIT
set -euo pipefail
IFS=$'\n\t'
@@ -324,10 +323,7 @@ manifest_dir="$(dirname "$0")/manifests"
tool="${INPUT_TOOL:-}"
tools=()
if [[ -n "${tool}" ]]; then
while read -rd,; do
t="${REPLY# *}"
tools+=("${t%* }")
done <<<"${tool},"
while read -rd,; do tools+=("${REPLY}"); done <<<"${tool},"
fi
if [[ ${#tools[@]} -eq 0 ]]; then
warn "no tool specified; this could be caused by a dependabot bug where @<tool_name> tags on this action are replaced by @<version> tags"
@@ -398,7 +394,7 @@ case "$(uname -m)" in
# https://github.com/cross-rs/cross/pull/1018
# Does it seem only armv7l is supported?
# https://github.com/actions/runner/blob/caec043085990710070108f375cd0aeab45e1017/src/Misc/externals.sh#L174
bail "32-bit ARM runner is not supported yet by this action; if you need support for this platform, please submit an issue at <https://github.com/taiki-e/install-action>"
bail "32-bit ARM runner is not supported yet by this action"
;;
# GitHub Actions Runner supports Linux (x86_64, aarch64, arm), Windows (x86_64, aarch64),
# and macOS (x86_64, aarch64).
@@ -442,7 +438,7 @@ for tool in "${tools[@]}"; do
if [[ ! "${version}" =~ ^([1-9][0-9]*(\.[0-9]+(\.[0-9]+)?)?|0\.[1-9][0-9]*(\.[0-9]+)?|^0\.0\.[0-9]+)(-[0-9A-Za-z\.-]+)?(\+[0-9A-Za-z\.-]+)?$|^latest$ ]]; then
bail "install-action does not support semver operators: '${version}'"
fi
bail "install-action v2 does not support semver pre-release and build-metadata: '${version}'; if you need these supports again, please submit an issue at <https://github.com/taiki-e/install-action>"
bail "install-action v2 does not support semver pre-release and build-metadata; please submit an issue if you need these supports again: '${version}'"
fi
else
version="latest"
@@ -584,5 +580,5 @@ if [[ ${#unsupported_tools[@]} -gt 0 ]]; then
# By default, cargo-binstall enforce downloads over secure transports only.
# As a result, http will be disabled, and it will also set
# min tls version to be 1.2
cargo binstall --force --no-confirm --locked "${unsupported_tools[@]}"
cargo binstall --force --no-confirm "${unsupported_tools[@]}"
fi

View File

@@ -20,26 +20,26 @@
}
},
"latest": {
"version": "0.23.1"
"version": "0.22.0"
},
"0.23.1": {
"0.22.0": {
"x86_64_linux_musl": {
"checksum": "dea75e6896fc183af8f0bd6490196d7fcf1a17946c25c558ec87be906a0e64ef"
"checksum": "2238080e5e2c4eae5993de478341af6348e10fd9763a95a77e654e6f28268266"
},
"x86_64_macos": {
"checksum": "1e03794b4380b56a3b3fb5dd47f01aea27a83672ef0fff84413d672d77cbcfaa"
"checksum": "3e87999ab63edf3cdd71a3839bd85661c5dea5d763718668b8b3b35b1ac5dbe0"
},
"x86_64_windows": {
"checksum": "62e09ac2ab3a36d8d44790dc4679b32d8fcd50951bceb27239cdec23b43b2a8e"
"checksum": "f656718d44ca4a09ff2231970edc7878a1aa33b6e15790a4884a758144008e27"
},
"aarch64_linux_musl": {
"checksum": "a54749e2d7761c0e4e04858d58dd08a98bd71318a9dcb3fd950ef732176f5195"
"checksum": "280fc36a0f565d76636aa3aff570c97d1e6fbd6aa08ef315af2cb968054e1d9b"
},
"aarch64_macos": {
"checksum": "10fffaff985822a67957ef3798407ce0f7282db3fc80a6ae297cdfe9ebb00869"
"checksum": "abb87cb2ef23b552c62dc463777debb31be4a817ef9366509abb245d346e4410"
},
"aarch64_windows": {
"checksum": "b1412448d417d923ee64bc7c961a87b7af387dc97291e3e4f818dc225b48d245"
"checksum": "50108bd891a0b6a0044f71d11e09e886a3eec44f4163d44f79a3eed049a484c2"
}
}
}

View File

@@ -18,38 +18,10 @@
}
},
"latest": {
"version": "0.13.9"
"version": "0.13.7"
},
"0.13": {
"version": "0.13.9"
},
"0.13.9": {
"x86_64_linux_musl": {
"checksum": "77f6b3feab12afc82638cd4c6197c983d249d1afa4180a6b9c933efbf8bff427"
},
"x86_64_macos": {
"checksum": "7b790f7e15dc6bb79dc0a737310f62fc7a4653749e40ec4fa7419ee627a014ed"
},
"x86_64_windows": {
"checksum": "6f6a69d1dbabf98a1d826dd2dbc0bbfd378336ec891b3e7fd8c570744ea6efa3"
},
"aarch64_macos": {
"checksum": "7d4cc49030262296c96076519deefc740e70fbc338ccd9179d4bc9d3be373512"
}
},
"0.13.8": {
"x86_64_linux_musl": {
"checksum": "95b2b7eacc1e93b918969e8d9f25dad49ce079511401308b548f5fceeafeb896"
},
"x86_64_macos": {
"checksum": "950f36ddbb08c0686305f97196b450a99efd3bbea3553746b4f1b9942a5ab2b7"
},
"x86_64_windows": {
"checksum": "5cae60df4ab5a9c949a59f56cf101562b7a962fb2750b5e6aeb47e0d8799e962"
},
"aarch64_macos": {
"checksum": "6eeedd852be234c5b27359e7ce6c7da665511afb5d643c7ce8db660e08ca7bc1"
}
"version": "0.13.7"
},
"0.13.7": {
"x86_64_linux_musl": {

View File

@@ -17,163 +17,10 @@
}
},
"latest": {
"version": "0.5.20"
"version": "0.5.11"
},
"0.5": {
"version": "0.5.20"
},
"0.5.20": {
"x86_64_linux_musl": {
"checksum": "688aefd7b53917d29b3fa8d81cb449e98138c6b9a6c768eff412f9a523fd3e62"
},
"x86_64_macos": {
"checksum": "69eb20beb8a2d2f455bd8be486f92718645fa94c726751698c125f92d11bbc54"
},
"x86_64_windows": {
"checksum": "e69502d1fa9003cd50d003142afc8398a84442b630cb2279b6291dde65d66ac3"
},
"aarch64_linux_musl": {
"checksum": "dee687b786492b3402dabda190e9444f4e4f5e412d0e1ce7d541dd1d5d519243"
},
"aarch64_macos": {
"checksum": "5ff99c8b17dafc24471d0e498cd68f8c858a6dc613535f7ffa738a12e11b18cf"
}
},
"0.5.19": {
"x86_64_linux_musl": {
"checksum": "79129f4adf9b9dd239a7facd041630a6b29c123a3e0ccabfbce44c71d391fc17"
},
"x86_64_macos": {
"checksum": "ab5400be7319b519350e535a71e210197c2597d416beca2c839676f2a28804ae"
},
"x86_64_windows": {
"checksum": "88f7dc8155d9166f512e1ca2d3dc986a987c7bb145f43836dee0246eaea1db9e"
},
"aarch64_linux_musl": {
"checksum": "6e5f19e65646b2625bb820d00065081d62bd19f6d483054b1b43a152678f13a6"
},
"aarch64_macos": {
"checksum": "fb8aeeb7af828ab0b49462cee13d60f1d7c69d55226ec0fc11c3082004a08513"
}
},
"0.5.18": {
"x86_64_linux_musl": {
"checksum": "eb5db22d1c4e67913d983145fd8473edad8f84b60b08398b634b275ccf1ae324"
},
"x86_64_macos": {
"checksum": "05621b99740a9499ee5336cec4fff63ea69aa5a731e29574b71d7c54baa849f4"
},
"x86_64_windows": {
"checksum": "d0330a9c9a03c8fa49e755d6ae5a62c4a6faabaca9cecb343f4b3de8ed2b6e8e"
},
"aarch64_linux_musl": {
"checksum": "c63c77048047aa14f43bb5d266e5eceacc510c551fb17c8968b2f8887516bee5"
},
"aarch64_macos": {
"checksum": "d766e832e4b01808b0359a0241c14141be010ec2b0e79e19d5e05c0746969c8e"
}
},
"0.5.17": {
"x86_64_linux_musl": {
"checksum": "20b563871c1ac1a83ae5683dc97fa0a1bf15ca16407b3daf751dbf652ecbea95"
},
"x86_64_macos": {
"checksum": "1f089884ad5c367015971166b8f752717eb70980241ce0125da86f4044547939"
},
"x86_64_windows": {
"checksum": "94b7122c70a53072a6d4c51040cf0093207d40151a21a28b12040e8a21bd925f"
},
"aarch64_linux_musl": {
"checksum": "83ce55e7df193d86e491e5f911a63e4123e9fe182bfd89eed273d3753208190d"
},
"aarch64_macos": {
"checksum": "cb5d1f1c700a7e1069898714e82005417a07d5455ca93fc3278cd0e5340338e5"
}
},
"0.5.16": {
"x86_64_linux_musl": {
"checksum": "d7759f9d465907f4a8fa24f10bfa0817863f62c412ffaae7b8dadab370201f9b"
},
"x86_64_macos": {
"checksum": "67f720d403569e7fa69ed2ed74c90d06658dc713c0f1f60088f12af267db5c6b"
},
"x86_64_windows": {
"checksum": "d19af20d0e4688f2557024fe84c6eeaddf3e7abcb9fb45304a9d042dd155d1bd"
},
"aarch64_linux_musl": {
"checksum": "f1055016db604f346d351d16fdb3ae43d7ab7ebc31e4463b836daa990b17c78f"
},
"aarch64_macos": {
"checksum": "db2780cf7af86b50ae011f49c4a91f2da58115ff47835a96dca134de2bd60c7e"
}
},
"0.5.15": {
"x86_64_linux_musl": {
"checksum": "407b0ddf85e6a39dfe5379761fc1074c7e79f7b518c732072bda1e4fc854d0fb"
},
"x86_64_macos": {
"checksum": "71c6d3010f8d08ab45b23e3459a751d4f8afeaa96f1537815f3cc9f96c4cbef6"
},
"x86_64_windows": {
"checksum": "8de32cdcb14a4ca1fabe5dae76761bfa73890fa070e935a4628f0ca8ac050759"
},
"aarch64_linux_musl": {
"checksum": "93cae63fb000fbe327a0f5e8caf6507f9d6c9fdf6775c248968ad977411d8f51"
},
"aarch64_macos": {
"checksum": "6286e6e73bf505c67b23d47591f6f05e5f5feba809442a6a66d1b7ec3fc8a93b"
}
},
"0.5.14": {
"x86_64_linux_musl": {
"checksum": "688e56f78611f7866842f5b86e27672225b28c8a536c75d6c0a3fd67082474ea"
},
"x86_64_macos": {
"checksum": "8d4a93175d5ba0710a46ccab007444cea4c53406b4c0b6c6ae6916d1192ac333"
},
"x86_64_windows": {
"checksum": "5773b119db63bbbcb975ecd3e0c71ae548506d85312248d6d3e94758cf88bba6"
},
"aarch64_linux_musl": {
"checksum": "61b22ff22d95ca6af9c668c780fe2a23a519a44d1fab3de01adadfbb36cea54d"
},
"aarch64_macos": {
"checksum": "f98c5d4bc2f7b67328a82028bb78f0a67436ae81a4e2a7911fd4f18f572c434b"
}
},
"0.5.13": {
"x86_64_linux_musl": {
"checksum": "e57875cba95527149d15d7f9c66b9d624d8154040f19aedbca96e2c6b7687ffb"
},
"x86_64_macos": {
"checksum": "f694bcaf714f352b76182b0aeec9626ca5280ceca275f949caa762a561030350"
},
"x86_64_windows": {
"checksum": "642046071c3c221748a3a6a08b5c7d71d7644928d4d7707fa30b38da8357f074"
},
"aarch64_linux_musl": {
"checksum": "d9173b2aae99f29276cd7d84ffdea9eb29f8831acd3f9d9de1c2af4366d917df"
},
"aarch64_macos": {
"checksum": "b9bb4d03065c4d7e52ed4148d71d36a4c890dee37108addfa9ba19771e46fa1d"
}
},
"0.5.12": {
"x86_64_linux_musl": {
"checksum": "998b1d9e630295459743fe7051a7e3d04e82836456171493eb5983dde710b07e"
},
"x86_64_macos": {
"checksum": "77faedad91c300b51d2d40040a6c61903a555da319047983ec56c81598cbea9b"
},
"x86_64_windows": {
"checksum": "5d0d3df674a431272f75e77dd2c07fdbc5ee83ade11c0839bbd0fdae35480351"
},
"aarch64_linux_musl": {
"checksum": "87c54166055d2d486620ceb27440442d34d71b364fdd6f6da57a210ae5f75e33"
},
"aarch64_macos": {
"checksum": "05c8f8e2210a3218b167dce33477785a0bc0c718fac7b15d2f4a428791234f03"
}
"version": "0.5.11"
},
"0.5.11": {
"x86_64_linux_musl": {

View File

@@ -20,30 +20,10 @@
}
},
"latest": {
"version": "0.1.12"
"version": "0.1.11"
},
"0.1": {
"version": "0.1.12"
},
"0.1.12": {
"x86_64_linux_musl": {
"checksum": "14d33bd273110fc3a4ebc96eab922442e2663f1c8d8da746d66a917fa2957297"
},
"x86_64_macos": {
"checksum": "d4a71d3e58f0d0a998f35a034120e831498a36601a02b940c7999030decb43be"
},
"x86_64_windows": {
"checksum": "ab17ab06b5f211611e88d17e4b28ff19076c5b9a6d351fd7f0d20a071f3a1d03"
},
"aarch64_linux_musl": {
"checksum": "f7aa0d7909f9b828446c9d5f2a0db0ff27df7c167f110609d665b4d70d8a1a8b"
},
"aarch64_macos": {
"checksum": "1f23174e8a4522799999bac4564d780b7d4893d9f5aa2472b71782e826e3acbd"
},
"aarch64_windows": {
"checksum": "62267707abf30cacd086bfa035de527d5227682288c9e2176e03de925bae9dd3"
}
"version": "0.1.11"
},
"0.1.11": {
"x86_64_linux_musl": {

View File

@@ -17,44 +17,10 @@
}
},
"latest": {
"version": "0.9.53"
"version": "0.9.51"
},
"0.9": {
"version": "0.9.53"
},
"0.9.53": {
"x86_64_linux_gnu": {
"checksum": "b07def6a5e5521481eb5853e5f17650be406ce8c57ce917a90d2866c788e5967"
},
"x86_64_linux_musl": {
"checksum": "432af91cae859413b79bd50baea327badffe7d488ce4ffd5d301bd84b007b889"
},
"x86_64_macos": {
"checksum": "ccab0a046538cb86a93ee6f05a1d9ceace7878fc7ca39392b681b01dc27fc54e"
},
"x86_64_windows": {
"checksum": "49605a5f5f3275d1e8a2fdfaa0a45a52df03cfd791ad5b1a093b196df3a408d5"
},
"aarch64_linux_gnu": {
"checksum": "54e47dc3fcf7eead6307ac06a9e02ce9a0fe3a156a53b062b63f823cd2765bfd"
}
},
"0.9.52": {
"x86_64_linux_gnu": {
"checksum": "55bf039be0d14e4266eaacd765a292294c8627787dcb31d503690a9c14ad21fc"
},
"x86_64_linux_musl": {
"checksum": "7e6b14b379b8315f81d1e2542e6f6de9fffda6ca9c95054ebc0560f52a27038f"
},
"x86_64_macos": {
"checksum": "d4638b6ec6e8e8d8f3cf4ff8f039665f0a1d4ff2cf7ef6467bdb243e654c9911"
},
"x86_64_windows": {
"checksum": "af5c3227e870b9f1719d8993d09dc3f2871c4e34b06d8711679129c370a0fa0d"
},
"aarch64_linux_gnu": {
"checksum": "ee7d4f5264c5be5177b3a0bb8fb0bd2100592a6ea29bcbef1d98b782c09e5dc0"
}
"version": "0.9.51"
},
"0.9.51": {
"x86_64_linux_gnu": {

View File

@@ -17,27 +17,10 @@
}
},
"latest": {
"version": "0.25.2"
"version": "0.25.1"
},
"0.25": {
"version": "0.25.2"
},
"0.25.2": {
"x86_64_linux_musl": {
"checksum": "89f0f28baa818f445336da35c204206544b5e1160892ca0d5f50fe034abff771"
},
"x86_64_macos": {
"checksum": "fac48ad01a87435b35a0d04dbb5452929c72e3e28633ab0fb5740a50d113bf64"
},
"x86_64_windows": {
"checksum": "36cf0c7fcf1c1d589720e7409673535e46d734f9abf89ff179c964dbf24f56cc"
},
"aarch64_linux_musl": {
"checksum": "2600c6a6e8f6cdaf374fa492284ade31c4582f40f9c5ede1f726b743e144f9b6"
},
"aarch64_macos": {
"checksum": "3f615f38c18c32d10fdf85b73e5c5ee05c0308566d00d0b117c10175f659c504"
}
"version": "0.25.1"
},
"0.25.1": {
"x86_64_linux_musl": {

View File

@@ -4,10 +4,6 @@
"url": "https://github.com/est31/cargo-udeps/releases/download/v${version}/cargo-udeps-v${version}-x86_64-unknown-linux-gnu.tar.gz",
"bin": "./cargo-udeps-v${version}-x86_64-unknown-linux-gnu/cargo-udeps"
},
"x86_64_linux_musl": {
"url": "https://github.com/est31/cargo-udeps/releases/download/v${version}/cargo-udeps-v${version}-x86_64-unknown-linux-musl.tar.gz",
"bin": "./cargo-udeps-v${version}-x86_64-unknown-linux-musl/cargo-udeps"
},
"x86_64_macos": {
"url": "https://github.com/est31/cargo-udeps/releases/download/v${version}/cargo-udeps-v${version}-x86_64-apple-darwin.tar.gz",
"bin": "./cargo-udeps-v${version}-x86_64-apple-darwin/cargo-udeps"
@@ -15,76 +11,13 @@
"x86_64_windows": {
"url": "https://github.com/est31/cargo-udeps/releases/download/v${version}/cargo-udeps-v${version}-x86_64-pc-windows-msvc.zip",
"bin": "./cargo-udeps-v${version}-x86_64-pc-windows-msvc/cargo-udeps.exe"
},
"aarch64_linux_musl": {
"url": "https://github.com/est31/cargo-udeps/releases/download/v${version}/cargo-udeps-v${version}-aarch64-unknown-linux-musl.tar.gz",
"bin": "./cargo-udeps-v${version}-aarch64-unknown-linux-musl/cargo-udeps"
},
"aarch64_macos": {
"url": "https://github.com/est31/cargo-udeps/releases/download/v${version}/cargo-udeps-v${version}-aarch64-apple-darwin.tar.gz",
"bin": "./cargo-udeps-v${version}-aarch64-apple-darwin/cargo-udeps"
},
"aarch64_windows": {
"url": "https://github.com/est31/cargo-udeps/releases/download/v${version}/cargo-udeps-v${version}-aarch64-pc-windows-msvc.zip",
"bin": "./cargo-udeps-v${version}-aarch64-pc-windows-msvc/cargo-udeps.exe"
}
},
"latest": {
"version": "0.1.40"
"version": "0.1.35"
},
"0.1": {
"version": "0.1.40"
},
"0.1.40": {
"x86_64_linux_musl": {
"checksum": "6bb8bc63de21e47afb44e9b1fcc2f5444120a0658bfe7b2b64a0eb575667ee59"
},
"x86_64_macos": {
"checksum": "39ddc8f18f51d429f0a5adc0bdaa416532ba70e7dfd3d5200c5fcf8f981ea656"
},
"x86_64_windows": {
"checksum": "d532011810db834c7a3dfc580a6754a0204ffd146e0b29a62c508f6d89544d9f"
},
"aarch64_linux_musl": {
"checksum": "cebdbfee26548375c3f2000b6fae46ba80bff7cbfa33c8919525e3923b004f1e"
},
"aarch64_macos": {
"checksum": "6a022039c59cf273b9764bd74e991f423e03e80ddd0eaa25648207b622ab3547"
},
"aarch64_windows": {
"checksum": "6b29f3a9b0b710d9f9a2544f7bd101997845eff37836fa50edaa92fa3e5a6ad7"
}
},
"0.1.39": {
"x86_64_linux_musl": {
"checksum": "6476cf5711a150c53b563ecb1680b45365c86b054079b483333a961e14dd2c8a"
},
"x86_64_macos": {
"checksum": "c93e5e03c64ac351ec69a62d22c119e8b2f612fde5bc7938aade549bc38f4d49"
},
"x86_64_windows": {
"checksum": "02e5ce690d027a28e323e753ba03f4ce164bd106d98afe437871778f1b166c8f"
},
"aarch64_linux_musl": {
"checksum": "f5de7ae1fb82ea797be27a56a0cfe80d2724a4ae4d380dd49f1d5ac221f45f4a"
},
"aarch64_macos": {
"checksum": "d605026264208372def2a3d62498070b02cd3e10fc74ffc7448e8b626fc7fd90"
},
"aarch64_windows": {
"checksum": "dc026ed1fe5ba3147eda788df31c9da660942b959c3f6b1441752f0f886aef53"
}
},
"0.1.38": {
"x86_64_linux_gnu": {
"checksum": "5993f873ae46a94237b8e9be7bf990f9da165fc516b1ffa17ec680a0f52d07c3"
},
"x86_64_macos": {
"checksum": "612dbbef16edc916d4755616c72d70c2d0db46d7f3426423f5dfb32703dc4baa"
},
"x86_64_windows": {
"checksum": "df7bcf14a531466b219829880b6204e014c0f9462fb8343ed58e34400ee33fb6"
}
"version": "0.1.35"
},
"0.1.35": {
"x86_64_linux_gnu": {

95
manifests/dprint.json generated
View File

@@ -20,101 +20,10 @@
}
},
"latest": {
"version": "0.37.1"
},
"0.37": {
"version": "0.37.1"
},
"0.37.1": {
"x86_64_linux_musl": {
"checksum": "a8a824eed75f1030c721a7e91ae79cbd5f48f8c19470d92ec5fd0dff2715add6"
},
"x86_64_macos": {
"checksum": "1de7aea5ead649d97c19814d856fab616965177cd77cccc998f4953aa3d8c7c4"
},
"x86_64_windows": {
"checksum": "7f25e3cd03aeee23341174f50ceff7d09266d991298b44353883a98cb1b8f67e"
},
"aarch64_linux_gnu": {
"checksum": "17d108c5b27df6233fa63c4f78b8b67c040cb3325a7372c9428da62f09ed8f61"
},
"aarch64_macos": {
"checksum": "a2c5c7a61ae4ca51140779b1bcc2766d8fe0fad0589828752b29b172f20c083c"
}
},
"0.37.0": {
"x86_64_linux_musl": {
"checksum": "714abf53b00f536bbd8ef1abc88f21fe4172952d39ea87bc5d139f8cbba28be1"
},
"x86_64_macos": {
"checksum": "b50c4c812eaee6b9797d441f41961cbfbf9d040a6dbe86e1deb560b290ed28b7"
},
"x86_64_windows": {
"checksum": "c0fe6b6924d493fbea6bae983a5e93219f328919d616a19235161bd31be05dcc"
},
"aarch64_linux_gnu": {
"checksum": "0c77ecf2e889c37b823f0dc856f49a657dc09b9912a586fca267e09f378eb747"
},
"aarch64_macos": {
"checksum": "6a23f96288d6733de1cff7d8349dda73df1bcf24a963fead5551059de7f1e6d9"
}
},
"0.36": {
"version": "0.36.1"
},
"0.36.1": {
"x86_64_linux_musl": {
"checksum": "da2597babb5948f3eb03939d9d96916db3e164b5c4f4dcf82303ba71356a8181"
},
"x86_64_macos": {
"checksum": "b5bfb20def399efdf57c4a895db5b0b31d900a7932ad713f1bd1f4bf9ff723f8"
},
"x86_64_windows": {
"checksum": "8b86ab1663202c434e0062e0d4d48de453f5938b1aaa8f7f5803a1788f3362b3"
},
"aarch64_linux_gnu": {
"checksum": "6175f249472c1dcedd8edf4a838b3424fbbdfd130bc7871b1dfb2bd5cd3a0bdc"
},
"aarch64_macos": {
"checksum": "0dc3cbd57a0acce2234505b917020a7e65e93156707211e68b18cf8ca41e5633"
}
},
"0.36.0": {
"x86_64_linux_musl": {
"checksum": "fd5dfb6f63389413984166c05754274d2ac9685f2a54e80619b016d7f527ea17"
},
"x86_64_macos": {
"checksum": "c55f6410fb879e2fad53ee9599172c40ee9446c5e69c04abc123b3d8346e63e2"
},
"x86_64_windows": {
"checksum": "beb17dc24c4e847334f7b4d06400e4de5d7931827f64ea43c1eb2c08f3cb9410"
},
"aarch64_linux_gnu": {
"checksum": "eda55e333246c6c22dcf624f1e8d38fa154ca460e705dd3f819449ba369fef5d"
},
"aarch64_macos": {
"checksum": "9220f02afcf6c016156695d9cdf9914e47bab8e8a29678d39f27387080940be7"
}
"version": "0.35.3"
},
"0.35": {
"version": "0.35.4"
},
"0.35.4": {
"x86_64_linux_musl": {
"checksum": "a061268da99878970993d988b42de6324aea4cdce437fc1ca46ec51add4162dd"
},
"x86_64_macos": {
"checksum": "179234c542ffc1f26e2dffc62884809d1fd0e781b49f95b938410b1b6450c20c"
},
"x86_64_windows": {
"checksum": "50ac0366c5c20ace37fa2bef11f8826a5f68c1a28412b7751d89e38d7ce6c709"
},
"aarch64_linux_gnu": {
"checksum": "1a810a4c28934b6e281686ae53fe0e1eba973caec245df8004d4452ffc61d306"
},
"aarch64_macos": {
"checksum": "be2a5b698a0a4837a76a7626288a16e1c1f4153463f630845f9def43057f79e2"
}
"version": "0.35.3"
},
"0.35.3": {
"x86_64_linux_musl": {

55
manifests/grcov.json generated
View File

@@ -17,61 +17,10 @@
}
},
"latest": {
"version": "0.8.18"
"version": "0.8.13"
},
"0.8": {
"version": "0.8.18"
},
"0.8.18": {
"x86_64_linux_musl": {
"checksum": "43b1b44a79b2fec04a4057ccaf199a1b015e02200d44c8c1a4eff4f2b2edfa87"
},
"x86_64_macos": {
"checksum": "b5fccffcde800c1bbaec94229b80fc678ad10420d9769b25a447f1c7c5bec573"
},
"x86_64_windows": {
"checksum": "1ae5759da07ffef41e5b2f9930a70e312c5e4bf8a64fe3a67b05c095601ad879"
},
"aarch64_linux_musl": {
"checksum": "272a869894d321554b8959ea8d9f90277dee8fe79ebc6da5349d047fccf86b36"
},
"aarch64_macos": {
"checksum": "a4b21dc5cc6ecd0ae0cf8016787b1d1b3e59a37d81d685bde45025f98a9a0ca2"
}
},
"0.8.16": {
"x86_64_linux_musl": {
"checksum": "c414d6c72c693c103a99ac33eb759fe870c2ebc90486853ce2d72e94f0392853"
},
"x86_64_macos": {
"checksum": "9b6725d2087a0f3e6b65395c2ce5e189e4d54b26b9d28a6a01ad878df56bd29a"
},
"x86_64_windows": {
"checksum": "e4e77816f6ce8c6a09b03f7bf853fd788a084e868ae23cd1e297831b388ce84c"
},
"aarch64_linux_musl": {
"checksum": "4f219438e490665c117d49f23ddd41990bbb423e89e03b59c0e3356df2a47196"
},
"aarch64_macos": {
"checksum": "5323fafa4714753eefcbed052971914dcc58cd9f3a4dfc53e5756518acba47ff"
}
},
"0.8.15": {
"x86_64_linux_musl": {
"checksum": "b4e369090a105aa264c287c1ced52d7cc04ec964179bd8affe05bcb762e75ea4"
},
"x86_64_macos": {
"checksum": "5f4dded36e2a7258f938fa9e6fdde9c887bbde9ba226dca46701a1bcfca1ab83"
},
"x86_64_windows": {
"checksum": "35d9add293fe2a573023dfc1a7c6fe8005ab52dea3f96805f80696851a299e7f"
},
"aarch64_linux_musl": {
"checksum": "6dca525df8411f456833cfe244eb657c523960140b745fa046aa22909da5d462"
},
"aarch64_macos": {
"checksum": "0ef477a66f7f74ce5810327923a1c6b73d9924d5dfb6dc2ba8c927cd2ceb039d"
}
"version": "0.8.13"
},
"0.8.13": {
"x86_64_linux_musl": {

24
manifests/just.json generated
View File

@@ -17,30 +17,10 @@
}
},
"latest": {
"version": "1.14.0"
"version": "1.13.0"
},
"1": {
"version": "1.14.0"
},
"1.14": {
"version": "1.14.0"
},
"1.14.0": {
"x86_64_linux_musl": {
"checksum": "19848d0282e95f30188305b1bbd5a087793e5c6f27f5ac98207ab256027183df"
},
"x86_64_macos": {
"checksum": "ca4a787f353678d46645f060d96dc4cf8777c16d2a7f064f1aac6e284b92a64e"
},
"x86_64_windows": {
"checksum": "f718211c83e73fe2535c924e8179e9c2f70cb8d23f8039ace746670d38e3c898"
},
"aarch64_linux_musl": {
"checksum": "b3d306e5978dd239bbd7803a697006aca5c7fa1d61efccaefae134f792b9e1cb"
},
"aarch64_macos": {
"checksum": "a77944cab60285ea0cf05ee5a3ad9ff4bea313a512a4a36fa5238e77cc760bc2"
}
"version": "1.13.0"
},
"1.13": {
"version": "1.13.0"

32
manifests/mdbook.json generated
View File

@@ -17,38 +17,10 @@
}
},
"latest": {
"version": "0.4.30"
"version": "0.4.28"
},
"0.4": {
"version": "0.4.30"
},
"0.4.30": {
"x86_64_linux_musl": {
"checksum": "c911f8e5b501707a6b84a5b7162f3c6543f580e5261034d23d2843319da12bb0"
},
"x86_64_macos": {
"checksum": "02c80613f57c9d421adc4c60286c680c1e8f75a2d7d0ab4b7837819175eb967a"
},
"x86_64_windows": {
"checksum": "50c1adcabb37e291b9689b76898e91bf98428e5d5335dd3724f7c223f7a9ebb1"
},
"aarch64_linux_musl": {
"checksum": "475fc2ad49d909e8a13a8055bd9a69984e45eb70c1851f8dcf15dbf2b541815c"
}
},
"0.4.29": {
"x86_64_linux_musl": {
"checksum": "e46da842fc1cba24efbf0028ef372435cfe2b5a55b87b287e698ae87d6a9e44c"
},
"x86_64_macos": {
"checksum": "7424c8206cfe07e24928bf606e7fb2c386d22db7d1f0058734fa313b58879c37"
},
"x86_64_windows": {
"checksum": "ff2b491b41ecd65350137278e72f8ef10c161374cd47c474fc2a196c37f5e03e"
},
"aarch64_linux_musl": {
"checksum": "f89b5937131b5f826330d7ff542d878fe8689f037bf10b1595bfabc390b14da1"
}
"version": "0.4.28"
},
"0.4.28": {
"x86_64_linux_musl": {

View File

@@ -23,30 +23,10 @@
}
},
"latest": {
"version": "0.5.4"
"version": "0.5.3"
},
"0.5": {
"version": "0.5.4"
},
"0.5.4": {
"x86_64_linux_musl": {
"checksum": "b2a430ebd0d23a3608258446d9f93162ca324fd2ca691ca3baa11625c9d7fec3"
},
"x86_64_macos": {
"checksum": "4476f9ce9de07ddba76f77e6260e3cbece3801654882c8161694d742f8f01a59"
},
"x86_64_windows": {
"checksum": "6cd753b60b3385e2fd3aef79bc9a6c954f01737e2380bdc06b2c55ef9d4b8c79"
},
"aarch64_linux_musl": {
"checksum": "73f85fdda5937ac3ee0fd3a4385998cc6a640736b3e73923b0afd061abb575be"
},
"aarch64_macos": {
"checksum": "164936f970d8ab870aa3355411db736994dbb86019630bf2818d0958d30768b5"
},
"aarch64_windows": {
"checksum": "b7c1c92c83fce15746c1d289fbf14b31b3f43a043e28b25638ae8ed7b1005ea0"
}
"version": "0.5.3"
},
"0.5.3": {
"x86_64_linux_musl": {

119
manifests/protoc.json generated
View File

@@ -1,126 +1,13 @@
{
"template": null,
"latest": {
"version": "3.23.2"
"version": "3.22.2"
},
"3": {
"version": "3.23.2"
},
"3.23": {
"version": "3.23.2"
},
"3.23.2": {
"x86_64_linux_gnu": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v23.2/protoc-23.2-linux-x86_64.zip",
"checksum": "179a759581bf4b32cc5edae4ffce6b8ee16ba4f4ab99ad3a309c31113f98d472"
},
"x86_64_macos": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v23.2/protoc-23.2-osx-x86_64.zip",
"checksum": "0c19eb51f450687557dd61b9859ae898f52143c39372e8cb6f0b648d5423e24a"
},
"x86_64_windows": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v23.2/protoc-23.2-win64.zip",
"checksum": "ca92eb9ca61ada5410211a9f8be7f0a5118f490e402c821ec1f61bb12b132c36"
},
"aarch64_linux_gnu": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v23.2/protoc-23.2-linux-aarch_64.zip",
"checksum": "12c9385da533dd5fe6fd57e0c5cdb7004d8c08af94a80c75614c50f1f31d92e0"
},
"aarch64_macos": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v23.2/protoc-23.2-osx-aarch_64.zip",
"checksum": "9fffa243509db34492c6dee031b361c538b2b65720ac253c319034e7f38e2cc8"
}
},
"3.23.1": {
"x86_64_linux_gnu": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v23.1/protoc-23.1-linux-x86_64.zip",
"checksum": "031f8e7504eb359df58389b31752f8081c01b01132a2f3f768a3792ac4b06f3f"
},
"x86_64_macos": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v23.1/protoc-23.1-osx-x86_64.zip",
"checksum": "5d0367dfd58ea894f87d1d6efbd800bf52820842e9151d265db17471bc69fe94"
},
"x86_64_windows": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v23.1/protoc-23.1-win64.zip",
"checksum": "420cd7a1548a9c3ef5b5a7e969b6fcf8ee6a5a09cec99d7a3209406f028e5dce"
},
"aarch64_linux_gnu": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v23.1/protoc-23.1-linux-aarch_64.zip",
"checksum": "f174eb3a6bd812e9946be3a9ef3fb8f8ac4a6f8acd0a01c928fb2fecb22b6fb0"
},
"aarch64_macos": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v23.1/protoc-23.1-osx-aarch_64.zip",
"checksum": "8d0af9adbbde1a9791d10125f4742a4c9fa84f85ee46fe69adde6bf5e8a4a428"
}
},
"3.23.0": {
"x86_64_linux_gnu": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v23.0/protoc-23.0-linux-x86_64.zip",
"checksum": "635f2dd1c7d0d1fc7e47f5744eda658858f7a235a5e478d1f1f984cf0b7eb483"
},
"x86_64_macos": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v23.0/protoc-23.0-osx-x86_64.zip",
"checksum": "0506eac95bf3ca8fc944a862e90ab82079426633eb70c6eeb52eb4f6fb06165d"
},
"x86_64_windows": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v23.0/protoc-23.0-win64.zip",
"checksum": "031f00a9b46ce9a2253ee681ff05d43b8f842780cac4e9f5eb3c9a3a61a33e3e"
},
"aarch64_linux_gnu": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v23.0/protoc-23.0-linux-aarch_64.zip",
"checksum": "cf911a9bfaed00b1f2ae82eef9a0cfdb43d12822ee4b28207d76fd10ee8384de"
},
"aarch64_macos": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v23.0/protoc-23.0-osx-aarch_64.zip",
"checksum": "5e2a59d1df9aff70237cb08cbb4311af31da245eb882271a1bba9bd6fdc67258"
}
"version": "3.22.2"
},
"3.22": {
"version": "3.22.4"
},
"3.22.4": {
"x86_64_linux_gnu": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v22.4/protoc-22.4-linux-x86_64.zip",
"checksum": "b3cff4d4076efe2965e8560cae6307c429349eda0af7755950d6ea5db6d72870"
},
"x86_64_macos": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v22.4/protoc-22.4-osx-x86_64.zip",
"checksum": "5f70ca85b2e3f53559cc470ab3f5084862ae6fc9515bf6154ad6462a8385b51a"
},
"x86_64_windows": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v22.4/protoc-22.4-win64.zip",
"checksum": "689b1d493f26b6bca05b8af1705f25f2129dc52e15138dbfda58df95c634076b"
},
"aarch64_linux_gnu": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v22.4/protoc-22.4-linux-aarch_64.zip",
"checksum": "a534857d0c51c44dad9704a6929fb4069a7f2e0b5e1949dd0569edcb95e634c8"
},
"aarch64_macos": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v22.4/protoc-22.4-osx-aarch_64.zip",
"checksum": "9da1a5e494687a5b88c5c8f82afd808f8c6554def47842f945f43a6475259d91"
}
},
"3.22.3": {
"x86_64_linux_gnu": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v22.3/protoc-22.3-linux-x86_64.zip",
"checksum": "0f8070d762eb8a2f5a13a47713a553f989f9d9b556e7e3ebfa2bd6464e2ecaeb"
},
"x86_64_macos": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v22.3/protoc-22.3-osx-x86_64.zip",
"checksum": "d644a65064a97fa3ed033a4a2314ab35816abbd9aed052f9b1b3374d2deaaae4"
},
"x86_64_windows": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v22.3/protoc-22.3-win64.zip",
"checksum": "fa7fe21bf6e204a4e1eec3ffee1d53c84e216289bc4762e072258e5bca113a3c"
},
"aarch64_linux_gnu": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v22.3/protoc-22.3-linux-aarch_64.zip",
"checksum": "c6068d9d151c39723bc7db920759b55737a770b0c2ec544dd0197d4078d7a956"
},
"aarch64_macos": {
"url": "https://github.com/protocolbuffers/protobuf/releases/download/v22.3/protoc-22.3-osx-aarch_64.zip",
"checksum": "79cc15d1b528061ea0a818b0abcf3be1e0bdcb063a0cc999af27974cccdc5cce"
}
"version": "3.22.2"
},
"3.22.2": {
"x86_64_linux_gnu": {

52
manifests/syft.json generated
View File

@@ -1,52 +0,0 @@
{
"template": {
"x86_64_linux_musl": {
"url": "https://github.com/anchore/syft/releases/download/v${version}/syft_${version}_linux_amd64.tar.gz",
"bin_dir": "/usr/local/bin",
"bin": "syft"
},
"x86_64_macos": {
"url": "https://github.com/anchore/syft/releases/download/v${version}/syft_${version}_darwin_amd64.tar.gz",
"bin_dir": "/usr/local/bin",
"bin": "syft"
},
"x86_64_windows": {
"url": "https://github.com/anchore/syft/releases/download/v${version}/syft_${version}_windows_amd64.zip",
"bin_dir": "/usr/local/bin",
"bin": "syft.exe"
},
"aarch64_linux_musl": {
"url": "https://github.com/anchore/syft/releases/download/v${version}/syft_${version}_linux_arm64.tar.gz",
"bin_dir": "/usr/local/bin",
"bin": "syft"
},
"aarch64_macos": {
"url": "https://github.com/anchore/syft/releases/download/v${version}/syft_${version}_darwin_arm64.tar.gz",
"bin_dir": "/usr/local/bin",
"bin": "syft"
}
},
"latest": {
"version": "0.83.0"
},
"0.83": {
"version": "0.83.0"
},
"0.83.0": {
"x86_64_linux_musl": {
"checksum": "694e97a454327403fb440544c41fefd83d37f88f43c4f9ae0b0d67a3562bd25c"
},
"x86_64_macos": {
"checksum": "211f34f2e52e842d3248bc3a72c07e534d0d7a8e40babaa7a2034a41a077b70e"
},
"x86_64_windows": {
"checksum": "9131f458fdbbc88fe1bd8df666721ecb95ff751d0ca3e2cffecfd5e021c65e97"
},
"aarch64_linux_musl": {
"checksum": "388fbea52598e44f8529e3432555c53e6e161211a83020d2b749c5d160baf593"
},
"aarch64_macos": {
"checksum": "4b93cf316aa30bddb53d2dcd82f4c9d0353b337677cbdf8a470749f9e98eec82"
}
}
}

View File

@@ -18,24 +18,10 @@
}
},
"latest": {
"version": "0.11.1"
"version": "0.11.0"
},
"0.11": {
"version": "0.11.1"
},
"0.11.1": {
"x86_64_linux_musl": {
"checksum": "cfe60a2e5d1641b9a09ec6d95787068ac24e03c67b9e36de7036714f71185a2d"
},
"x86_64_macos": {
"checksum": "6925ede1db571ceca80f2d48533cd9983f152731d95b794de6826121e5cd603f"
},
"x86_64_windows": {
"checksum": "57c976a710da102e3465c7d8a158f3e6b850eaef9c010f5d717d522099e74c9b"
},
"aarch64_linux_musl": {
"checksum": "9895d2389cfc315e12f6e35299666439b51a0e6dd36b0a604bcc8737c295c3bc"
}
"version": "0.11.0"
},
"0.11.0": {
"x86_64_linux_musl": {

1259
manifests/wasmtime.json generated

File diff suppressed because it is too large Load Diff

View File

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

View File

@@ -5,15 +5,9 @@
"bin": "./${package}-v${version}-${rust_target}/${package}${exe}",
"platform": {
"x86_64_linux_gnu": {},
"x86_64_linux_musl": {},
"x86_64_macos": {},
"x86_64_windows": {
"asset_name": "${package}-v${version}-${rust_target}.zip"
},
"aarch64_linux_musl": {},
"aarch64_macos": {},
"aarch64_windows": {
"asset_name": "${package}-v${version}-${rust_target}.zip"
}
}
}

View File

@@ -1,24 +0,0 @@
{
"repository": "https://github.com/anchore/syft",
"tag_prefix": "v",
"bin_dir": "/usr/local/bin",
"bin": "${package}${exe}",
"version_range": ">= 0.83.0",
"platform": {
"x86_64_macos": {
"asset_name": "${package}_${version}_darwin_amd64.tar.gz"
},
"aarch64_macos": {
"asset_name": "${package}_${version}_darwin_arm64.tar.gz"
},
"x86_64_windows": {
"asset_name": "${package}_${version}_windows_amd64.zip"
},
"x86_64_linux_musl": {
"asset_name": "${package}_${version}_linux_amd64.tar.gz"
},
"aarch64_linux_musl": {
"asset_name": "${package}_${version}_linux_arm64.tar.gz"
}
}
}

View File

@@ -1,5 +1,4 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: Apache-2.0 OR MIT
set -euo pipefail
IFS=$'\n\t'
cd "$(dirname "$0")"/..

View File

@@ -1,11 +1,10 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: Apache-2.0 OR MIT
set -euo pipefail
IFS=$'\n\t'
cd "$(dirname "$0")"/..
# shellcheck disable=SC2154
trap 's=$?; echo >&2 "$0: error on line "${LINENO}": ${BASH_COMMAND}"; exit ${s}' ERR
trap 's=$?; echo >&2 "$0: Error on line "${LINENO}": ${BASH_COMMAND}"; exit ${s}' ERR
# Publish a new release.
#
@@ -15,6 +14,14 @@ trap 's=$?; echo >&2 "$0: error on line "${LINENO}": ${BASH_COMMAND}"; exit ${s}
# Note: This script requires the following tools:
# - parse-changelog <https://github.com/taiki-e/parse-changelog>
x() {
local cmd="$1"
shift
(
set -x
"${cmd}" "$@"
)
}
bail() {
echo >&2 "error: $*"
exit 1
@@ -41,6 +48,7 @@ if gh release view "${tag}" &>/dev/null; then
bail "tag '${tag}' has already been created and pushed"
fi
# Make sure that the release was created from an allowed branch.
if ! git branch | grep -q '\* main$'; then
bail "current branch is not 'main'"
fi
@@ -89,57 +97,11 @@ echo "======================================="
if [[ -n "${tags}" ]]; then
# Create a release commit.
git add "${changelog}"
git commit -m "Release ${version}"
x git add "${changelog}"
x git commit -m "Release ${version}"
fi
tools=()
for tool in tools/codegen/base/*.json; do
tools+=("$(basename "${tool%.*}")")
done
# Aliases
tools+=(nextest)
# Not manifest-based
tools+=(valgrind)
(
set -x
git tag "${tag}"
git push origin main
git push origin --tags
major_version_tag="v${version%%.*}"
git checkout -b "${major_version_tag}"
git push origin refs/heads/"${major_version_tag}"
if git --no-pager tag | grep -Eq "^${major_version_tag}$"; then
git tag -d "${major_version_tag}"
git push --delete origin refs/tags/"${major_version_tag}"
fi
git tag "${major_version_tag}"
git checkout main
git branch -d "${major_version_tag}"
)
for tool in "${tools[@]}"; do
(
set -x
git checkout -b "${tool}"
sed -i -e "s/required: true/required: false/g" action.yml
sed -i -e "s/# default: #publish:tool/default: ${tool}/g" action.yml
git add action.yml
git commit -m "${tool}"
git push origin -f refs/heads/"${tool}"
if git --no-pager tag | grep -Eq "^${tool}$"; then
git tag -d "${tool}"
git push --delete origin refs/tags/"${tool}"
fi
git tag "${tool}"
git checkout main
git branch -D "${tool}"
)
done
set -x
git push origin --tags
x git tag "${tag}"
# TODO: the following still assumes admin permissions
x git push origin main
x git push origin --tags

View File

@@ -1,12 +1,11 @@
#!/usr/bin/env bash
# SPDX-License-Identifier: Apache-2.0 OR MIT
# shellcheck disable=SC2046
set -euo pipefail
IFS=$'\n\t'
cd "$(dirname "$0")"/..
# shellcheck disable=SC2154
trap 's=$?; echo >&2 "$0: error on line "${LINENO}": ${BASH_COMMAND}"; exit ${s}' ERR
trap 's=$?; echo >&2 "$0: Error on line "${LINENO}": ${BASH_COMMAND}"; exit ${s}' ERR
# USAGE:
# ./tools/tidy.sh
@@ -34,9 +33,6 @@ check_diff() {
fi
fi
}
info() {
echo >&2 "info: $*"
}
warn() {
if [[ -n "${GITHUB_ACTIONS:-}" ]]; then
echo "::warning::$*"
@@ -45,14 +41,6 @@ warn() {
fi
should_fail=1
}
error() {
if [[ -n "${GITHUB_ACTIONS:-}" ]]; then
echo "::error::$*"
else
echo >&2 "error: $*"
fi
should_fail=1
}
if [[ $# -gt 0 ]]; then
cat <<EOF
@@ -64,7 +52,6 @@ fi
# Rust (if exists)
if [[ -n "$(git ls-files '*.rs')" ]]; then
info "checking Rust code style"
if type -P rustup &>/dev/null; then
# `cargo fmt` cannot recognize files not included in the current workspace and modules
# defined inside macros, so run rustfmt directly.
@@ -83,40 +70,10 @@ if [[ -n "$(git ls-files '*.rs')" ]]; then
else
warn "'rustup' is not installed"
fi
cast_without_turbofish=$(grep -n -E '\.cast\(\)' $(git ls-files '*.rs') || true)
if [[ -n "${cast_without_turbofish}" ]]; then
error "please replace \`.cast()\` with \`.cast::<type_name>()\`:"
echo "${cast_without_turbofish}"
fi
first='1'
for readme in $(git ls-files '*README.md'); do
if ! grep -q '^<!-- tidy:crate-doc:start -->' "${readme}"; then
continue
fi
lib="$(dirname "${readme}")/src/lib.rs"
if [[ -n "${first}" ]]; then
first=''
info "checking readme and crate-level doc are synchronized"
fi
if ! grep -q '^<!-- tidy:crate-doc:end -->' "${readme}"; then
bail "missing '<!-- tidy:crate-doc:end -->' comment in ${readme}"
fi
if ! grep -q '^<!-- tidy:crate-doc:start -->' "${lib}"; then
bail "missing '<!-- tidy:crate-doc:start -->' comment in ${lib}"
fi
if ! grep -q '^<!-- tidy:crate-doc:end -->' "${lib}"; then
bail "missing '<!-- tidy:crate-doc:end -->' comment in ${lib}"
fi
new=$(tr <"${readme}" '\n' '\a' | grep -o '<!-- tidy:crate-doc:start -->.*<!-- tidy:crate-doc:end -->' | sed 's/\&/\\\&/g; s/\\/\\\\/g')
new=$(tr <"${lib}" '\n' '\a' | awk -v new="${new}" 'gsub("<!-- tidy:crate-doc:start -->.*<!-- tidy:crate-doc:end -->",new)' | tr '\a' '\n')
echo "${new}" >"${lib}"
check_diff "${lib}"
done
fi
# C/C++ (if exists)
if [[ -n "$(git ls-files '*.c')$(git ls-files '*.cpp')" ]]; then
info "checking C/C++ code style"
if [[ ! -e .clang-format ]]; then
warn "could not fount .clang-format in the repository root"
fi
@@ -131,7 +88,6 @@ fi
# YAML/JavaScript/JSON (if exists)
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')
@@ -141,15 +97,14 @@ if [[ -n "$(git ls-files '*.yml')$(git ls-files '*.js')$(git ls-files '*.json')"
fi
# Check GitHub workflows.
if [[ -d .github/workflows ]]; then
info "checking GitHub workflows"
if type -P jq &>/dev/null && type -P yq &>/dev/null; then
for workflow in .github/workflows/*.yml; do
# 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"}' | '{}') ;;
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" ;;
null) warn "${workflow}: top level permissions not found; it must be 'contents: read' or weaker permissions" ;;
*) warn "${workflow}: only 'contents: read' and weaker permissions are allowed at top level; if you want to use stronger permissions, please set job-level permissions" ;;
esac
# Make sure the 'needs' section is not out of date.
if grep -q '# tidy:needs' "${workflow}" && ! grep -Eq '# *needs: \[' "${workflow}"; then
@@ -162,7 +117,7 @@ if [[ -n "$(git ls-files '*.yml')$(git ls-files '*.js')$(git ls-files '*.json')"
printf -v jobs '%s, ' "${jobs_actual[@]}"
sed -i "s/needs: \[.*\] # tidy:needs/needs: [${jobs%, }] # tidy:needs/" "${workflow}"
check_diff "${workflow}"
error "${workflow}: please update 'needs' section in 'ci-success' job"
warn "${workflow}: please update 'needs' section in 'ci-success' job"
fi
fi
done
@@ -172,12 +127,11 @@ if [[ -n "$(git ls-files '*.yml')$(git ls-files '*.js')$(git ls-files '*.json')"
fi
fi
if [[ -n "$(git ls-files '*.yaml')" ]]; then
error "please use '.yml' instead of '.yaml' for consistency"
warn "please use '.yml' instead of '.yaml' for consistency"
git ls-files '*.yaml'
fi
# Shell scripts
info "checking Shell scripts"
if type -P shfmt &>/dev/null; then
echo "+ shfmt -l -w \$(git ls-files '*.sh')"
shfmt -l -w $(git ls-files '*.sh')
@@ -201,52 +155,10 @@ else
warn "'shellcheck' is not installed"
fi
# License check
# TODO: This check is still experimental and does not track all files that should be tracked.
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=("// " "/* ") ;;
*.ld | *.x) prefix=("/* ") ;;
*) error "unrecognized file type: ${p}" ;;
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
header_found=''
for pre in "${prefix[@]}"; do
if [[ "$(grep -E -n "${pre}SPDX-License-Identifier: " "${p}")" == "${line}:${pre}SPDX-License-Identifier: "* ]]; then
header_found='1'
continue
fi
done
if [[ -z "${header_found}" ]]; then
failed_files+="${p}:${line}"$'\n'
fi
done
if [[ -n "${failed_files}" ]]; then
error "license-check failed: please add SPDX-License-Identifier to the following files"
echo "======================================="
echo -n "${failed_files}"
echo "======================================="
fi
fi
# Spell check (if config exists)
if [[ -f .cspell.json ]]; then
info "spell checking"
project_dictionary=.github/.cspell/project-dictionary.txt
if type -P npm &>/dev/null; then
has_rust=''
if [[ -n "$(git ls-files '*Cargo.toml')" ]]; then
has_rust='1'
dependencies=''
for manifest_path in $(git ls-files '*Cargo.toml'); do
if [[ "${manifest_path}" != "Cargo.toml" ]] && ! grep -Eq '\[workspace\]' "${manifest_path}"; then
@@ -254,27 +166,24 @@ if [[ -f .cspell.json ]]; then
fi
metadata=$(cargo metadata --format-version=1 --all-features --no-deps --manifest-path "${manifest_path}")
for id in $(jq <<<"${metadata}" '.workspace_members[]'); do
dependencies+="$(jq <<<"${metadata}" ".packages[] | select(.id == ${id})" | jq -r '.dependencies[].name')"$'\n'
dependencies+=$'\n'
dependencies+=$(jq <<<"${metadata}" ".packages[] | select(.id == ${id})" | jq -r '.dependencies[].name')
done
done
# shellcheck disable=SC2001
dependencies=$(sed <<<"${dependencies}" 's/[0-9_-]/\n/g' | LC_ALL=C sort -f -u)
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))')
echo "${config_new}" >.cspell.json
words=$(npx <<<"${dependencies}" cspell stdin --no-progress --no-summary --words-only --unique || true)
echo "${config_old}" >.cspell.json
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))')
echo "${config_new}" >.cspell.json
if [[ -n "${has_rust}" ]]; then
dependencies_words=$(npx <<<"${dependencies}" 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
echo "${config_old}" >.cspell.json
cat >.github/.cspell/rust-dependencies.txt <<EOF
// This file is @generated by $(basename "$0").
// It is not intended for manual editing.
EOF
if [[ -n "${dependencies_words:-}" ]]; then
echo $'\n'"${dependencies_words}" >>.github/.cspell/rust-dependencies.txt
if [[ -n "${words:-}" ]]; then
echo $'\n'"${words}" >>.github/.cspell/rust-dependencies.txt
fi
check_diff .github/.cspell/rust-dependencies.txt
if ! grep -Eq "^\.github/\.cspell/rust-dependencies.txt linguist-generated" .gitattributes; then
@@ -282,37 +191,20 @@ EOF
fi
echo "+ npx cspell --no-progress --no-summary \$(git ls-files)"
if ! npx 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
npx cspell --no-progress --no-summary $(git ls-files)
# Make sure the project-specific dictionary does not contain duplicated words.
for dictionary in .github/.cspell/*.txt; do
if [[ "${dictionary}" == "${project_dictionary}" ]]; then
if [[ "${dictionary}" == .github/.cspell/project-dictionary.txt ]]; then
continue
fi
dup=$(sed '/^$/d' "${project_dictionary}" "${dictionary}" | LC_ALL=C sort -f | uniq -d -i | (grep -v '//.*' || true))
dup=$(sed '/^$/d' .github/.cspell/project-dictionary.txt "${dictionary}" | LC_ALL=C sort -f | uniq -d -i | (grep -v '//.*' || true))
if [[ -n "${dup}" ]]; then
error "duplicated words in dictionaries; please remove the following words from ${project_dictionary}"
warn "duplicated words in dictionaries; please remove the following words from .github/.cspell/project-dictionary.txt"
echo "======================================="
echo "${dup}"
echo "======================================="
fi
done
# Make sure the project-specific dictionary does not contain unused words.
unused=''
for word in $(grep -v '//.*' "${project_dictionary}" || true); do
if ! grep <<<"${all_words}" -Eq -i "^${word}$"; then
unused+="${word}"$'\n'
fi
done
if [[ -n "${unused}" ]]; then
error "unused words in dictionaries; please remove the following words from ${project_dictionary}"
echo "======================================="
echo -n "${unused}"
echo "======================================="
fi
else
warn "'npm' is not installed"
fi