Compare commits

...

23 Commits

Author SHA1 Message Date
Taiki Endo
e9e8e031bc Release 2.70.2 2026-03-30 01:34:03 +00:00
Taiki Endo
f225969a9e Update vacuum@latest to 0.25.3 2026-03-30 00:57:06 +00:00
Taiki Endo
2e8700ad0b Update tombi@latest to 0.9.11 2026-03-29 19:25:13 +00:00
Taiki Endo
41213fbc0e zizmor: Apply more lints 2026-03-30 01:56:27 +09:00
Taiki Endo
fd0f63e180 Release 2.70.1 2026-03-29 08:34:38 +00:00
Taiki Endo
7487d4091f Update cargo-insta@latest to 1.47.1 2026-03-29 06:46:40 +00:00
Taiki Endo
ea3bdd400e Update cargo-binstall@latest to 1.17.9 2026-03-29 06:46:40 +00:00
Taiki Endo
7d31177690 ci: Test ubuntu 26.04 container 2026-03-29 12:55:04 +09:00
Taiki Endo
b933e429e1 Update tombi@latest to 0.9.10 2026-03-28 21:25:56 +00:00
Taiki Endo
3eeb0f944d tools: Update tidy.sh 2026-03-29 02:56:38 +09:00
Taiki Endo
0fde6d128a Release 2.70.0 2026-03-28 16:26:52 +00:00
Taiki Endo
6abbc18f77 Install uv, uvw, and uvx binaries when installing uv 2026-03-29 01:20:06 +09:00
Taiki Endo
cd20062255 ci: Update config 2026-03-29 00:12:26 +09:00
Taiki Endo
a164de717a Release 2.69.14 2026-03-28 05:53:56 +00:00
Taiki Endo
cd919aa8c5 Update just@latest to 1.48.1 2026-03-28 05:43:54 +00:00
Taiki Endo
8f41066dca Update wasm-bindgen@latest to 0.2.115 2026-03-28 00:50:38 +00:00
Taiki Endo
704f92c11d Release 2.69.13 2026-03-27 14:39:03 +00:00
Taiki Endo
38b59bc959 ci: Fix release workflow 2026-03-27 23:22:50 +09:00
Taiki Endo
a20bdf712d Update mise@latest to 2026.3.17 2026-03-27 12:35:37 +00:00
Taiki Endo
cc73724b43 Update cargo-insta@latest to 1.47.0 2026-03-27 01:51:56 +00:00
Taiki Endo
80a23c5ba9 Release 2.69.12 2026-03-27 01:37:17 +00:00
Taiki Endo
5c17a3192f Update uv@latest to 0.11.2 2026-03-27 00:57:43 +00:00
Taiki Endo
4bb73acd2d ci: Fix release workflow 2026-03-27 02:22:49 +09:00
18 changed files with 479 additions and 199 deletions

View File

@@ -27,6 +27,7 @@ pluginconf
ppcle
prek
quickinstall
rclone
rdme
rootfs
sccache

View File

@@ -1,6 +1,6 @@
version: 2
updates:
- package-ecosystem: cargo
- package-ecosystem: cargo # zizmor: ignore[dependabot-cooldown] # Unless dependencies are pinned/locked, the effect is limited.
directory: /
schedule:
interval: daily
@@ -14,6 +14,8 @@ updates:
directory: /
schedule:
interval: daily
cooldown:
default-days: 7
commit-message:
prefix: ''
labels: []

View File

@@ -51,7 +51,8 @@ jobs:
contents: write # for creating branch for pr
pull-requests: write # unused (used in `codegen-automerge: true` case)
security-events: write # for github/codeql-action/*
secrets: inherit
secrets:
PR_TOKEN_APP_PRIVATE_KEY: ${{ secrets.PR_TOKEN_APP_PRIVATE_KEY }}
test:
strategy:
@@ -99,7 +100,11 @@ jobs:
- run: rm -- Cargo.toml
- name: Generate tool list
id: tool-list
run: tools/ci/tool-list.sh "${{ matrix.tool }}" "${{ matrix.os }}" "${{ matrix.bash }}" >>"${GITHUB_OUTPUT}"
run: tools/ci/tool-list.sh "${TOOL}" "${OS}" "${BASH}" >>"${GITHUB_OUTPUT}"
env:
TOOL: ${{ matrix.tool }}
OS: ${{ matrix.os }}
BASH: ${{ matrix.bash }}
- run: |
printf '%s\n' 'C:\msys64\mingw32\bin' >>"${GITHUB_PATH}"
printf '%s\n' 'C:\msys64\usr\bin' >>"${GITHUB_PATH}"
@@ -155,7 +160,7 @@ jobs:
- run: env
- uses: ./
with:
# NB: Update alias list in tools/publish.rs, case for aliases in main.sh,
# NB: Update alias list in release.yml, case for aliases in main.sh,
# and match for alias for tools/codegen/src/tools-markdown.rs.
tool: |
nextest
@@ -215,6 +220,7 @@ jobs:
- ubuntu:20.04 # glibc 2.31
- ubuntu:22.04 # glibc 2.35
- ubuntu:24.04 # glibc 2.39
- ubuntu:26.04 # glibc 2.42
- debian:9-slim # glibc 2.24
- debian:10-slim # glibc 2.28
- debian:11-slim # glibc 2.31
@@ -263,7 +269,7 @@ jobs:
sed -i /etc/yum.repos.d/*.repo -e 's!^mirrorlist!#mirrorlist!' \
-e 's!^#baseurl=http://mirror.centos.org/!baseurl=https://vault.centos.org/!'
sed -i 's/enabled=1/enabled=0/' /etc/yum/pluginconf.d/fastestmirror.conf
if [[ "${{ matrix.container }}" == "centos:6" ]]; then
if [[ "${CONTAINER}" == "centos:6" ]]; then
# CentOS 6's curl (7.19.7) has no curl has no --proto/--tlsv1.2.
yum install -y gcc openssl-devel
curl -fsSL --retry 10 https://curl.se/download/curl-7.34.0.tar.gz | tar xzf -
@@ -277,13 +283,17 @@ jobs:
https://vault.ius.io/el6/x86_64/packages/p/perl-Git18-1.8.5.5-4.ius.el6.noarch.rpm \
https://vault.ius.io/el6/x86_64/packages/g/git18-1.8.5.5-4.ius.el6.x86_64.rpm
fi
env:
CONTAINER: ${{ matrix.container }}
if: startsWith(matrix.container, 'centos')
- uses: taiki-e/checkout-action@v1
# cross attempts to install rust-src when Cargo.toml is available even if `cross --version`
- run: rm -- Cargo.toml
- name: Generate tool list
id: tool-list
run: tools/ci/tool-list.sh "" "${{ matrix.container }}" >>"${GITHUB_OUTPUT}"
run: tools/ci/tool-list.sh "" "${CONTAINER}" >>"${GITHUB_OUTPUT}"
env:
CONTAINER: ${{ matrix.container }}
# remove bash installed by checkout-action
- run: apk --no-cache del bash
shell: sh

View File

@@ -37,7 +37,8 @@ jobs:
permissions:
contents: write # for creating branch for pr
pull-requests: write # for gh pr review --approve
secrets: inherit
secrets:
PR_TOKEN_APP_PRIVATE_KEY: ${{ secrets.PR_TOKEN_APP_PRIVATE_KEY }}
with:
script: tools/manifest.sh
commit-script: tools/ci/manifest.sh

View File

@@ -26,6 +26,10 @@ defaults:
run:
shell: bash --noprofile --norc -CeEuxo pipefail {0}
concurrency:
group: ${{ github.workflow }}
cancel-in-progress: false
jobs:
prepare:
if: github.repository_owner == 'taiki-e' && inputs.target == 'install-action'
@@ -39,6 +43,7 @@ jobs:
fallback: none
- id: check
run: |
set +x
IFS=$'\n\t'
trap -- 's=$?; printf >&2 "%s\n" "${0##*/}:${LINENO}: \`${BASH_COMMAND}\` exit with ${s}"; exit ${s}' ERR
retry() {
@@ -90,7 +95,6 @@ jobs:
printf '%s\n' "release-date=${release_date}" >>"${GITHUB_OUTPUT}"
# Get the current revision.
retry git fetch origin &>/dev/null
rev=$(git rev-parse HEAD)
printf '%s\n' "rev: ${rev}"
printf '%s\n' "rev=${rev}" >>"${GITHUB_OUTPUT}"
@@ -222,6 +226,7 @@ jobs:
- name: Create and push release commit and tag
id: push
run: |
set +x
IFS=$'\n\t'
trap -- 's=$?; printf >&2 "%s\n" "${0##*/}:${LINENO}: \`${BASH_COMMAND}\` exit with ${s}"; exit ${s}' ERR
retry() {
@@ -257,7 +262,9 @@ jobs:
release_date="${RELEASE_DATE}"
# Make sure the current revision is same as prepare step.
retry git fetch origin &>/dev/null
# --unshallow is necessary to successfully push the
# "releases/${major_version_tag}" branch in the subsequent step.
retry git fetch origin --unshallow &>/dev/null
rev=$(git rev-parse HEAD)
if [[ "${rev}" != "${PREPARE_REV}" ]]; then
bail "revision difference between prepare step"
@@ -322,97 +329,90 @@ jobs:
set -x
git tag "${tag}"
retry git push origin HEAD
retry git push origin refs/tags/"${tag}"
major_version_tag="v${version%%.*}"
git branch "releases/${major_version_tag}"
git tag -f "${major_version_tag}"
refs=("refs/heads/releases/${major_version_tag}" "+refs/tags/${major_version_tag}")
refs=("refs/tags/${tag}" "refs/heads/releases/${major_version_tag}" "+refs/tags/${major_version_tag}")
if [[ "${INSTALL_ACTION}" == 'true' ]]; then
tools=()
for tool in tools/codegen/base/*.json; do
tool="${tool##*/}"
tools+=("${tool%.*}")
done
# Aliases.
# NB: Update case for aliases in main.sh, tool input option in test-alias job
# in .github/workflows/ci.yml, and match for alias for tools/codegen/src/tools-markdown.rs.
tools+=(
nextest
taplo-cli
typos-cli
wasm-bindgen-cli
wasmtime-cli
)
# Non-manifest-based tools.
tools+=(valgrind)
tools=()
for tool in tools/codegen/base/*.json; do
tool="${tool##*/}"
tools+=("${tool%.*}")
done
# Aliases.
# NB: Update case for aliases in main.sh, tool input option in test-alias job
# in .github/workflows/ci.yml, and match for alias for tools/codegen/src/tools-markdown.rs.
tools+=(
nextest
taplo-cli
typos-cli
wasm-bindgen-cli
wasmtime-cli
)
# Non-manifest-based tools.
tools+=(valgrind)
branches=()
for tool in "${tools[@]}"; do
git checkout -b "releases/${tool}"
sed -E "${in_place[@]}" action.yml \
-e "s/required: true/required: false/g" \
-e "s/# default: #publish:tool/default: ${tool}/g"
git add action.yml
git commit -m "${tool}"
git tag -f "${tool}"
git checkout main
refs+=("+refs/heads/releases/${tool}" "+refs/tags/${tool}")
branches+=("releases/${tool}")
done
fi
branches=()
for tool in "${tools[@]}"; do
git checkout -b "releases/${tool}"
sed -E "${in_place[@]}" action.yml \
-e "s/required: true/required: false/g" \
-e "s/# default: #publish:tool/default: ${tool}/g"
git add action.yml
git commit -m "${tool}"
git tag -f "${tool}"
git checkout refs/tags/"${tag}"
refs+=("+refs/heads/releases/${tool}" "+refs/tags/${tool}")
branches+=("releases/${tool}")
done
retry git push origin --atomic "${refs[@]}"
git branch -d "releases/${major_version_tag}"
git branch -D "${branches[@]}"
if [[ "${INSTALL_ACTION}" == 'true' ]]; then
git branch -D "${branches[@]}"
schema_workspace=/tmp/workspace
rm -rf -- "${schema_workspace}"
# Checkout manifest-schema branch
schema_version="$(cargo metadata --format-version=1 --no-deps | jq -r '.packages[] | select(.name == "install-action-manifest-schema") | .version')"
if [[ "${schema_version}" == "0."* ]]; then
schema_version="0.$(cut -d. -f2 <<<"${schema_version}")"
else
schema_version="$(cut -d. -f1 <<<"${schema_version}")"
fi
schema_branch="manifest-schema-${schema_version}"
git worktree add --force "${schema_workspace}"
(
cd -- "${schema_workspace}"
if git fetch origin "${schema_branch}"; then
git checkout "origin/${schema_branch}" -B "${schema_branch}"
elif ! git checkout "${schema_branch}"; then
# New branch with no history. Credit: https://stackoverflow.com/a/13969482
git checkout --orphan "${schema_branch}"
git rm -rf -- . || true
git commit -m 'Initial commit' --allow-empty
fi
)
# Copy over schema
cp -- ./manifests/* "${schema_workspace}"
(
cd -- "${schema_workspace}"
# Stage changes
git add .
# Detect changes, then commit and push if changes exist
if [[ "$(git status --porcelain=v1 | LC_ALL=C wc -l)" != "0" ]]; then
git commit -m 'Update manifest schema'
retry git push origin HEAD
fi
)
rm -rf -- "${schema_workspace}"
git worktree prune
# TODO: get branch in schema_workspace dir instead
git branch -D "${schema_branch}" "${schema_workspace##*/}"
schema_workspace=/tmp/workspace
rm -rf -- "${schema_workspace}"
# Checkout manifest-schema branch
schema_version="$(cargo metadata --format-version=1 --no-deps | jq -r '.packages[] | select(.name == "install-action-manifest-schema") | .version')"
if [[ "${schema_version}" == "0."* ]]; then
schema_version="0.$(cut -d. -f2 <<<"${schema_version}")"
else
schema_version="$(cut -d. -f1 <<<"${schema_version}")"
fi
schema_branch="manifest-schema-${schema_version}"
git worktree add --force "${schema_workspace}"
(
cd -- "${schema_workspace}"
if git fetch origin "${schema_branch}"; then
git checkout "origin/${schema_branch}" -B "${schema_branch}"
elif ! git checkout "${schema_branch}"; then
# New branch with no history. Credit: https://stackoverflow.com/a/13969482
git checkout --orphan "${schema_branch}"
git rm -rf -- . || true
git commit -m 'Initial commit' --allow-empty
fi
)
# Copy over schema
cp -- ./manifests/* "${schema_workspace}"
(
cd -- "${schema_workspace}"
# Stage changes
git add .
# Detect changes, then commit and push if changes exist
if [[ "$(git status --porcelain=v1 | LC_ALL=C wc -l)" != "0" ]]; then
git commit -m 'Update manifest schema'
retry git push origin HEAD
fi
)
rm -rf -- "${schema_workspace}"
git worktree prune
# TODO: get branch in schema_workspace dir instead
git branch -D "${schema_branch}" "${schema_workspace##*/}"
)
env:
VERSION: ${{ needs.prepare.outputs.version }}
@@ -439,7 +439,8 @@ jobs:
contents: write # for taiki-e/create-gh-release-action
id-token: write # for rust-lang/crates-io-auth-action
attestations: write # unused (used when options for uploading binaries are set)
secrets: inherit
secrets:
PUSH_TOKEN: ${{ secrets.PUSH_TOKEN }}
with:
version: ${{ inputs.version }}
tag-prefix: install-action-manifest-schema-

4
.github/zizmor.yml vendored
View File

@@ -2,10 +2,8 @@
# https://docs.zizmor.sh/configuration/
rules:
dependabot-cooldown: { disable: true } # Unless dependencies are pinned/locked, the effect is limited.
secrets-inherit: { disable: true }
anonymous-definition: { disable: true }
unpinned-uses:
config:
policies:
taiki-e/*: any
'*': ref-pin

View File

@@ -10,6 +10,40 @@ Note: In this file, do not use the hard wrap in the middle of a sentence for com
## [Unreleased]
## [2.70.2] - 2026-03-30
- Update `vacuum@latest` to 0.25.3.
- Update `tombi@latest` to 0.9.11.
## [2.70.1] - 2026-03-29
- Update `cargo-insta@latest` to 1.47.1.
- Update `cargo-binstall@latest` to 1.17.9.
- Update `tombi@latest` to 0.9.10.
## [2.70.0] - 2026-03-28
- Install `uv`, `uvw` (Windows-only), and `uvx` binaries when installing `uv`. Previously, only `uv` binary was installed. ([#1632](https://github.com/taiki-e/install-action/pull/1632))
## [2.69.14] - 2026-03-28
- Update `just@latest` to 1.48.1.
- Update `wasm-bindgen@latest` to 0.2.115.
## [2.69.13] - 2026-03-27
- Update `mise@latest` to 2026.3.17.
- Update `cargo-insta@latest` to 1.47.0.
## [2.69.12] - 2026-03-27
- Update `uv@latest` to 0.11.2.
## [2.69.11] - 2026-03-26
- Update `dprint@latest` to 0.53.1.
@@ -6037,7 +6071,13 @@ Note: This release is considered a breaking change because installing on version
Initial release
[Unreleased]: https://github.com/taiki-e/install-action/compare/v2.69.11...HEAD
[Unreleased]: https://github.com/taiki-e/install-action/compare/v2.70.2...HEAD
[2.70.2]: https://github.com/taiki-e/install-action/compare/v2.70.1...v2.70.2
[2.70.1]: https://github.com/taiki-e/install-action/compare/v2.70.0...v2.70.1
[2.70.0]: https://github.com/taiki-e/install-action/compare/v2.69.14...v2.70.0
[2.69.14]: https://github.com/taiki-e/install-action/compare/v2.69.13...v2.69.14
[2.69.13]: https://github.com/taiki-e/install-action/compare/v2.69.12...v2.69.13
[2.69.12]: https://github.com/taiki-e/install-action/compare/v2.69.11...v2.69.12
[2.69.11]: https://github.com/taiki-e/install-action/compare/v2.69.10...v2.69.11
[2.69.10]: https://github.com/taiki-e/install-action/compare/v2.69.9...v2.69.10
[2.69.9]: https://github.com/taiki-e/install-action/compare/v2.69.8...v2.69.9

View File

@@ -179,7 +179,7 @@ download_and_extract() {
else
case "${url}" in
*.zip)
unzip -q tmp "${bin_in_archive#\./}"
unzip -q tmp
for tmp in "${bin_in_archive[@]}"; do
case "${tool}" in
editorconfig-checker) mv -- "${tmp}" "${bin_dir}/${tool}${exe}" ;;
@@ -763,7 +763,7 @@ for tool in "${tools[@]}"; do
;;
*)
# Handle aliases.
# NB: Update alias list in tools/publish.rs, tool input option in test-alias in .github/workflows/ci.yml,
# NB: Update alias list in .github/workflows/release.yml, tool input option in test-alias in .github/workflows/ci.yml,
# and match for alias for tools/codegen/src/tools-markdown.rs.
# TODO(codegen): auto-detect cases where crate name and tool name are different.
case "${tool}" in

View File

@@ -22,32 +22,32 @@
},
"license_markdown": "[GPL-3.0](https://github.com/cargo-bins/cargo-binstall/blob/HEAD/crates/bin/LICENSE)",
"latest": {
"version": "1.17.8"
"version": "1.17.9"
},
"1.17.8": {
"1.17.9": {
"x86_64_linux_musl": {
"etag": "0x8DE8715DB8A1417",
"hash": "1da1ef72448db667cc4ae6d48e37451087602c8c07dc61782a4a5e538303e015"
"etag": "0x8DE8D54CBD7C8ED",
"hash": "bdea3fd820b118576316bf69c8240f454857287717809e6ecef010faace901ff"
},
"x86_64_macos": {
"etag": "0x8DE8715E03D9720",
"hash": "db353e01b582c97382178db9b4dfe22d81109782e480a38f3db953e62f569952"
"etag": "0x8DE8D54D0C7EA49",
"hash": "1d4fbd74c15274a029dd92e19a0ead8e1831b6e6b60f0f5c3690ef517022c41c"
},
"x86_64_windows": {
"etag": "0x8DE8715DEAA171B",
"hash": "fef07560d4e391812091bb30c6ed1bd5289f74403a0c947b47b8a8c7a597b51b"
"etag": "0x8DE8D54CF270B9E",
"hash": "d17b413a19592af2cf57f9f742d49bef8837099e1407d73e79de5bc7834c4fd6"
},
"aarch64_linux_musl": {
"etag": "0x8DE8715E6784BD0",
"hash": "81d6245bd1a7a89e914d29af81d82280540e94927e61492a0fc359820cd97abb"
"etag": "0x8DE8D54D9B48785",
"hash": "89df253cc00a307209daee7648272bba4d8a342fce084d5922f6b3f4e4db0e25"
},
"aarch64_macos": {
"etag": "0x8DE8715EBEC4A3F",
"hash": "af87346fdb186f0a2333bc0a30cfddd6faa98b31145ef1bb19c284aedea65972"
"etag": "0x8DE8D54DF4E885F",
"hash": "021d537caa2071bbcd8ec50b210ea45af68a6983cca7780918b3603ef68d2585"
},
"aarch64_windows": {
"etag": "0x8DE8715EA179DDA",
"hash": "2270a5a7a8b3e85bd5fe32ac3fbd48cfd32d6f468a8c35499af8b65b806d271d"
"etag": "0x8DE8D54DD746155",
"hash": "37295aa1c3aed07bda2b757f613477c8ca2de1208ec360c7d00238b6886de780"
}
}
}

View File

@@ -20,10 +20,49 @@
},
"license_markdown": "[Apache-2.0](https://github.com/mitsuhiko/insta/blob/master/LICENSE)",
"latest": {
"version": "1.46.3"
"version": "1.47.1"
},
"1": {
"version": "1.46.3"
"version": "1.47.1"
},
"1.47": {
"version": "1.47.1"
},
"1.47.1": {
"x86_64_linux_musl": {
"etag": "0x8DE8D549F25E618",
"hash": "b5c162d25f477f0a7989edc5b82297a63c69d764c3c6f2839f12a546a00c188a"
},
"x86_64_macos": {
"etag": "0x8DE8D549EDE5832",
"hash": "3197c099ca857e36211b7b10d383404f305e036181ca2cb42495c8d08e4dcc86"
},
"x86_64_windows": {
"etag": "0x8DE8D549EF37620",
"hash": "7d6cad4a8768abc2bda8f0ea244f51ae077d426e6e7bc6561503876b4eba18e8"
},
"aarch64_macos": {
"etag": "0x8DE8D549ED08513",
"hash": "b92971f37be1e22401de1187ee842a7e15f936838bdce06fb9d3582dd538efa7"
}
},
"1.47.0": {
"x86_64_linux_musl": {
"etag": "0x8DE8B9FBE3D26E2",
"hash": "fcd8a57fb21e5446c12002c0f967e7630a9e4f317814427dbf35faff3797c1d9"
},
"x86_64_macos": {
"etag": "0x8DE8B9FBDBE4C61",
"hash": "55db1160ab8db370d3a03491a291f04e52837b4bea13b2919068a10700b085b2"
},
"x86_64_windows": {
"etag": "0x8DE8B9FBDFA9C5D",
"hash": "ecdab0fe43537a15ef6bd4628d91cddd3c26ddb3fd60f9c89d5d40904139649e"
},
"aarch64_macos": {
"etag": "0x8DE8B9FBDB8AD65",
"hash": "579f62ab41187c8494ca8572b4d0db51e0c9b9275064758999b27fc900c9c60c"
}
},
"1.46": {
"version": "1.46.3"

32
manifests/just.json generated
View File

@@ -22,13 +22,39 @@
},
"license_markdown": "[CC0-1.0](https://github.com/casey/just/blob/master/LICENSE)",
"latest": {
"version": "1.48.0"
"version": "1.48.1"
},
"1": {
"version": "1.48.0"
"version": "1.48.1"
},
"1.48": {
"version": "1.48.0"
"version": "1.48.1"
},
"1.48.1": {
"x86_64_linux_musl": {
"etag": "0x8DE8C6D748DA58F",
"hash": "9293e553ce401d1b524bf4e104918f72f268e3f9c6827e0055fe98d84a1b2522"
},
"x86_64_macos": {
"etag": "0x8DE8C6D697B40B5",
"hash": "4c3e9c880b8fc93d7fc24abfde3c36b0cc59f6e9f8b31f7175095700f64125a7"
},
"x86_64_windows": {
"etag": "0x8DE8C6DC96FB40D",
"hash": "368cd9ca827cba04d9e6fc00f7ad840773c4605b6f64b9f87bdb00325d351029"
},
"aarch64_linux_musl": {
"etag": "0x8DE8C6D791ED527",
"hash": "3308721b991cf88cf2b9bbb3b31ac40550ec61a0c9b6fc011564e25e87964030"
},
"aarch64_macos": {
"etag": "0x8DE8C6D73E04DFD",
"hash": "03a73339ff55bcf7411a3c940cdcb0a726d98134b87203c83a9008575434e2a8"
},
"aarch64_windows": {
"etag": "0x8DE8C6DB1FA1AAD",
"hash": "ed9cd54e46d65770bf0b79c051761b29f0b89a88e56e8cae4454ec7246c82160"
}
},
"1.48.0": {
"x86_64_linux_musl": {

32
manifests/mise.json generated
View File

@@ -28,13 +28,39 @@
},
"license_markdown": "[MIT](https://github.com/jdx/mise/blob/main/LICENSE)",
"latest": {
"version": "2026.3.16"
"version": "2026.3.17"
},
"2026": {
"version": "2026.3.16"
"version": "2026.3.17"
},
"2026.3": {
"version": "2026.3.16"
"version": "2026.3.17"
},
"2026.3.17": {
"x86_64_linux_musl": {
"etag": "0x8DE8BF1812CA605",
"hash": "f416a2d27f69173b22551429d2bc712c40fc3fb639112cf76ae817baae3772e2"
},
"x86_64_macos": {
"etag": "0x8DE8BF1834954DF",
"hash": "bd120908c1476f6f27ae27f4214bdbc3fb0e81b9671aaba720b994a217d28e39"
},
"x86_64_windows": {
"etag": "0x8DE8BF1841058BD",
"hash": "a5e0a77fe5ac6397d6bd3413b6c9b39ac06f24649a88eed526173062960f7b85"
},
"aarch64_linux_musl": {
"etag": "0x8DE8BF17E0B455B",
"hash": "7ef20440c3e1d9f0db69e57e68e6833a9cade44fd1e97384a279660e48091f97"
},
"aarch64_macos": {
"etag": "0x8DE8BF18293F06F",
"hash": "6d98cedb9c92bd7a1694c9efedc035288da87f6e19c79d15bf91449474c37ce9"
},
"aarch64_windows": {
"etag": "0x8DE8BF183D566EE",
"hash": "98772d1d68d23e8f1040c62501bcd0d136cf2db3b995a5e7b6f77aca93aef060"
}
},
"2026.3.16": {
"x86_64_linux_musl": {

56
manifests/tombi.json generated
View File

@@ -22,10 +22,62 @@
},
"license_markdown": "[MIT](https://github.com/tombi-toml/tombi/blob/main/LICENSE)",
"latest": {
"version": "0.9.9"
"version": "0.9.11"
},
"0.9": {
"version": "0.9.9"
"version": "0.9.11"
},
"0.9.11": {
"x86_64_linux_musl": {
"etag": "0x8DE8D9EC510FD7C",
"hash": "a26165a20198b7af772c1abafebac31fe70ea76de438cdc14975d451ef9282a3"
},
"x86_64_macos": {
"etag": "0x8DE8D9EC4ABF6BC",
"hash": "80c70ef17dc76a0f997d8284911a178f90d4c3d04354eaa653b5dd3e15efff44"
},
"x86_64_windows": {
"etag": "0x8DE8D9EC53C498A",
"hash": "f073c5aa5cfdf291023207a58390a4593b7774ccd8a49d12fdefa2d859285f95"
},
"aarch64_linux_musl": {
"etag": "0x8DE8D9EC4A89F22",
"hash": "1a4cdb63e5ab57d0eb12f170493a7902c3244572b6a3052ae894d06c082d4ddc"
},
"aarch64_macos": {
"etag": "0x8DE8D9EC4AC1DA5",
"hash": "1c3b3335f3feeda3f7676d90ffb6463ee2bca5a5393b1bbae76926e3fdb2b514"
},
"aarch64_windows": {
"etag": "0x8DE8D9EC4BA8C4E",
"hash": "85624e7e2f0bac43d8267c88a767afbb18ca338b72cf45c879046fc3a23a2e89"
}
},
"0.9.10": {
"x86_64_linux_musl": {
"etag": "0x8DE8CEDFE4FEBC7",
"hash": "eddad889a7194e6b993015475ccd6303edb06f076b632b3a1b134936e280b103"
},
"x86_64_macos": {
"etag": "0x8DE8CEDFECFAF7A",
"hash": "8421af429bec96ec09b621267d3ad505d202dc1ac8e3e5f2677dca0efa348395"
},
"x86_64_windows": {
"etag": "0x8DE8CEDFE5E3394",
"hash": "f6a722ef9f1a5d3656338cf45f88a35aebd29d6bf045b1dd2e91d0dcb356a92e"
},
"aarch64_linux_musl": {
"etag": "0x8DE8CEDFE539126",
"hash": "5373de8f10af1e626bbedc2beb46fbc7dd8bb3ccd73517b45108e165469e69e6"
},
"aarch64_macos": {
"etag": "0x8DE8CEDFE6E9BDE",
"hash": "1c7fcccf0c14d4c3189cfc405357f524b8db0ac7278bee434212f6c113070eb4"
},
"aarch64_windows": {
"etag": "0x8DE8CEDFED8CCF3",
"hash": "e3a5ce5bb2f4071974250b27dd8cc9df76c1feaa1be7c5a7e814191d9999311f"
}
},
"0.9.9": {
"x86_64_linux_musl": {

91
manifests/uv.json generated
View File

@@ -1,49 +1,116 @@
{
"rust_crate": null,
"rust_crate": "uv",
"template": {
"x86_64_linux_musl": {
"url": "https://github.com/astral-sh/uv/releases/download/${version}/uv-x86_64-unknown-linux-musl.tar.gz",
"bin": "uv-x86_64-unknown-linux-musl/uv"
"bin": [
"uv-x86_64-unknown-linux-musl/uv",
"uv-x86_64-unknown-linux-musl/uvx"
]
},
"x86_64_macos": {
"url": "https://github.com/astral-sh/uv/releases/download/${version}/uv-x86_64-apple-darwin.tar.gz",
"bin": "uv-x86_64-apple-darwin/uv"
"bin": [
"uv-x86_64-apple-darwin/uv",
"uv-x86_64-apple-darwin/uvx"
]
},
"x86_64_windows": {
"url": "https://github.com/astral-sh/uv/releases/download/${version}/uv-x86_64-pc-windows-msvc.zip",
"bin": "uv.exe"
"bin": [
"uv.exe",
"uvw.exe",
"uvx.exe"
]
},
"aarch64_linux_musl": {
"url": "https://github.com/astral-sh/uv/releases/download/${version}/uv-aarch64-unknown-linux-musl.tar.gz",
"bin": "uv-aarch64-unknown-linux-musl/uv"
"bin": [
"uv-aarch64-unknown-linux-musl/uv",
"uv-aarch64-unknown-linux-musl/uvx"
]
},
"aarch64_macos": {
"url": "https://github.com/astral-sh/uv/releases/download/${version}/uv-aarch64-apple-darwin.tar.gz",
"bin": "uv-aarch64-apple-darwin/uv"
"bin": [
"uv-aarch64-apple-darwin/uv",
"uv-aarch64-apple-darwin/uvx"
]
},
"aarch64_windows": {
"url": "https://github.com/astral-sh/uv/releases/download/${version}/uv-aarch64-pc-windows-msvc.zip",
"bin": "uv.exe"
"bin": [
"uv.exe",
"uvw.exe",
"uvx.exe"
]
},
"powerpc64le_linux_gnu": {
"url": "https://github.com/astral-sh/uv/releases/download/${version}/uv-powerpc64le-unknown-linux-gnu.tar.gz",
"bin": "uv-powerpc64le-unknown-linux-gnu/uv"
"bin": [
"uv-powerpc64le-unknown-linux-gnu/uv",
"uv-powerpc64le-unknown-linux-gnu/uvx"
]
},
"riscv64_linux_gnu": {
"url": "https://github.com/astral-sh/uv/releases/download/${version}/uv-riscv64gc-unknown-linux-gnu.tar.gz",
"bin": "uv-riscv64gc-unknown-linux-gnu/uv"
"bin": [
"uv-riscv64gc-unknown-linux-gnu/uv",
"uv-riscv64gc-unknown-linux-gnu/uvx"
]
},
"s390x_linux_gnu": {
"url": "https://github.com/astral-sh/uv/releases/download/${version}/uv-s390x-unknown-linux-gnu.tar.gz",
"bin": "uv-s390x-unknown-linux-gnu/uv"
"bin": [
"uv-s390x-unknown-linux-gnu/uv",
"uv-s390x-unknown-linux-gnu/uvx"
]
}
},
"license_markdown": "[Apache-2.0](https://github.com/astral-sh/uv/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/astral-sh/uv/blob/main/LICENSE-MIT)",
"latest": {
"version": "0.11.1"
"version": "0.11.2"
},
"0.11": {
"version": "0.11.1"
"version": "0.11.2"
},
"0.11.2": {
"x86_64_linux_musl": {
"etag": "0x8DE8B7F323A25EC",
"hash": "4700d9fc75734247587deb3e25dd2c6c24f4ac69e8fe91d6acad4a6013115c06"
},
"x86_64_macos": {
"etag": "0x8DE8B7F31C027DB",
"hash": "a9c3653245031304c50dd60ac0301bf6c112e12c38c32302a71d4fa6a63ba2cb"
},
"x86_64_windows": {
"etag": "0x8DE8B7F323790C2",
"hash": "171b7ccda1bbd562da6babeffcf533a1c6cc7862cf998da826e1db534fc43e48"
},
"aarch64_linux_musl": {
"etag": "0x8DE8B7F2F886D82",
"hash": "275d91dd1f1955136591e7ec5e1fa21e84d0d37ead7da7c35c3683df748d9855"
},
"aarch64_macos": {
"etag": "0x8DE8B7F2EE6C8C0",
"hash": "4beaa9550f93ef7f0fc02f7c28c9c48cd61fe30db00f5ac8947e0a425c3fb282"
},
"aarch64_windows": {
"etag": "0x8DE8B7F2F211F2C",
"hash": "ffdded8338205f53727b51d404563a5ac8eaa9aea53279a7b7c42177e11d478c"
},
"powerpc64le_linux_gnu": {
"etag": "0x8DE8B7F30FB6B17",
"hash": "3f3a50e99364efc8ff7add10e79757a2b8458700a38180ec5f313524481b9fbc"
},
"riscv64_linux_gnu": {
"etag": "0x8DE8B7F313C97AB",
"hash": "e56a93f0ff21d6908461a6ecbf465beae19ae22719f900284abb7680bd07ec41"
},
"s390x_linux_gnu": {
"etag": "0x8DE8B7F3185D17B",
"hash": "42ebe40775f2a77a514fa47399fde86473bf35bd33b6896c6410a0309fc4d205"
}
},
"0.11.1": {
"x86_64_linux_musl": {

30
manifests/vacuum.json generated
View File

@@ -22,10 +22,36 @@
},
"license_markdown": "[MIT](https://github.com/daveshanley/vacuum/blob/main/LICENSE)",
"latest": {
"version": "0.25.2"
"version": "0.25.3"
},
"0.25": {
"version": "0.25.2"
"version": "0.25.3"
},
"0.25.3": {
"x86_64_linux_musl": {
"etag": "0x8DE8DEA35C78445",
"hash": "dbcd9ea50b0ac74c181d905a1d162e2457f8bbc619d0f8e974ff3b38dcd23384"
},
"x86_64_macos": {
"etag": "0x8DE8DEA3675C50B",
"hash": "450964b9f2cbe9b63403bfe7b07cd2b3fb16eded4668c9e5749b9b469d288290"
},
"x86_64_windows": {
"etag": "0x8DE8DEA35DB442D",
"hash": "00a1a230fe2dbd45ee11e579d7d8d00daf83fa83a083fd66044514fdfd73e993"
},
"aarch64_linux_musl": {
"etag": "0x8DE8DEA35C7AB2A",
"hash": "a2db87faa3e04c2e0f8b5dd2c9162a33829eda0a1196ed49e3562a1a9434d3e0"
},
"aarch64_macos": {
"etag": "0x8DE8DEA367A7AB1",
"hash": "9ab96a00628c69c6aa4a62fcafb6d8cb8de792db94adb53c00344d19ff0c4af6"
},
"aarch64_windows": {
"etag": "0x8DE8DEA36512824",
"hash": "ed70ee1e9af46ba69c79b8d4bddea59c0bcc37613f92d12a77fe327f4832089d"
}
},
"0.25.2": {
"x86_64_linux_musl": {

View File

@@ -44,10 +44,32 @@
},
"license_markdown": "[MIT](https://github.com/wasm-bindgen/wasm-bindgen/blob/main/LICENSE-MIT) OR [Apache-2.0](https://github.com/wasm-bindgen/wasm-bindgen/blob/main/LICENSE-APACHE)",
"latest": {
"version": "0.2.114"
"version": "0.2.115"
},
"0.2": {
"version": "0.2.114"
"version": "0.2.115"
},
"0.2.115": {
"x86_64_linux_musl": {
"etag": "0x8DE8C5096D0CA3A",
"hash": "494df943e4e30a48ea2832e5a299e0e0f52d23f1e037b052cf401f467b820316"
},
"x86_64_macos": {
"etag": "0x8DE8C5096BDCCC1",
"hash": "bc9ba4f200a7a7132b61a28d0fc93692caeb880c1547fb4369f18baa3285eb91"
},
"x86_64_windows": {
"etag": "0x8DE8C5096A81344",
"hash": "370ebd36ffc110346956407793064e3d0b5e77c83ca69ef127a286a665d13636"
},
"aarch64_linux_gnu": {
"etag": "0x8DE8C5096CD7296",
"hash": "f4cc35232554e04d72b61158bcd314ef2b1aa28e7c45d7aad8e76eb01b42c299"
},
"aarch64_macos": {
"etag": "0x8DE8C5096F6C51A",
"hash": "1184392b5468ca63b65f75f95f38110005aa168f6d9c39ca70c0585044d6508b"
}
},
"0.2.114": {
"x86_64_linux_musl": {

View File

@@ -2,6 +2,7 @@
"repository": "https://github.com/astral-sh/uv",
"license_markdown": "[Apache-2.0](https://github.com/astral-sh/uv/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/astral-sh/uv/blob/main/LICENSE-MIT)",
"tag_prefix": "",
"rust_crate": "${package}",
"version_range": ">= 0.8.16",
"signing": {
"version_range": ">= 0.9.13",
@@ -11,42 +12,26 @@
}
}
},
"asset_name": "${package}-${rust_target}.tar.gz",
"bin": [
"${package}-${rust_target}/${package}${exe}",
"${package}-${rust_target}/${package}x${exe}"
],
"platform": {
"x86_64_linux_musl": {
"asset_name": "${package}-x86_64-unknown-linux-musl.tar.gz",
"bin": "${package}-x86_64-unknown-linux-musl/${package}${exe}"
},
"x86_64_macos": {
"asset_name": "${package}-x86_64-apple-darwin.tar.gz",
"bin": "${package}-x86_64-apple-darwin/${package}${exe}"
},
"x86_64_linux_musl": {},
"x86_64_macos": {},
"x86_64_windows": {
"asset_name": "${package}-x86_64-pc-windows-msvc.zip",
"bin": "${package}${exe}"
},
"aarch64_linux_musl": {
"asset_name": "${package}-aarch64-unknown-linux-musl.tar.gz",
"bin": "${package}-aarch64-unknown-linux-musl/${package}${exe}"
},
"aarch64_macos": {
"asset_name": "${package}-aarch64-apple-darwin.tar.gz",
"bin": "${package}-aarch64-apple-darwin/${package}${exe}"
"asset_name": "${package}-${rust_target}.zip",
"bin": ["${package}${exe}", "${package}w${exe}", "${package}x${exe}"]
},
"aarch64_linux_musl": {},
"aarch64_macos": {},
"aarch64_windows": {
"asset_name": "${package}-aarch64-pc-windows-msvc.zip",
"bin": "${package}${exe}"
"asset_name": "${package}-${rust_target}.zip",
"bin": ["${package}${exe}", "${package}w${exe}", "${package}x${exe}"]
},
"powerpc64le_linux_gnu": {
"asset_name": "${package}-powerpc64le-unknown-linux-gnu.tar.gz",
"bin": "${package}-powerpc64le-unknown-linux-gnu/${package}${exe}"
},
"riscv64_linux_gnu": {
"asset_name": "${package}-riscv64gc-unknown-linux-gnu.tar.gz",
"bin": "${package}-riscv64gc-unknown-linux-gnu/${package}${exe}"
},
"s390x_linux_gnu": {
"asset_name": "${package}-s390x-unknown-linux-gnu.tar.gz",
"bin": "${package}-s390x-unknown-linux-gnu/${package}${exe}"
}
"powerpc64le_linux_gnu": {},
"riscv64_linux_gnu": {},
"s390x_linux_gnu": {}
}
}

View File

@@ -7,13 +7,13 @@ trap -- 'printf >&2 "%s\n" "${0##*/}: trapped SIGINT"; exit 1' SIGINT
cd -- "$(dirname -- "$0")"/..
# USAGE:
# GH_TOKEN=$(gh auth token) ./tools/tidy.sh
# GITHUB_TOKEN=$(gh auth token) ./tools/tidy.sh
#
# Note: This script requires the following tools:
# - git 1.8+
# - jq 1.6+
# - npm (node 18+)
# - python 3.6+, pipx
# - python 3.6+, uv
# - shfmt
# - shellcheck
# - zizmor
@@ -86,11 +86,6 @@ check_config() {
check_install() {
for tool in "$@"; do
if ! type -P "${tool}" >/dev/null; then
if [[ "${tool}" == 'python3' ]]; then
if type -P python >/dev/null; then
continue
fi
fi
error "'${tool}' is required to run this check"
return 1
fi
@@ -132,12 +127,8 @@ EOF
exit 1
fi
py_suffix=''
if type -P python3 >/dev/null; then
py_suffix=3
fi
yq() { pipx run yq "$@"; }
tomlq() { pipx run --spec yq tomlq "$@"; }
yq() { uvx yq "$@"; }
tomlq() { uvx --from yq tomlq "$@"; }
case "$(uname -s)" in
Linux)
if [[ "$(uname -o)" == 'Android' ]]; then
@@ -190,8 +181,8 @@ case "$(uname -s)" in
else
jq() { command jq "$@" | tr -d '\r'; }
fi
yq() { pipx run yq "$@" | tr -d '\r'; }
tomlq() { pipx run --spec yq tomlq "$@" | tr -d '\r'; }
yq() { uvx yq "$@" | tr -d '\r'; }
tomlq() { uvx --from yq tomlq "$@" | tr -d '\r'; }
fi
fi
;;
@@ -248,7 +239,7 @@ if [[ ${#rust_files[@]} -gt 0 ]]; then
info "checking Rust code style"
check_config .rustfmt.toml "; consider adding with reference to https://github.com/taiki-e/cargo-hack/blob/HEAD/.rustfmt.toml"
check_config .clippy.toml "; consider adding with reference to https://github.com/taiki-e/cargo-hack/blob/HEAD/.clippy.toml"
if check_install cargo jq pipx; then
if check_install cargo jq uv; then
# `cargo fmt` cannot recognize files not included in the current workspace and modules
# defined inside macros, so run rustfmt directly.
# We need to use nightly rustfmt because we use the unstable formatting options of rustfmt.
@@ -700,7 +691,7 @@ elif check_install shellcheck; then
# Exclude SC2096 due to the way the temporary script is created.
shellcheck_exclude=SC2096
info "running \`shellcheck --exclude ${shellcheck_exclude}\` for scripts in \`\$(git ls-files '*Dockerfile*')\`"
if check_install jq python3 parse-dockerfile; then
if check_install jq parse-dockerfile; then
shellcheck_for_dockerfile() {
local text=$1
local shell=$2
@@ -833,7 +824,7 @@ elif check_install shellcheck; then
# Exclude SC2096 due to the way the temporary script is created.
shellcheck_exclude=SC2086,SC2096,SC2129
info "running \`shellcheck --exclude ${shellcheck_exclude}\` for scripts in .github/workflows/*.yml and **/action.yml"
if check_install jq python3 pipx; then
if check_install jq uv; then
shellcheck_for_gha() {
local text=$1
local shell=$2
@@ -846,16 +837,8 @@ elif check_install shellcheck; then
*) return ;;
esac
text="#!/usr/bin/env ${shell%' {0}'}"$'\n'"${text}"
# Use python because sed doesn't support .*?.
text=$(
"python${py_suffix}" - <<EOF
import re
text = re.sub(r"\\\${{.*?}}", "\${__GHA_SYNTAX__}", r'''${text}''')
print(text)
EOF
)
case "${ostype}" in
windows) text=${text//$'\r'/} ;; # Python print emits \r\n.
windows) text=${text//$'\r'/} ;; # Parse error on git bash/msys2 bash.
esac
local color=auto
if [[ -t 1 ]] || [[ -n "${GITHUB_ACTIONS:-}" ]]; then
@@ -988,11 +971,12 @@ if [[ ${#zizmor_targets[@]} -gt 0 ]]; then
if [[ "${ostype}" =~ ^(netbsd|openbsd|dragonfly|illumos|solaris)$ ]] && [[ -n "${CI:-}" ]] && ! type -P zizmor >/dev/null; then
warn "this check is skipped on NetBSD/OpenBSD/Dragonfly/illumos/Solaris due to installing zizmor is hard on these platform"
elif check_install zizmor; then
# zizmor can also be used via pipx, but old version will be installed if glibc version is old.
# zizmor can also be used via uvx, but old version will be installed if glibc version is old.
# Do not use `zizmor .` here because it also attempts to check submodules.
IFS=' '
info "running \`zizmor -q ${zizmor_targets[*]}\`"
info "running \`zizmor -q --pedantic ${zizmor_targets[*]}\`"
IFS=$'\n\t'
zizmor -q "${zizmor_targets[@]}"
zizmor -q --pedantic "${zizmor_targets[@]}"
fi
fi
printf '\n'
@@ -1045,7 +1029,7 @@ fi
if [[ -f .cspell.json ]]; then
info "spell checking"
project_dictionary=.github/.cspell/project-dictionary.txt
if check_install npm jq pipx; then
if check_install npm jq uv; then
has_rust=''
if [[ -n "$(ls_files '*Cargo.toml')" ]]; then
has_rust=1