mirror of
https://github.com/taiki-e/install-action.git
synced 2026-05-05 04:30:28 +00:00
Compare commits
39 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
aeb83835c3 | ||
|
|
7ea35f098a | ||
|
|
18aca711fe | ||
|
|
b62b50877f | ||
|
|
11569735dc | ||
|
|
07924c7415 | ||
|
|
fbb8be9fc5 | ||
|
|
ca67a3acf1 | ||
|
|
bbe1b9d5e1 | ||
|
|
a70acaa822 | ||
|
|
711e1c3275 | ||
|
|
6f6e822f33 | ||
|
|
a142873b76 | ||
|
|
ff1c16dbcb | ||
|
|
8966c78b02 | ||
|
|
c2126fb235 | ||
|
|
57f2d4f754 | ||
|
|
4702276cfb | ||
|
|
9908d1d32f | ||
|
|
4976db3862 | ||
|
|
027d3566fa | ||
|
|
7fe0d47d46 | ||
|
|
72fab49619 | ||
|
|
db5fb34fa7 | ||
|
|
095ffb3a38 | ||
|
|
4d6d7ab8c9 | ||
|
|
9f05712f99 | ||
|
|
fea765a776 | ||
|
|
b06c9cba54 | ||
|
|
b5fddbb536 | ||
|
|
5dab223281 | ||
|
|
5bdd194353 | ||
|
|
ef16a20345 | ||
|
|
e565ba433e | ||
|
|
9d6a9dded6 | ||
|
|
bdddcdcc79 | ||
|
|
9c6db3bb61 | ||
|
|
71d23d4987 | ||
|
|
9bbb5bc118 |
2
.github/dependabot.yml
vendored
2
.github/dependabot.yml
vendored
@@ -15,7 +15,7 @@ updates:
|
|||||||
- package-ecosystem: github-actions
|
- package-ecosystem: github-actions
|
||||||
directory: /
|
directory: /
|
||||||
schedule:
|
schedule:
|
||||||
interval: weekly
|
interval: monthly
|
||||||
cooldown:
|
cooldown:
|
||||||
default-days: 14
|
default-days: 14
|
||||||
commit-message:
|
commit-message:
|
||||||
|
|||||||
29
.github/workflows/ci.yml
vendored
29
.github/workflows/ci.yml
vendored
@@ -1,7 +1,6 @@
|
|||||||
name: CI
|
name: CI
|
||||||
|
|
||||||
permissions:
|
permissions: {}
|
||||||
contents: read
|
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
@@ -33,20 +32,20 @@ concurrency:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
miri:
|
miri:
|
||||||
uses: taiki-e/github-actions/.github/workflows/miri.yml@3c1cac16ef654d1febb66f21f328fa167f0d2fef # main
|
uses: taiki-e/github-actions/.github/workflows/miri.yml@75415970465917c31d702710acd9c9248b9af314 # main
|
||||||
with:
|
with:
|
||||||
# NB: sync with test job's --exclude option
|
# NB: sync with test job's --exclude option
|
||||||
args: --exclude install-action-internal-codegen
|
args: --exclude install-action-internal-codegen
|
||||||
msrv:
|
msrv:
|
||||||
uses: taiki-e/github-actions/.github/workflows/msrv.yml@3c1cac16ef654d1febb66f21f328fa167f0d2fef # main
|
uses: taiki-e/github-actions/.github/workflows/msrv.yml@75415970465917c31d702710acd9c9248b9af314 # main
|
||||||
test-manifest-schema:
|
test-manifest-schema:
|
||||||
uses: taiki-e/github-actions/.github/workflows/test.yml@3c1cac16ef654d1febb66f21f328fa167f0d2fef # main
|
uses: taiki-e/github-actions/.github/workflows/test.yml@75415970465917c31d702710acd9c9248b9af314 # main
|
||||||
with:
|
with:
|
||||||
# NB: sync with miri job's --exclude option
|
# NB: sync with miri job's --exclude option
|
||||||
test-args: --exclude install-action-internal-codegen
|
test-args: --exclude install-action-internal-codegen
|
||||||
no-std: false
|
no-std: false
|
||||||
tidy:
|
tidy:
|
||||||
uses: taiki-e/github-actions/.github/workflows/tidy.yml@3c1cac16ef654d1febb66f21f328fa167f0d2fef # main
|
uses: taiki-e/github-actions/.github/workflows/tidy.yml@75415970465917c31d702710acd9c9248b9af314 # main
|
||||||
permissions:
|
permissions:
|
||||||
contents: write # for creating branch for pr
|
contents: write # for creating branch for pr
|
||||||
pull-requests: write # unused (used in `codegen-automerge: true` case)
|
pull-requests: write # unused (used in `codegen-automerge: true` case)
|
||||||
@@ -122,22 +121,22 @@ jobs:
|
|||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
# Test all shells listed in https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsshell
|
# Test all shells listed in https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsshell
|
||||||
- name: Test bash
|
- name: Test bash
|
||||||
run: just --version && shfmt --version && protoc --version
|
run: just --version && shfmt --version && protoc --version && rustc --version && cargo --version && rustup --version
|
||||||
shell: bash
|
shell: bash
|
||||||
- name: Test sh
|
- name: Test sh
|
||||||
run: just --version && shfmt --version && protoc --version
|
run: just --version && shfmt --version && protoc --version && rustc --version && cargo --version && rustup --version
|
||||||
shell: sh
|
shell: sh
|
||||||
if: startsWith(matrix.os, 'ubuntu') || startsWith(matrix.os, 'macos')
|
if: startsWith(matrix.os, 'ubuntu') || startsWith(matrix.os, 'macos')
|
||||||
- name: Test pwsh
|
- name: Test pwsh
|
||||||
run: just --version; shfmt --version; protoc --version
|
run: just --version; shfmt --version; protoc --version; rustc --version; cargo --version; rustup --version
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
if: matrix.os != 'ubuntu-slim'
|
if: matrix.os != 'ubuntu-slim'
|
||||||
- name: Test powershell
|
- name: Test powershell
|
||||||
run: just --version; shfmt --version; protoc --version
|
run: just --version; shfmt --version; protoc --version; rustc --version; cargo --version; rustup --version
|
||||||
shell: powershell
|
shell: powershell
|
||||||
if: startsWith(matrix.os, 'windows')
|
if: startsWith(matrix.os, 'windows')
|
||||||
- name: Test cmd
|
- name: Test cmd
|
||||||
run: just --version & shfmt --version & protoc --version
|
run: just --version & shfmt --version & protoc --version & rustc --version & cargo --version & rustup --version
|
||||||
shell: cmd # zizmor: ignore[misfeature] used for compatibility testing
|
shell: cmd # zizmor: ignore[misfeature] used for compatibility testing
|
||||||
if: startsWith(matrix.os, 'windows')
|
if: startsWith(matrix.os, 'windows')
|
||||||
# We use the version output to check the version of cargo-binstall, but they
|
# We use the version output to check the version of cargo-binstall, but they
|
||||||
@@ -151,7 +150,7 @@ jobs:
|
|||||||
if: matrix.bash != 'cygwin' && matrix.os != 'windows-11-arm'
|
if: matrix.bash != 'cygwin' && matrix.os != 'windows-11-arm'
|
||||||
|
|
||||||
test-alias:
|
test-alias:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
timeout-minutes: 60
|
timeout-minutes: 60
|
||||||
steps:
|
steps:
|
||||||
- uses: taiki-e/checkout-action@7d1e50e93dc4fb3bba58f85018fadf77898aee8b # v1.4.2
|
- uses: taiki-e/checkout-action@7d1e50e93dc4fb3bba58f85018fadf77898aee8b # v1.4.2
|
||||||
@@ -255,7 +254,7 @@ jobs:
|
|||||||
- alpine:3.22 # musl 1.2.5
|
- alpine:3.22 # musl 1.2.5
|
||||||
- alpine:3.23 # musl 1.2.5
|
- alpine:3.23 # musl 1.2.5
|
||||||
# - openwrt/rootfs:x86-64-openwrt-24.10 # musl 1.2.5
|
# - openwrt/rootfs:x86-64-openwrt-24.10 # musl 1.2.5
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
timeout-minutes: 60
|
timeout-minutes: 60
|
||||||
container: ${{ matrix.container }}
|
container: ${{ matrix.container }}
|
||||||
steps:
|
steps:
|
||||||
@@ -301,6 +300,10 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
CONTAINER: ${{ matrix.container }}
|
CONTAINER: ${{ matrix.container }}
|
||||||
if: startsWith(matrix.container, 'centos')
|
if: startsWith(matrix.container, 'centos')
|
||||||
|
# gcc for rustc
|
||||||
|
- run: apk --no-cache add gcc
|
||||||
|
shell: sh
|
||||||
|
if: startsWith(matrix.container, 'alpine')
|
||||||
- uses: taiki-e/checkout-action@7d1e50e93dc4fb3bba58f85018fadf77898aee8b # v1.4.2
|
- uses: taiki-e/checkout-action@7d1e50e93dc4fb3bba58f85018fadf77898aee8b # v1.4.2
|
||||||
# cross attempts to install rust-src when Cargo.toml is available even if `cross --version`
|
# cross attempts to install rust-src when Cargo.toml is available even if `cross --version`
|
||||||
- run: rm -- Cargo.toml
|
- run: rm -- Cargo.toml
|
||||||
|
|||||||
6
.github/workflows/manifest.yml
vendored
6
.github/workflows/manifest.yml
vendored
@@ -1,7 +1,6 @@
|
|||||||
name: Manifest
|
name: Manifest
|
||||||
|
|
||||||
permissions:
|
permissions: {}
|
||||||
contents: read
|
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
@@ -33,7 +32,7 @@ concurrency:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
manifest:
|
manifest:
|
||||||
uses: taiki-e/github-actions/.github/workflows/gen.yml@3c1cac16ef654d1febb66f21f328fa167f0d2fef # main
|
uses: taiki-e/github-actions/.github/workflows/gen.yml@a6df8c9ea0038c730f138f0f849d692cf387ea4e # main
|
||||||
permissions:
|
permissions:
|
||||||
contents: write # for creating branch for pr
|
contents: write # for creating branch for pr
|
||||||
pull-requests: write # for gh pr review --approve
|
pull-requests: write # for gh pr review --approve
|
||||||
@@ -47,3 +46,4 @@ jobs:
|
|||||||
automerge: true
|
automerge: true
|
||||||
install-rust: true
|
install-rust: true
|
||||||
install-cosign: true
|
install-cosign: true
|
||||||
|
install-parse-changelog: true
|
||||||
|
|||||||
39
.github/workflows/release.yml
vendored
39
.github/workflows/release.yml
vendored
@@ -2,8 +2,7 @@ name: Release
|
|||||||
|
|
||||||
# Adapted from https://github.com/taiki-e/github-actions/blob/HEAD/.github/workflows/action-release.yml.
|
# Adapted from https://github.com/taiki-e/github-actions/blob/HEAD/.github/workflows/action-release.yml.
|
||||||
|
|
||||||
permissions:
|
permissions: {}
|
||||||
contents: read
|
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
@@ -26,7 +25,7 @@ on:
|
|||||||
|
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
shell: bash --noprofile --norc -CeEuxo pipefail {0}
|
shell: bash --noprofile --norc -CeEuo pipefail {0}
|
||||||
|
|
||||||
concurrency:
|
concurrency:
|
||||||
group: ${{ github.workflow }}
|
group: ${{ github.workflow }}
|
||||||
@@ -35,17 +34,16 @@ concurrency:
|
|||||||
jobs:
|
jobs:
|
||||||
prepare:
|
prepare:
|
||||||
if: github.repository_owner == 'taiki-e' && inputs.target == 'install-action'
|
if: github.repository_owner == 'taiki-e' && inputs.target == 'install-action'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
timeout-minutes: 60
|
timeout-minutes: 60
|
||||||
steps:
|
steps:
|
||||||
- uses: taiki-e/checkout-action@7d1e50e93dc4fb3bba58f85018fadf77898aee8b # v1.4.2
|
- uses: taiki-e/checkout-action@7d1e50e93dc4fb3bba58f85018fadf77898aee8b # v1.4.2
|
||||||
- uses: taiki-e/install-action@b8be7f5e140177087325943c4a8e169d01c59b3d # v2.75.3
|
- uses: taiki-e/install-action@58e862542551f667fa44c8a2a4a1d64ad477c96a # v2.75.17
|
||||||
with:
|
with:
|
||||||
tool: parse-changelog
|
tool: parse-changelog
|
||||||
fallback: none
|
fallback: none
|
||||||
- id: check
|
- id: check
|
||||||
run: |
|
run: |
|
||||||
set +x
|
|
||||||
IFS=$'\n\t'
|
IFS=$'\n\t'
|
||||||
trap -- 's=$?; printf >&2 "%s\n" "${0##*/}:${LINENO}: \`${BASH_COMMAND}\` exit with ${s}"; exit ${s}' ERR
|
trap -- 's=$?; printf >&2 "%s\n" "${0##*/}:${LINENO}: \`${BASH_COMMAND}\` exit with ${s}"; exit ${s}' ERR
|
||||||
retry() {
|
retry() {
|
||||||
@@ -70,23 +68,23 @@ jobs:
|
|||||||
|
|
||||||
# shellcheck disable=SC2153
|
# shellcheck disable=SC2153
|
||||||
version="${VERSION}"
|
version="${VERSION}"
|
||||||
printf '%s\n' "version(input): ${version}"
|
printf 'version(input): %s\n' "${version}"
|
||||||
# shellcheck disable=SC2153
|
# shellcheck disable=SC2153
|
||||||
tag_prefix="${TAG_PREFIX}"
|
tag_prefix="${TAG_PREFIX}"
|
||||||
printf '%s\n' "tag_prefix: ${tag_prefix}"
|
printf 'tag_prefix: %s\n' "${tag_prefix}"
|
||||||
# shellcheck disable=SC2153
|
# shellcheck disable=SC2153
|
||||||
changelog="${CHANGELOG}"
|
changelog="${CHANGELOG}"
|
||||||
printf '%s\n' "changelog: ${changelog}"
|
printf 'changelog: %s\n' "${changelog}"
|
||||||
|
|
||||||
# Get the current date.
|
# Get the current date.
|
||||||
release_date=$(date -u '+%Y-%m-%d')
|
release_date=$(date -u '+%Y-%m-%d')
|
||||||
printf '%s\n' "release-date: ${release_date}"
|
printf 'release-date: %s\n' "${release_date}"
|
||||||
printf '%s\n' "release-date=${release_date}" >>"${GITHUB_OUTPUT}"
|
printf 'release-date=%s\n' "${release_date}" >>"${GITHUB_OUTPUT}"
|
||||||
|
|
||||||
# Get the current revision.
|
# Get the current revision.
|
||||||
rev=$(git rev-parse HEAD)
|
rev=$(git rev-parse HEAD)
|
||||||
printf '%s\n' "rev: ${rev}"
|
printf 'rev: %s\n' "${rev}"
|
||||||
printf '%s\n' "rev=${rev}" >>"${GITHUB_OUTPUT}"
|
printf 'rev=%s\n' "${rev}" >>"${GITHUB_OUTPUT}"
|
||||||
|
|
||||||
prev_version=$(parse-changelog --title-no-link "${changelog}" | cut -d' ' -f1)
|
prev_version=$(parse-changelog --title-no-link "${changelog}" | cut -d' ' -f1)
|
||||||
|
|
||||||
@@ -111,11 +109,11 @@ jobs:
|
|||||||
if [[ ! "${version}" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z\.-]+)?(\+[0-9A-Za-z\.-]+)?$ ]]; then
|
if [[ ! "${version}" =~ ^[0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z\.-]+)?(\+[0-9A-Za-z\.-]+)?$ ]]; then
|
||||||
bail "invalid version format '${version}'"
|
bail "invalid version format '${version}'"
|
||||||
fi
|
fi
|
||||||
printf '%s\n' "version: ${version}"
|
printf 'version: %s\n' "${version}"
|
||||||
printf '%s\n' "version=${version}" >>"${GITHUB_OUTPUT}"
|
printf 'version=%s\n' "${version}" >>"${GITHUB_OUTPUT}"
|
||||||
tag="${tag_prefix}${version}"
|
tag="${tag_prefix}${version}"
|
||||||
printf '%s\n' "tag: ${tag}"
|
printf 'tag: %s\n' "${tag}"
|
||||||
printf '%s\n' "tag=${tag}" >>"${GITHUB_OUTPUT}"
|
printf 'tag=%s\n' "${tag}" >>"${GITHUB_OUTPUT}"
|
||||||
|
|
||||||
# Make sure the same release has not been created in the past.
|
# Make sure the same release has not been created in the past.
|
||||||
if gh release view "${tag}" &>/dev/null; then
|
if gh release view "${tag}" &>/dev/null; then
|
||||||
@@ -199,7 +197,7 @@ jobs:
|
|||||||
release:
|
release:
|
||||||
if: github.repository_owner == 'taiki-e' && inputs.target == 'install-action'
|
if: github.repository_owner == 'taiki-e' && inputs.target == 'install-action'
|
||||||
needs: prepare
|
needs: prepare
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-24.04
|
||||||
timeout-minutes: 60
|
timeout-minutes: 60
|
||||||
environment:
|
environment:
|
||||||
name: release
|
name: release
|
||||||
@@ -208,7 +206,7 @@ jobs:
|
|||||||
contents: write # for taiki-e/create-gh-release-action
|
contents: write # for taiki-e/create-gh-release-action
|
||||||
steps:
|
steps:
|
||||||
- uses: taiki-e/checkout-action@7d1e50e93dc4fb3bba58f85018fadf77898aee8b # v1.4.2
|
- uses: taiki-e/checkout-action@7d1e50e93dc4fb3bba58f85018fadf77898aee8b # v1.4.2
|
||||||
- uses: taiki-e/install-action@b8be7f5e140177087325943c4a8e169d01c59b3d # v2.75.3
|
- uses: taiki-e/install-action@58e862542551f667fa44c8a2a4a1d64ad477c96a # v2.75.17
|
||||||
with:
|
with:
|
||||||
tool: parse-changelog
|
tool: parse-changelog
|
||||||
fallback: none
|
fallback: none
|
||||||
@@ -220,7 +218,6 @@ jobs:
|
|||||||
- name: Create and push release commit and tag
|
- name: Create and push release commit and tag
|
||||||
id: push
|
id: push
|
||||||
run: |
|
run: |
|
||||||
set +x
|
|
||||||
IFS=$'\n\t'
|
IFS=$'\n\t'
|
||||||
trap -- 's=$?; printf >&2 "%s\n" "${0##*/}:${LINENO}: \`${BASH_COMMAND}\` exit with ${s}"; exit ${s}' ERR
|
trap -- 's=$?; printf >&2 "%s\n" "${0##*/}:${LINENO}: \`${BASH_COMMAND}\` exit with ${s}"; exit ${s}' ERR
|
||||||
retry() {
|
retry() {
|
||||||
@@ -436,7 +433,7 @@ jobs:
|
|||||||
|
|
||||||
release-manifest-schema:
|
release-manifest-schema:
|
||||||
if: github.repository_owner == 'taiki-e' && inputs.target == 'install-action-manifest-schema'
|
if: github.repository_owner == 'taiki-e' && inputs.target == 'install-action-manifest-schema'
|
||||||
uses: taiki-e/github-actions/.github/workflows/rust-release.yml@3c1cac16ef654d1febb66f21f328fa167f0d2fef # main
|
uses: taiki-e/github-actions/.github/workflows/rust-release.yml@75415970465917c31d702710acd9c9248b9af314 # main
|
||||||
permissions:
|
permissions:
|
||||||
contents: write # for taiki-e/create-gh-release-action
|
contents: write # for taiki-e/create-gh-release-action
|
||||||
id-token: write # for rust-lang/crates-io-auth-action
|
id-token: write # for rust-lang/crates-io-auth-action
|
||||||
|
|||||||
59
CHANGELOG.md
59
CHANGELOG.md
@@ -10,6 +10,59 @@ Note: In this file, do not use the hard wrap in the middle of a sentence for com
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [2.77.0] - 2026-05-05
|
||||||
|
|
||||||
|
- Support `rust`. ([#1779](https://github.com/taiki-e/install-action/pull/1779))
|
||||||
|
|
||||||
|
This installs rust using rustup.
|
||||||
|
|
||||||
|
If rustup is not yet installed, this action downloads [rustup-init for the current platform](https://rust-lang.github.io/rustup/installation/other.html#manual-installation) using HTTPS with tlsv1.2+, verifies SHA256 checksum, and then installs rustup using it.
|
||||||
|
|
||||||
|
This also supports installing additional components at the same time by `+<additional>` syntax:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- uses: taiki-e/install-action@v2
|
||||||
|
with:
|
||||||
|
# Install rust stable with rustfmt component and wasm32-wasip1 target.
|
||||||
|
tool: rust+rustfmt+wasm32-wasip1
|
||||||
|
# When installing another rust version:
|
||||||
|
# tool: rust@nightly + rustfmt + wasm32-wasip1
|
||||||
|
```
|
||||||
|
|
||||||
|
- Fix issue where x86_64 binary will be installed on AArch64 Windows even when AArch64 Windows binary available.
|
||||||
|
|
||||||
|
- Update `mise@latest` to 2026.5.0.
|
||||||
|
|
||||||
|
- Diagnostic improvements.
|
||||||
|
|
||||||
|
## [2.76.0] - 2026-05-04
|
||||||
|
|
||||||
|
- Support `mdbook-d2`. ([#1737](https://github.com/taiki-e/install-action/pull/1737), thanks @nhu)
|
||||||
|
|
||||||
|
- Support `cargo-apple-runner`. ([#1731](https://github.com/taiki-e/install-action/pull/1731), thanks @madsmtm)
|
||||||
|
|
||||||
|
- Support `cargo-binstall` on riscv64 Linux.
|
||||||
|
|
||||||
|
- Update `cargo-deb@latest` to 3.7.0.
|
||||||
|
|
||||||
|
- Update `tombi@latest` to 0.10.2.
|
||||||
|
|
||||||
|
## [2.75.30] - 2026-05-03
|
||||||
|
|
||||||
|
- Support `cargo-spellcheck` on AArch64 Linux/Windows.
|
||||||
|
|
||||||
|
- Update `cargo-spellcheck@latest` to 0.15.7.
|
||||||
|
|
||||||
|
- Update `biome@latest` to 2.4.14.
|
||||||
|
|
||||||
|
## [2.75.29] - 2026-05-02
|
||||||
|
|
||||||
|
- Update `syft@latest` to 1.44.0.
|
||||||
|
|
||||||
|
- Update `rclone@latest` to 1.74.0.
|
||||||
|
|
||||||
|
- Update `osv-scanner@latest` to 2.3.6.
|
||||||
|
|
||||||
## [2.75.28] - 2026-05-01
|
## [2.75.28] - 2026-05-01
|
||||||
|
|
||||||
- Update `wasmtime@latest` to 44.0.1.
|
- Update `wasmtime@latest` to 44.0.1.
|
||||||
@@ -6407,7 +6460,11 @@ Note: This release is considered a breaking change because installing on version
|
|||||||
|
|
||||||
Initial release
|
Initial release
|
||||||
|
|
||||||
[Unreleased]: https://github.com/taiki-e/install-action/compare/v2.75.28...HEAD
|
[Unreleased]: https://github.com/taiki-e/install-action/compare/v2.77.0...HEAD
|
||||||
|
[2.77.0]: https://github.com/taiki-e/install-action/compare/v2.76.0...v2.77.0
|
||||||
|
[2.76.0]: https://github.com/taiki-e/install-action/compare/v2.75.30...v2.76.0
|
||||||
|
[2.75.30]: https://github.com/taiki-e/install-action/compare/v2.75.29...v2.75.30
|
||||||
|
[2.75.29]: https://github.com/taiki-e/install-action/compare/v2.75.28...v2.75.29
|
||||||
[2.75.28]: https://github.com/taiki-e/install-action/compare/v2.75.27...v2.75.28
|
[2.75.28]: https://github.com/taiki-e/install-action/compare/v2.75.27...v2.75.28
|
||||||
[2.75.27]: https://github.com/taiki-e/install-action/compare/v2.75.26...v2.75.27
|
[2.75.27]: https://github.com/taiki-e/install-action/compare/v2.75.26...v2.75.27
|
||||||
[2.75.26]: https://github.com/taiki-e/install-action/compare/v2.75.25...v2.75.26
|
[2.75.26]: https://github.com/taiki-e/install-action/compare/v2.75.25...v2.75.26
|
||||||
|
|||||||
27
README.md
27
README.md
@@ -58,6 +58,17 @@ You can also omit patch version.
|
|||||||
tool: cargo-hack@0.5
|
tool: cargo-hack@0.5
|
||||||
```
|
```
|
||||||
|
|
||||||
|
For some tools, we support installing additional components at the same time by `+<additional>` syntax:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- uses: taiki-e/install-action@v2
|
||||||
|
with:
|
||||||
|
# Install rust stable with rustfmt component and wasm32-wasip1 target.
|
||||||
|
tool: rust+rustfmt+wasm32-wasip1
|
||||||
|
# When installing another rust version:
|
||||||
|
# tool: rust@nightly + rustfmt + wasm32-wasip1
|
||||||
|
```
|
||||||
|
|
||||||
To install multiple tools:
|
To install multiple tools:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
@@ -73,6 +84,16 @@ Or:
|
|||||||
- uses: taiki-e/install-action@cargo-minimal-versions
|
- uses: taiki-e/install-action@cargo-minimal-versions
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Tool names can also be separated with whitespaces (line, space, tab).
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- uses: taiki-e/install-action@v2
|
||||||
|
with:
|
||||||
|
tool: |
|
||||||
|
cargo-hack
|
||||||
|
cargo-minimal-versions
|
||||||
|
```
|
||||||
|
|
||||||
## Supported tools
|
## Supported tools
|
||||||
|
|
||||||
See [TOOLS.md](TOOLS.md) for the list of tools that are installed from manifests managed in this action.
|
See [TOOLS.md](TOOLS.md) for the list of tools that are installed from manifests managed in this action.
|
||||||
@@ -126,7 +147,11 @@ When installing with `tool: <tool_name>` or `tool: <tool_name>@<omitted_version>
|
|||||||
<!-- omit in toc -->
|
<!-- omit in toc -->
|
||||||
### Security on other installation methods
|
### Security on other installation methods
|
||||||
|
|
||||||
See the linked documentation for information on security when installed using [snap](https://snapcraft.io/docs) or [cargo-binstall](https://github.com/cargo-bins/cargo-binstall#faq).
|
See the linked documentation for information on security when installed using [rustup](https://rust-lang.github.io/rustup/security.html), [snap](https://snapcraft.io/docs), or [cargo-binstall](https://github.com/cargo-bins/cargo-binstall#faq).
|
||||||
|
|
||||||
|
If the installation method is rustup and rustup is not yet installed, this action downloads [rustup-init for the current platform](https://rust-lang.github.io/rustup/installation/other.html#manual-installation) using HTTPS with tlsv1.2+, verifies SHA256 checksum, and then installs rustup using it.
|
||||||
|
|
||||||
|
If the installation method is cargo-binstall and cargo-binstall is not yet installed or outdated, this action installs cargo-binstall [from GitHub Releases](#security-on-installation-from-github-releases).
|
||||||
|
|
||||||
See the [Supported tools section](#supported-tools) for how to ensure that fallback is not used.
|
See the [Supported tools section](#supported-tools) for how to ensure that fallback is not used.
|
||||||
|
|
||||||
|
|||||||
3
TOOLS.md
3
TOOLS.md
@@ -16,6 +16,7 @@ See the [Supported tools section in README.md](README.md#supported-tools) for ho
|
|||||||
| ---- | -------------------------------- | ------------------------------- | ------------------ | ------- |
|
| ---- | -------------------------------- | ------------------------------- | ------------------ | ------- |
|
||||||
| [**auto-doc**](https://github.com/tj-actions/auto-doc) | `$HOME/.install-action/bin` | [GitHub Releases](https://github.com/tj-actions/auto-doc/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/tj-actions/auto-doc/blob/main/LICENSE) |
|
| [**auto-doc**](https://github.com/tj-actions/auto-doc) | `$HOME/.install-action/bin` | [GitHub Releases](https://github.com/tj-actions/auto-doc/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/tj-actions/auto-doc/blob/main/LICENSE) |
|
||||||
| [**biome**](https://biomejs.dev) | `$HOME/.install-action/bin` | [GitHub Releases](https://github.com/biomejs/biome/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/biomejs/biome/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/biomejs/biome/blob/main/LICENSE-MIT) |
|
| [**biome**](https://biomejs.dev) | `$HOME/.install-action/bin` | [GitHub Releases](https://github.com/biomejs/biome/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/biomejs/biome/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/biomejs/biome/blob/main/LICENSE-MIT) |
|
||||||
|
| [**cargo-apple-runner**](https://github.com/madsmtm/cargo-apple-runner) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/madsmtm/cargo-apple-runner/releases) | macOS | [Zlib](https://github.com/madsmtm/cargo-apple-runner/blob/main/LICENSE-ZLIB.txt) OR [Apache-2.0](https://github.com/madsmtm/cargo-apple-runner/blob/main/LICENSE-APACHE.txt) OR [MIT](https://github.com/madsmtm/cargo-apple-runner/blob/main/LICENSE-MIT.txt) |
|
||||||
| [**cargo-audit**](https://github.com/rustsec/rustsec/tree/HEAD/cargo-audit) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/rustsec/rustsec/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/rustsec/rustsec/blob/main/cargo-audit/LICENSE-APACHE) OR [MIT](https://github.com/rustsec/rustsec/blob/main/cargo-audit/LICENSE-MIT) |
|
| [**cargo-audit**](https://github.com/rustsec/rustsec/tree/HEAD/cargo-audit) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/rustsec/rustsec/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/rustsec/rustsec/blob/main/cargo-audit/LICENSE-APACHE) OR [MIT](https://github.com/rustsec/rustsec/blob/main/cargo-audit/LICENSE-MIT) |
|
||||||
| [**cargo-auditable**](https://github.com/rust-secure-code/cargo-auditable) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/rust-secure-code/cargo-auditable/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/rust-secure-code/cargo-auditable/blob/master/LICENSE-APACHE) OR [MIT](https://github.com/rust-secure-code/cargo-auditable/blob/master/LICENSE-MIT) |
|
| [**cargo-auditable**](https://github.com/rust-secure-code/cargo-auditable) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/rust-secure-code/cargo-auditable/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/rust-secure-code/cargo-auditable/blob/master/LICENSE-APACHE) OR [MIT](https://github.com/rust-secure-code/cargo-auditable/blob/master/LICENSE-MIT) |
|
||||||
| [**cargo-binstall**](https://github.com/cargo-bins/cargo-binstall) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/cargo-bins/cargo-binstall/releases) | Linux, macOS, Windows | [GPL-3.0](https://github.com/cargo-bins/cargo-binstall/blob/main/crates/bin/LICENSE) |
|
| [**cargo-binstall**](https://github.com/cargo-bins/cargo-binstall) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/cargo-bins/cargo-binstall/releases) | Linux, macOS, Windows | [GPL-3.0](https://github.com/cargo-bins/cargo-binstall/blob/main/crates/bin/LICENSE) |
|
||||||
@@ -67,6 +68,7 @@ See the [Supported tools section in README.md](README.md#supported-tools) for ho
|
|||||||
| [**martin**](https://maplibre.org/martin/) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/maplibre/martin/releases) | Linux, macOS | [MIT](https://github.com/maplibre/martin/blob/main/LICENSE-MIT) OR [Apache-2.0](https://github.com/maplibre/martin/blob/main/LICENSE-APACHE) |
|
| [**martin**](https://maplibre.org/martin/) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/maplibre/martin/releases) | Linux, macOS | [MIT](https://github.com/maplibre/martin/blob/main/LICENSE-MIT) OR [Apache-2.0](https://github.com/maplibre/martin/blob/main/LICENSE-APACHE) |
|
||||||
| [**mdbook**](https://github.com/rust-lang/mdBook) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/rust-lang/mdBook/releases) | Linux, macOS, Windows | [MPL-2.0](https://github.com/rust-lang/mdBook/blob/master/LICENSE) |
|
| [**mdbook**](https://github.com/rust-lang/mdBook) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/rust-lang/mdBook/releases) | Linux, macOS, Windows | [MPL-2.0](https://github.com/rust-lang/mdBook/blob/master/LICENSE) |
|
||||||
| [**mdbook-alerts**](https://github.com/lambdalisue/rs-mdbook-alerts) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/lambdalisue/rs-mdbook-alerts/releases) | Linux, macOS, Windows | [MIT](https://github.com/lambdalisue/rs-mdbook-alerts/blob/main/LICENSE) |
|
| [**mdbook-alerts**](https://github.com/lambdalisue/rs-mdbook-alerts) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/lambdalisue/rs-mdbook-alerts/releases) | Linux, macOS, Windows | [MIT](https://github.com/lambdalisue/rs-mdbook-alerts/blob/main/LICENSE) |
|
||||||
|
| [**mdbook-d2**](https://github.com/danieleades/mdbook-d2) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/danieleades/mdbook-d2/releases) | Linux, macOS, Windows | [MIT](https://github.com/danieleades/mdbook-d2/blob/main/LICENSE) |
|
||||||
| [**mdbook-linkcheck**](https://github.com/Michael-F-Bryan/mdbook-linkcheck) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/Michael-F-Bryan/mdbook-linkcheck/releases) | Linux, macOS, Windows | [MIT](https://github.com/Michael-F-Bryan/mdbook-linkcheck/blob/master/LICENSE) |
|
| [**mdbook-linkcheck**](https://github.com/Michael-F-Bryan/mdbook-linkcheck) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/Michael-F-Bryan/mdbook-linkcheck/releases) | Linux, macOS, Windows | [MIT](https://github.com/Michael-F-Bryan/mdbook-linkcheck/blob/master/LICENSE) |
|
||||||
| [**mdbook-mermaid**](https://github.com/badboy/mdbook-mermaid) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/badboy/mdbook-mermaid/releases) | Linux, macOS, Windows | [MPL-2.0](https://github.com/badboy/mdbook-mermaid/blob/main/LICENSE) |
|
| [**mdbook-mermaid**](https://github.com/badboy/mdbook-mermaid) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/badboy/mdbook-mermaid/releases) | Linux, macOS, Windows | [MPL-2.0](https://github.com/badboy/mdbook-mermaid/blob/main/LICENSE) |
|
||||||
| [**mdbook-mermaid-ssr**](https://github.com/CommanderStorm/mdbook-mermaid-ssr) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/CommanderStorm/mdbook-mermaid-ssr/releases) | Linux, macOS, Windows | [MPL-2.0](https://github.com/CommanderStorm/mdbook-mermaid-ssr/blob/main/LICENSE) |
|
| [**mdbook-mermaid-ssr**](https://github.com/CommanderStorm/mdbook-mermaid-ssr) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/CommanderStorm/mdbook-mermaid-ssr/releases) | Linux, macOS, Windows | [MPL-2.0](https://github.com/CommanderStorm/mdbook-mermaid-ssr/blob/main/LICENSE) |
|
||||||
@@ -78,6 +80,7 @@ See the [Supported tools section in README.md](README.md#supported-tools) for ho
|
|||||||
| [**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/main/LICENSE) |
|
| [**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/main/LICENSE) |
|
||||||
| [**rclone**](https://github.com/rclone/rclone) | `$HOME/.install-action/bin` | [GitHub Releases](https://github.com/rclone/rclone/releases) | Linux, macOS, Windows | [MIT](https://github.com/rclone/rclone/blob/master/COPYING) |
|
| [**rclone**](https://github.com/rclone/rclone) | `$HOME/.install-action/bin` | [GitHub Releases](https://github.com/rclone/rclone/releases) | Linux, macOS, Windows | [MIT](https://github.com/rclone/rclone/blob/master/COPYING) |
|
||||||
| [**release-plz**](https://release-plz.dev/) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/release-plz/release-plz/releases) | Linux, macOS, Windows | [MIT](https://github.com/release-plz/release-plz/blob/main/LICENSE-MIT) OR [Apache-2.0](https://github.com/release-plz/release-plz/blob/main/LICENSE-APACHE) |
|
| [**release-plz**](https://release-plz.dev/) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/release-plz/release-plz/releases) | Linux, macOS, Windows | [MIT](https://github.com/release-plz/release-plz/blob/main/LICENSE-MIT) OR [Apache-2.0](https://github.com/release-plz/release-plz/blob/main/LICENSE-APACHE) |
|
||||||
|
| [**rust**](https://rust-lang.org) | `$CARGO_HOME/bin` | rustup | Linux, macOS, Windows | [Apache-2.0 OR MIT](https://github.com/rust-lang/rust/blob/main/COPYRIGHT) |
|
||||||
| [**sccache**](https://github.com/mozilla/sccache) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/mozilla/sccache/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/mozilla/sccache/blob/main/LICENSE) |
|
| [**sccache**](https://github.com/mozilla/sccache) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/mozilla/sccache/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/mozilla/sccache/blob/main/LICENSE) |
|
||||||
| [**shellcheck**](https://www.shellcheck.net) | `$HOME/.install-action/bin` | [GitHub Releases](https://github.com/koalaman/shellcheck/releases) | Linux, macOS, Windows | [GPL-3.0](https://github.com/koalaman/shellcheck/blob/master/LICENSE) |
|
| [**shellcheck**](https://www.shellcheck.net) | `$HOME/.install-action/bin` | [GitHub Releases](https://github.com/koalaman/shellcheck/releases) | Linux, macOS, Windows | [GPL-3.0](https://github.com/koalaman/shellcheck/blob/master/LICENSE) |
|
||||||
| [**shfmt**](https://github.com/mvdan/sh) | `$HOME/.install-action/bin` | [GitHub Releases](https://github.com/mvdan/sh/releases) | Linux, macOS, Windows | [BSD-3-Clause](https://github.com/mvdan/sh/blob/master/LICENSE) |
|
| [**shfmt**](https://github.com/mvdan/sh) | `$HOME/.install-action/bin` | [GitHub Releases](https://github.com/mvdan/sh/releases) | Linux, macOS, Windows | [BSD-3-Clause](https://github.com/mvdan/sh/blob/master/LICENSE) |
|
||||||
|
|||||||
22
action.yml
22
action.yml
@@ -4,8 +4,8 @@ description: GitHub Action for installing development tools
|
|||||||
inputs:
|
inputs:
|
||||||
tool:
|
tool:
|
||||||
description: Tools to install (whitespace or comma separated list)
|
description: Tools to install (whitespace or comma separated list)
|
||||||
required: true
|
required: false
|
||||||
# default: #publish:tool
|
default: cargo-deb
|
||||||
checksum:
|
checksum:
|
||||||
description: Whether to enable checksums (strongly discouraged to disable)
|
description: Whether to enable checksums (strongly discouraged to disable)
|
||||||
required: false
|
required: false
|
||||||
@@ -22,11 +22,14 @@ runs:
|
|||||||
using: composite
|
using: composite
|
||||||
steps:
|
steps:
|
||||||
- run: |
|
- run: |
|
||||||
|
bail() {
|
||||||
|
printf '::error::install-action: %s\n' "$*"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
# If /bin/sh is dash, environment variable containing % is not imported, but is fine
|
# If /bin/sh is dash, environment variable containing % is not imported, but is fine
|
||||||
# because it also means that it will not be exposed to subprocess.
|
# because it also means that it will not be exposed to subprocess.
|
||||||
if /usr/bin/env | grep -Eq '^BASH_FUNC_'; then
|
if /usr/bin/env | grep -Eq '^BASH_FUNC_'; then
|
||||||
printf '::error::bash function injection via BASH_FUNC_ environment variable is not allowed for security reasons\n'
|
bail 'bash function injection via BASH_FUNC_ environment variable is not allowed for security reasons'
|
||||||
exit 1
|
|
||||||
fi
|
fi
|
||||||
if ! command -v bash >/dev/null; then
|
if ! command -v bash >/dev/null; then
|
||||||
if grep -Eq '^ID=alpine' /etc/os-release; then
|
if grep -Eq '^ID=alpine' /etc/os-release; then
|
||||||
@@ -41,8 +44,7 @@ runs:
|
|||||||
fi
|
fi
|
||||||
printf '::endgroup::\n'
|
printf '::endgroup::\n'
|
||||||
else
|
else
|
||||||
printf '::error::install-action requires bash\n'
|
bail 'this action requires bash'
|
||||||
exit 1
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
bash --noprofile --norc "${GITHUB_ACTION_PATH:?}/main.sh"
|
bash --noprofile --norc "${GITHUB_ACTION_PATH:?}/main.sh"
|
||||||
@@ -54,6 +56,8 @@ runs:
|
|||||||
INPUT_FALLBACK: ${{ inputs.fallback }}
|
INPUT_FALLBACK: ${{ inputs.fallback }}
|
||||||
DEFAULT_GITHUB_TOKEN: ${{ inputs.fallback == 'cargo-binstall' && github.token || '' }}
|
DEFAULT_GITHUB_TOKEN: ${{ inputs.fallback == 'cargo-binstall' && github.token || '' }}
|
||||||
ACTION_USER_AGENT: ${{ github.action_repository }} (${{ github.action_ref }})
|
ACTION_USER_AGENT: ${{ github.action_repository }} (${{ github.action_ref }})
|
||||||
|
RUNNER_OS: ${{ runner.os }}
|
||||||
|
RUNNER_ARCH: ${{ runner.arch }}
|
||||||
if: runner.os != 'Windows'
|
if: runner.os != 'Windows'
|
||||||
# Use pwsh and retry on bash startup failure to work around windows-11-arm runner bug:
|
# Use pwsh and retry on bash startup failure to work around windows-11-arm runner bug:
|
||||||
# https://github.com/actions/partner-runner-images/issues/169
|
# https://github.com/actions/partner-runner-images/issues/169
|
||||||
@@ -75,10 +79,10 @@ runs:
|
|||||||
exit $code
|
exit $code
|
||||||
}
|
}
|
||||||
if ($i -lt 10) {
|
if ($i -lt 10) {
|
||||||
Write-Output "::warning::installation failed due to bash startup failure (<https://github.com/actions/partner-runner-images/issues/169>); retrying..."
|
Write-Output "::warning::install-action: installation failed due to bash startup failure (<https://github.com/actions/partner-runner-images/issues/169>); retrying..."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Write-Output "::error::installation failed due to bash startup failure (<https://github.com/actions/partner-runner-images/issues/169>); this maybe resolved by re-running job"
|
Write-Output "::error::install-action: installation failed due to bash startup failure (<https://github.com/actions/partner-runner-images/issues/169>); this maybe resolved by re-running job"
|
||||||
exit 1
|
exit 1
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
env:
|
env:
|
||||||
@@ -88,4 +92,6 @@ runs:
|
|||||||
INPUT_FALLBACK: ${{ inputs.fallback }}
|
INPUT_FALLBACK: ${{ inputs.fallback }}
|
||||||
DEFAULT_GITHUB_TOKEN: ${{ inputs.fallback == 'cargo-binstall' && github.token || '' }}
|
DEFAULT_GITHUB_TOKEN: ${{ inputs.fallback == 'cargo-binstall' && github.token || '' }}
|
||||||
ACTION_USER_AGENT: ${{ github.action_repository }} (${{ github.action_ref }})
|
ACTION_USER_AGENT: ${{ github.action_repository }} (${{ github.action_ref }})
|
||||||
|
RUNNER_OS: ${{ runner.os }}
|
||||||
|
RUNNER_ARCH: ${{ runner.arch }}
|
||||||
if: runner.os == 'Windows'
|
if: runner.os == 'Windows'
|
||||||
|
|||||||
214
main.sh
214
main.sh
@@ -9,6 +9,14 @@ rx() {
|
|||||||
"$@"
|
"$@"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
g() {
|
||||||
|
IFS=' '
|
||||||
|
local cmd="$*"
|
||||||
|
IFS=$'\n\t'
|
||||||
|
printf '::group::%s\n' "${cmd#retry }"
|
||||||
|
"$@"
|
||||||
|
printf '::endgroup::\n'
|
||||||
|
}
|
||||||
retry() {
|
retry() {
|
||||||
for i in {1..10}; do
|
for i in {1..10}; do
|
||||||
if "$@"; then
|
if "$@"; then
|
||||||
@@ -20,11 +28,11 @@ retry() {
|
|||||||
"$@"
|
"$@"
|
||||||
}
|
}
|
||||||
bail() {
|
bail() {
|
||||||
printf '::error::%s\n' "$*"
|
printf '::error::install-action: %s\n' "$*"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
warn() {
|
warn() {
|
||||||
printf '::warning::%s\n' "$*"
|
printf '::warning::install-action: %s\n' "$*"
|
||||||
}
|
}
|
||||||
info() {
|
info() {
|
||||||
printf >&2 'info: %s\n' "$*"
|
printf >&2 'info: %s\n' "$*"
|
||||||
@@ -35,11 +43,11 @@ normalize_comma_or_space_separated() {
|
|||||||
if [[ "${list}" == *","* ]]; then
|
if [[ "${list}" == *","* ]]; then
|
||||||
# If a comma is contained, consider it is a comma-separated list.
|
# If a comma is contained, consider it is a comma-separated list.
|
||||||
# Drop leading and trailing whitespaces in each element.
|
# Drop leading and trailing whitespaces in each element.
|
||||||
sed -E 's/ *, */,/g; s/^.//; s/,,$/,/' <<<",${list},"
|
sed -E 's/ *\+ */+/g; s/ *, */,/g; s/^.//; s/,,$/,/' <<<",${list},"
|
||||||
else
|
else
|
||||||
# Otherwise, consider it is a whitespace-separated list.
|
# Otherwise, consider it is a whitespace-separated list.
|
||||||
# Convert whitespace characters into comma.
|
# Convert whitespace characters into comma.
|
||||||
sed -E 's/ +/,/g; s/^.//' <<<" ${list} "
|
sed -E 's/ *\+ */+/g; s/ +/,/g; s/^.//' <<<" ${list} "
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
_sudo() {
|
_sudo() {
|
||||||
@@ -374,7 +382,7 @@ install_cargo_binstall() {
|
|||||||
info "cargo-binstall already installed at ${cargo_bin}/cargo-binstall${exe}"
|
info "cargo-binstall already installed at ${cargo_bin}/cargo-binstall${exe}"
|
||||||
install_binstall=''
|
install_binstall=''
|
||||||
else
|
else
|
||||||
info "cargo-binstall already installed at ${cargo_bin}/cargo-binstall${exe}, but is not compatible version with install-action, upgrading"
|
info "cargo-binstall already installed at ${cargo_bin}/cargo-binstall${exe}, but is not compatible version with this action, upgrading"
|
||||||
rm -- "${cargo_bin}/cargo-binstall${exe}"
|
rm -- "${cargo_bin}/cargo-binstall${exe}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@@ -448,7 +456,16 @@ init_install_action_bin_dir() {
|
|||||||
}
|
}
|
||||||
canonicalize_windows_path() {
|
canonicalize_windows_path() {
|
||||||
case "${host_os}" in
|
case "${host_os}" in
|
||||||
windows) sed -E 's/^\/cygdrive\//\//; s/^\/c\//C:\\/; s/\//\\/g' <<<"$1" ;;
|
windows)
|
||||||
|
local t="$1"
|
||||||
|
if [[ "${t}" == '/cygdrive/'* ]]; then
|
||||||
|
t="${t#/cygdrive}"
|
||||||
|
fi
|
||||||
|
if [[ "${t}" == '/c/'* ]]; then
|
||||||
|
t="${t/\/c\//C:\\}"
|
||||||
|
fi
|
||||||
|
printf '%s\n' "${t//\//\\}"
|
||||||
|
;;
|
||||||
*) printf '%s\n' "$1" ;;
|
*) printf '%s\n' "$1" ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
@@ -498,10 +515,13 @@ token="${GITHUB_TOKEN:-"${GH_TOKEN:-"${DEFAULT_GITHUB_TOKEN:-}"}"}"
|
|||||||
# via `ps -Eww` on macOS. It only reduces the risk of leaks.
|
# via `ps -Eww` on macOS. It only reduces the risk of leaks.
|
||||||
unset GITHUB_TOKEN GH_TOKEN DEFAULT_GITHUB_TOKEN
|
unset GITHUB_TOKEN GH_TOKEN DEFAULT_GITHUB_TOKEN
|
||||||
|
|
||||||
# Refs: https://github.com/rust-lang/rustup/blob/HEAD/rustup-init.sh
|
# Refs:
|
||||||
|
# - https://github.com/rust-lang/rustup/blob/HEAD/rustup-init.sh
|
||||||
|
# - https://docs.github.com/en/actions/reference/workflows-and-actions/contexts#runner-context
|
||||||
|
# NB: Sync with tools/ci/tool-list.sh.
|
||||||
base_distro=''
|
base_distro=''
|
||||||
exe=''
|
exe=''
|
||||||
case "$(uname -s)" in
|
case "${RUNNER_OS}" in
|
||||||
Linux)
|
Linux)
|
||||||
host_os=linux
|
host_os=linux
|
||||||
ldd_version=$(ldd --version 2>&1 || true)
|
ldd_version=$(ldd --version 2>&1 || true)
|
||||||
@@ -551,16 +571,15 @@ case "$(uname -s)" in
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
Darwin) host_os=macos ;;
|
macOS) host_os=macos ;;
|
||||||
MINGW* | MSYS* | CYGWIN* | Windows_NT)
|
Windows)
|
||||||
host_os=windows
|
host_os=windows
|
||||||
exe=.exe
|
exe=.exe
|
||||||
;;
|
;;
|
||||||
*) bail "unrecognized OS type '$(uname -s)'" ;;
|
*) bail "unrecognized runner.os '${RUNNER_OS}'" ;;
|
||||||
esac
|
esac
|
||||||
# NB: Sync with tools/ci/tool-list.sh.
|
case "${RUNNER_ARCH}" in
|
||||||
case "$(uname -m)" in
|
X64) host_arch=x86_64 ;;
|
||||||
aarch64 | arm64) host_arch=aarch64 ;;
|
|
||||||
# Ignore 32-bit Arm for now, as we need to consider the version and whether hard-float is supported.
|
# Ignore 32-bit Arm for now, as we need to consider the version and whether hard-float is supported.
|
||||||
# https://github.com/rust-lang/rustup/pull/593
|
# https://github.com/rust-lang/rustup/pull/593
|
||||||
# https://github.com/cross-rs/cross/pull/1018
|
# https://github.com/cross-rs/cross/pull/1018
|
||||||
@@ -569,22 +588,33 @@ case "$(uname -m)" in
|
|||||||
# Does it seem only armv7l+ is supported?
|
# Does it seem only armv7l+ is supported?
|
||||||
# https://github.com/actions/runner/blob/v2.321.0/src/Misc/externals.sh#L178
|
# https://github.com/actions/runner/blob/v2.321.0/src/Misc/externals.sh#L178
|
||||||
# https://github.com/actions/runner/issues/688
|
# https://github.com/actions/runner/issues/688
|
||||||
xscale | arm | armv*l) 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>" ;;
|
ARM) bail "32-bit Arm runner is currently not supported; if you need support for this platform, please submit an issue at <https://github.com/taiki-e/install-action>" ;;
|
||||||
|
X86) bail "32-bit x86 runner is currently not supported; if you need support for this platform, please submit an issue at <https://github.com/taiki-e/install-action>" ;;
|
||||||
|
ARM64) host_arch=aarch64 ;;
|
||||||
|
PPC64LE) host_arch=powerpc64le ;;
|
||||||
|
RISCV64) host_arch=riscv64 ;;
|
||||||
|
S390X) host_arch=s390x ;;
|
||||||
|
*)
|
||||||
|
info "unrecognized runner.arch '${RUNNER_ARCH}'; fallback to uname -m"
|
||||||
|
case "$(uname -m)" in
|
||||||
|
aarch64 | arm64) host_arch=aarch64 ;;
|
||||||
|
xscale | arm | armv*l) bail "32-bit Arm runner is currently not supported; if you need support for this platform, please submit an issue at <https://github.com/taiki-e/install-action>" ;;
|
||||||
ppc64le) host_arch=powerpc64le ;;
|
ppc64le) host_arch=powerpc64le ;;
|
||||||
riscv64) host_arch=riscv64 ;;
|
riscv64) host_arch=riscv64 ;;
|
||||||
s390x) host_arch=s390x ;;
|
s390x) host_arch=s390x ;;
|
||||||
# Very few tools provide prebuilt binaries for these.
|
# Very few tools provide prebuilt binaries for these.
|
||||||
# TODO: fallback to `cargo install`? (binstall fallback is not good idea here as cargo-binstall doesn't provide prebuilt binaries for these.)
|
# TODO: fallback to `cargo install`? (binstall fallback is not good idea here as cargo-binstall doesn't provide prebuilt binaries for these.)
|
||||||
loongarch64 | mips | mips64 | ppc | ppc64 | sun4v) bail "$(uname -m) 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>" ;;
|
loongarch64 | mips | mips64 | ppc | ppc64 | sun4v) bail "$(uname -m) runner is not supported yet; please submit an issue at <https://github.com/taiki-e/install-action>" ;;
|
||||||
# GitHub Actions Runner supports x86_64/AArch64/Arm Linux and x86_64/AArch64 Windows/macOS.
|
# GitHub Actions Runner supports x86_64/AArch64/Arm Linux and x86_64/AArch64 Windows/macOS.
|
||||||
# https://github.com/actions/runner/blob/v2.332.0/.github/workflows/build.yml#L24
|
# https://github.com/actions/runner/blob/v2.332.0/.github/workflows/build.yml#L24
|
||||||
# https://docs.github.com/en/actions/reference/runners/self-hosted-runners#supported-processor-architectures
|
# https://docs.github.com/en/actions/reference/runners/self-hosted-runners#supported-processor-architectures
|
||||||
# And IBM provides runners for powerpc64le/s390x Linux.
|
# And IBM provides runners for powerpc64le/s390x Linux.
|
||||||
# https://github.com/IBM/actionspz
|
# https://github.com/IBM/actionspz
|
||||||
# So we can assume x86_64 unless it has a known non-x86_64 uname -m result.
|
# So we can assume x86_64 unless it has a known non-x86_64 uname -m result.
|
||||||
# TODO: uname -m on windows-11-arm returns "x86_64"
|
|
||||||
*) host_arch=x86_64 ;;
|
*) host_arch=x86_64 ;;
|
||||||
esac
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
info "host platform: ${host_arch}_${host_os}"
|
info "host platform: ${host_arch}_${host_os}"
|
||||||
|
|
||||||
home="${HOME:-}"
|
home="${HOME:-}"
|
||||||
@@ -673,18 +703,18 @@ case "${host_os}" in
|
|||||||
fi
|
fi
|
||||||
printf '::endgroup::\n'
|
printf '::endgroup::\n'
|
||||||
;;
|
;;
|
||||||
*) warn "install-action requires at least jq and curl on non-Debian/Fedora/SUSE/Arch/Alpine-based Linux" ;;
|
*) warn "this action requires at least jq and curl on non-Debian/Fedora/SUSE/Arch/Alpine-based Linux" ;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
macos)
|
macos)
|
||||||
if ! type -P jq >/dev/null || ! type -P curl >/dev/null; then
|
if ! type -P jq >/dev/null || ! type -P curl >/dev/null; then
|
||||||
warn "install-action requires at least jq and curl on macOS"
|
warn "this action requires at least jq and curl on macOS"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
windows)
|
windows)
|
||||||
if ! type -P curl >/dev/null; then
|
if ! type -P curl >/dev/null; then
|
||||||
warn "install-action requires at least curl on Windows"
|
warn "this action requires at least curl on Windows"
|
||||||
fi
|
fi
|
||||||
if [[ -f "${install_action_dir}/jq/bin/jq.exe" ]]; then
|
if [[ -f "${install_action_dir}/jq/bin/jq.exe" ]]; then
|
||||||
jq() { "${install_action_dir}/jq/bin/jq.exe" -b "$@"; }
|
jq() { "${install_action_dir}/jq/bin/jq.exe" -b "$@"; }
|
||||||
@@ -718,20 +748,149 @@ esac
|
|||||||
|
|
||||||
unsupported_tools=()
|
unsupported_tools=()
|
||||||
for tool in "${tools[@]}"; do
|
for tool in "${tools[@]}"; do
|
||||||
if [[ "${tool}" == *"@"* ]]; then
|
additional=''
|
||||||
|
if [[ "${tool}" == *'+'* ]]; then
|
||||||
|
additional="${tool#*+}"
|
||||||
|
tool="${tool%%+*}"
|
||||||
|
fi
|
||||||
|
if [[ "${tool}" == *'@'* ]]; then
|
||||||
version="${tool#*@}"
|
version="${tool#*@}"
|
||||||
tool="${tool%@*}"
|
tool="${tool%@*}"
|
||||||
|
if [[ "${tool}" != 'rust' ]]; then
|
||||||
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\.-]+)?$|^latest$ ]]; then
|
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\.-]+)?$|^latest$ ]]; then
|
||||||
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
|
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}'"
|
bail "semver operators are not supported in 'tool' input option: '${version}'"
|
||||||
fi
|
fi
|
||||||
bail "install-action v2 does not support semver 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 build-metadata: '${version}'; if you need these supports again, please submit an issue at <https://github.com/taiki-e/install-action>"
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
version=latest
|
version=latest
|
||||||
fi
|
fi
|
||||||
|
if [[ -n "${additional}" ]]; then
|
||||||
|
case "${tool}" in
|
||||||
|
rust) ;;
|
||||||
|
*) bail "<tool_name>+<additional> syntax is not supported for ${tool}" ;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
installed_bin=()
|
installed_bin=()
|
||||||
case "${tool}" in
|
case "${tool}" in
|
||||||
|
rust)
|
||||||
|
if [[ "${version}" == 'latest' ]]; then
|
||||||
|
version=stable
|
||||||
|
fi
|
||||||
|
info "installing ${tool}@${version}"
|
||||||
|
export RUSTUP_MAX_RETRIES="${RUSTUP_MAX_RETRIES:-10}"
|
||||||
|
rustup_args=(--profile minimal)
|
||||||
|
if [[ -n "${additional}" ]]; then
|
||||||
|
component=''
|
||||||
|
target=''
|
||||||
|
while read -rd+; do
|
||||||
|
case "${REPLY}" in
|
||||||
|
# Last checked: nightly-2026-05-03
|
||||||
|
# rustup component list
|
||||||
|
# rustup target list
|
||||||
|
cargo | cargo-* | clippy | clippy-* | llvm-* | miri | miri-* | rust-* | rustc-* | rustfmt | rustfmt-*) component+=",${REPLY}" ;;
|
||||||
|
*) target+=",${REPLY}" ;;
|
||||||
|
esac
|
||||||
|
done <<<"${additional}+"
|
||||||
|
if [[ -n "${component}" ]]; then
|
||||||
|
if [[ "${component}," == *',miri,'* ]] && [[ "${component}," != *',rust-src,'* ]]; then
|
||||||
|
component+=',rust-src'
|
||||||
|
fi
|
||||||
|
rustup_args+=(--component "${component#,}")
|
||||||
|
fi
|
||||||
|
if [[ -n "${target}" ]]; then
|
||||||
|
rustup_args+=(--target "${target#,}")
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if type -P rustup >/dev/null; then
|
||||||
|
# --no-self-update is necessary because the windows environment cannot self-update rustup.exe.
|
||||||
|
g retry rustup toolchain add "${version}" --no-self-update "${rustup_args[@]}"
|
||||||
|
g rustup default "${version}"
|
||||||
|
else
|
||||||
|
# https://github.com/rust-lang/rustup/tags
|
||||||
|
# Run tools/rustup-hash.sh to get sha256 hash.
|
||||||
|
rustup_version=1.29.0
|
||||||
|
# https://rust-lang.github.io/rustup/installation/other.html#manual-installation
|
||||||
|
rust_target=''
|
||||||
|
checksum=''
|
||||||
|
case "${host_os}" in
|
||||||
|
linux)
|
||||||
|
rust_target="${host_arch}-unknown-${host_os}-${host_env}"
|
||||||
|
case "${host_arch}" in
|
||||||
|
x86_64)
|
||||||
|
case "${host_env}" in
|
||||||
|
gnu) checksum=4acc9acc76d5079515b46346a485974457b5a79893cfb01112423c89aeb5aa10 ;;
|
||||||
|
musl) checksum=9cd3fda5fd293890e36ab271af6a786ee22084b5f6c2b83fd8323cec6f0992c1 ;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
aarch64)
|
||||||
|
case "${host_env}" in
|
||||||
|
gnu) checksum=9732d6c5e2a098d3521fca8145d826ae0aaa067ef2385ead08e6feac88fa5792 ;;
|
||||||
|
musl) checksum=88761caacddb92cd79b0b1f939f3990ba1997d701a38b3e8dd6746a562f2a759 ;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
powerpc64le)
|
||||||
|
case "${host_env}" in
|
||||||
|
gnu) checksum=4bfff85bd3967d988e14567aa9cc6ab0ea386f0ffeff0f9f14d23f0103bf1f97 ;;
|
||||||
|
musl) checksum=e15d033af90b7a55d170aac2d82cc28ddd96dbfcdda7c6d4eb8cb064a99c4646 ;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
riscv64)
|
||||||
|
rust_target="${host_arch}gc-unknown-${host_os}-${host_env}"
|
||||||
|
# riscv64gc-unknown-linux-musl is tier 2 without host tools
|
||||||
|
case "${host_env}" in
|
||||||
|
gnu) checksum=7e43f2b2e6307d61da17a4dff61e6bceef408b8189822df64e1094590d2a70f9 ;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
s390x)
|
||||||
|
# s390x-unknown-linux-musl is tier 3
|
||||||
|
case "${host_env}" in
|
||||||
|
gnu) checksum=66c2c132428b6b77803facb02cbdf33b89d20c00bd20da142be8cb651f2e7cd8 ;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
macos)
|
||||||
|
rust_target="${host_arch}-apple-darwin"
|
||||||
|
case "${host_arch}" in
|
||||||
|
x86_64) checksum=33cf85df9142bc6d29cbc62fa5ca1d4c29622cddb55213a4c1a43c457fb9b2d7 ;;
|
||||||
|
aarch64) checksum=aeb4105778ca1bd3c6b0e75768f581c656633cd51368fa61289b6a71696ac7e1 ;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
windows)
|
||||||
|
rust_target="${host_arch}-pc-windows-msvc"
|
||||||
|
case "${host_arch}" in
|
||||||
|
x86_64) checksum=86478e53f769379d7f0ebfa7c9aa97cb76ca92233f79aa2cc0dbee2efaac73c7 ;;
|
||||||
|
aarch64) checksum=3af309e6c3062aa11df0e932954f69d13b734d8a431e593812f3ecd9ff9e6ef6 ;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
if [[ -z "${rust_target}" ]] || [[ -z "${checksum}" ]]; then
|
||||||
|
bail "unsupported host platform ${host_arch}_${host_os} for ${tool}"
|
||||||
|
fi
|
||||||
|
url="https://static.rust-lang.org/rustup/archive/${rustup_version}/${rust_target}/rustup-init${exe}"
|
||||||
|
mkdir -p -- "${tmp_dir}"
|
||||||
|
(
|
||||||
|
cd -- "${tmp_dir}"
|
||||||
|
download_and_checksum "${url}" "${checksum}"
|
||||||
|
mv -- tmp rustup-init
|
||||||
|
case "${host_os}" in
|
||||||
|
linux | macos) chmod +x ./rustup-init ;;
|
||||||
|
esac
|
||||||
|
g retry ./rustup-init -y --default-toolchain "${version}" --no-modify-path "${rustup_args[@]}"
|
||||||
|
)
|
||||||
|
rm -rf -- "${tmp_dir}"
|
||||||
|
cargo_bin_dir="${CARGO_HOME:-"${home}/.cargo"}/bin"
|
||||||
|
export PATH="${PATH}:${cargo_bin_dir}"
|
||||||
|
cargo_bin_dir=$(canonicalize_windows_path "${cargo_bin_dir}")
|
||||||
|
info "adding '${cargo_bin_dir}' to PATH"
|
||||||
|
printf '%s\n' "${cargo_bin_dir}" >>"${GITHUB_PATH}"
|
||||||
|
cargo_path=$(type -P cargo || true)
|
||||||
|
fi
|
||||||
|
installed_bin=("rustc${exe}" "cargo${exe}")
|
||||||
|
;;
|
||||||
protoc)
|
protoc)
|
||||||
info "installing ${tool}@${version}"
|
info "installing ${tool}@${version}"
|
||||||
read_manifest "protoc" "${version}"
|
read_manifest "protoc" "${version}"
|
||||||
@@ -773,11 +932,11 @@ for tool in "${tools[@]}"; do
|
|||||||
info "installing ${tool}@${version}"
|
info "installing ${tool}@${version}"
|
||||||
case "${version}" in
|
case "${version}" in
|
||||||
latest) ;;
|
latest) ;;
|
||||||
*) warn "specifying the version of ${tool} is not supported yet by this action" ;;
|
*) warn "specifying the version of ${tool} is not supported" ;;
|
||||||
esac
|
esac
|
||||||
case "${host_os}" in
|
case "${host_os}" in
|
||||||
linux) ;;
|
linux) ;;
|
||||||
macos | windows) bail "${tool} for non-Linux is not supported yet by this action" ;;
|
macos | windows) bail "${tool} for non-Linux is not supported" ;;
|
||||||
*) bail "unsupported host OS '${host_os}' for ${tool}" ;;
|
*) bail "unsupported host OS '${host_os}' for ${tool}" ;;
|
||||||
esac
|
esac
|
||||||
# libc6-dbg is needed to run Valgrind
|
# libc6-dbg is needed to run Valgrind
|
||||||
@@ -790,7 +949,7 @@ for tool in "${tools[@]}"; do
|
|||||||
cargo-binstall)
|
cargo-binstall)
|
||||||
case "${version}" in
|
case "${version}" in
|
||||||
latest) ;;
|
latest) ;;
|
||||||
*) warn "specifying the version of ${tool} is not supported by this action" ;;
|
*) warn "specifying the version of ${tool} is not supported" ;;
|
||||||
esac
|
esac
|
||||||
install_cargo_binstall
|
install_cargo_binstall
|
||||||
printf '\n'
|
printf '\n'
|
||||||
@@ -880,7 +1039,7 @@ for tool in "${tools[@]}"; do
|
|||||||
# gungraun-runner up to 0.17.1 (exclusive) does not support --version flag.
|
# gungraun-runner up to 0.17.1 (exclusive) does not support --version flag.
|
||||||
biome | cargo-machete | wait-for-them | gungraun-runner) rx "${tool_bin_stem}" --version || true ;;
|
biome | cargo-machete | wait-for-them | gungraun-runner) rx "${tool_bin_stem}" --version || true ;;
|
||||||
# these packages support neither --version nor --help flag.
|
# these packages support neither --version nor --help flag.
|
||||||
cargo-auditable | cargo-careful | wasm-bindgen-test-runner) ;;
|
cargo-auditable | cargo-careful | wasm-bindgen-test-runner | cargo-apple-runner) ;;
|
||||||
# wasm2es6js does not support --version flag and --help flag doesn't contains version info.
|
# wasm2es6js does not support --version flag and --help flag doesn't contains version info.
|
||||||
wasm2es6js) ;;
|
wasm2es6js) ;;
|
||||||
# iai-callgrind-runner --version works only with iai-callgrind in nearby Cargo.toml.
|
# iai-callgrind-runner --version works only with iai-callgrind in nearby Cargo.toml.
|
||||||
@@ -916,7 +1075,7 @@ if [[ ${#unsupported_tools[@]} -gt 0 ]]; then
|
|||||||
none) bail "install-action does not support ${unsupported_tools[*]} (fallback is disabled by 'fallback: none' input option)" ;;
|
none) bail "install-action does not support ${unsupported_tools[*]} (fallback is disabled by 'fallback: none' input option)" ;;
|
||||||
cargo-binstall)
|
cargo-binstall)
|
||||||
case "${host_arch}" in
|
case "${host_arch}" in
|
||||||
x86_64 | aarch64) ;;
|
x86_64 | aarch64 | riscv64) ;;
|
||||||
*)
|
*)
|
||||||
info "cargo-binstall does not provide prebuilt binaries for this platform (${host_arch}); use 'cargo-install' fallback instead"
|
info "cargo-binstall does not provide prebuilt binaries for this platform (${host_arch}); use 'cargo-install' fallback instead"
|
||||||
fallback=cargo-install
|
fallback=cargo-install
|
||||||
@@ -993,7 +1152,6 @@ if [[ ${#unsupported_tools[@]} -gt 0 ]]; then
|
|||||||
fi
|
fi
|
||||||
if [[ -z "${cargo_path}" ]]; then
|
if [[ -z "${cargo_path}" ]]; then
|
||||||
_bin_dir=$(canonicalize_windows_path "${home}/.cargo/bin")
|
_bin_dir=$(canonicalize_windows_path "${home}/.cargo/bin")
|
||||||
# TODO: avoid this when already added
|
|
||||||
info "adding '${_bin_dir}' to PATH"
|
info "adding '${_bin_dir}' to PATH"
|
||||||
printf '%s\n' "${_bin_dir}" >>"${GITHUB_PATH}"
|
printf '%s\n' "${_bin_dir}" >>"${GITHUB_PATH}"
|
||||||
fi
|
fi
|
||||||
|
|||||||
6
manifests/biome.json
generated
6
manifests/biome.json
generated
@@ -2,13 +2,13 @@
|
|||||||
"rust_crate": null,
|
"rust_crate": null,
|
||||||
"template": null,
|
"template": null,
|
||||||
"latest": {
|
"latest": {
|
||||||
"version": "2.4.13"
|
"version": "2.4.14"
|
||||||
},
|
},
|
||||||
"2": {
|
"2": {
|
||||||
"version": "2.4.13"
|
"version": "2.4.14"
|
||||||
},
|
},
|
||||||
"2.4": {
|
"2.4": {
|
||||||
"version": "2.4.13"
|
"version": "2.4.14"
|
||||||
},
|
},
|
||||||
"2.4.14": {
|
"2.4.14": {
|
||||||
"x86_64_linux_musl": {
|
"x86_64_linux_musl": {
|
||||||
|
|||||||
26
manifests/cargo-apple-runner.json
generated
Normal file
26
manifests/cargo-apple-runner.json
generated
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
"rust_crate": "cargo-apple-runner",
|
||||||
|
"template": {
|
||||||
|
"x86_64_macos": {
|
||||||
|
"url": "https://github.com/madsmtm/cargo-apple-runner/releases/download/v${version}/cargo-apple-runner-x86_64-apple-darwin.tar.gz",
|
||||||
|
"bin": "cargo-apple-runner"
|
||||||
|
},
|
||||||
|
"aarch64_macos": {
|
||||||
|
"url": "https://github.com/madsmtm/cargo-apple-runner/releases/download/v${version}/cargo-apple-runner-aarch64-apple-darwin.tar.gz",
|
||||||
|
"bin": "cargo-apple-runner"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"latest": {
|
||||||
|
"version": "0.0.1"
|
||||||
|
},
|
||||||
|
"0.0.1": {
|
||||||
|
"x86_64_macos": {
|
||||||
|
"etag": "0x8DE9E56906B2739",
|
||||||
|
"hash": "66e53e60e1502d6c6e57aed9c423ecbe9f155fbcee56824a20eb72c49136a554"
|
||||||
|
},
|
||||||
|
"aarch64_macos": {
|
||||||
|
"etag": "0x8DE9E56816E1F2D",
|
||||||
|
"hash": "58b94a77328568eff1c8d1216f51933c0753d20365b2284cf3a1dca843a6d0c1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
7
manifests/cargo-binstall.json
generated
7
manifests/cargo-binstall.json
generated
@@ -18,6 +18,9 @@
|
|||||||
},
|
},
|
||||||
"aarch64_windows": {
|
"aarch64_windows": {
|
||||||
"url": "https://github.com/cargo-bins/cargo-binstall/releases/download/v${version}/cargo-binstall-aarch64-pc-windows-msvc.zip"
|
"url": "https://github.com/cargo-bins/cargo-binstall/releases/download/v${version}/cargo-binstall-aarch64-pc-windows-msvc.zip"
|
||||||
|
},
|
||||||
|
"riscv64_linux_musl": {
|
||||||
|
"url": "https://github.com/cargo-bins/cargo-binstall/releases/download/v${version}/cargo-binstall-riscv64gc-unknown-linux-musl.tgz"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"latest": {
|
"latest": {
|
||||||
@@ -47,6 +50,10 @@
|
|||||||
"aarch64_windows": {
|
"aarch64_windows": {
|
||||||
"etag": "0x8DE9959EAAC5732",
|
"etag": "0x8DE9959EAAC5732",
|
||||||
"hash": "c6873e81457d9e44973a8e9a849795f2c83765fce0af8ad68b597b5b40dec418"
|
"hash": "c6873e81457d9e44973a8e9a849795f2c83765fce0af8ad68b597b5b40dec418"
|
||||||
|
},
|
||||||
|
"riscv64_linux_musl": {
|
||||||
|
"etag": "0x8DE9959DFE57CE6",
|
||||||
|
"hash": "3eb039f14fa71dd27b614bf692f0bffd4ba087204829805d54b014646aed7c14"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
13
manifests/cargo-deb.json
generated
13
manifests/cargo-deb.json
generated
@@ -7,10 +7,19 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"latest": {
|
"latest": {
|
||||||
"version": "3.6.4"
|
"version": "3.7.0"
|
||||||
},
|
},
|
||||||
"3": {
|
"3": {
|
||||||
"version": "3.6.4"
|
"version": "3.7.0"
|
||||||
|
},
|
||||||
|
"3.7": {
|
||||||
|
"version": "3.7.0"
|
||||||
|
},
|
||||||
|
"3.7.0": {
|
||||||
|
"x86_64_linux_gnu": {
|
||||||
|
"etag": "0x8DEA87CE0C3370E",
|
||||||
|
"hash": "e61273031c84b6ef2ca3fb259b594d34d2b592e1c6bc378c1249380c53e5b05e"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"3.6": {
|
"3.6": {
|
||||||
"version": "3.6.4"
|
"version": "3.6.4"
|
||||||
|
|||||||
47
manifests/cargo-spellcheck.json
generated
47
manifests/cargo-spellcheck.json
generated
@@ -1,35 +1,54 @@
|
|||||||
{
|
{
|
||||||
"rust_crate": "cargo-spellcheck",
|
"rust_crate": "cargo-spellcheck",
|
||||||
"template": {
|
"template": null,
|
||||||
"x86_64_linux_gnu": {
|
|
||||||
"url": "https://github.com/drahnr/cargo-spellcheck/releases/download/v${version}/cargo-spellcheck-v${version}-x86_64-unknown-linux-gnu"
|
|
||||||
},
|
|
||||||
"x86_64_windows": {
|
|
||||||
"url": "https://github.com/drahnr/cargo-spellcheck/releases/download/v${version}/cargo-spellcheck-v${version}-x86_64-pc-windows-gnu.exe"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"latest": {
|
"latest": {
|
||||||
"version": "0.15.1"
|
"version": "0.15.7"
|
||||||
},
|
},
|
||||||
"0.15": {
|
"0.15": {
|
||||||
"version": "0.15.1"
|
"version": "0.15.7"
|
||||||
|
},
|
||||||
|
"0.15.7": {
|
||||||
|
"x86_64_linux_gnu": {
|
||||||
|
"url": "https://github.com/drahnr/cargo-spellcheck/releases/download/v0.15.7/cargo-spellcheck-v0.15.7-x86_64-unknown-linux-gnu",
|
||||||
|
"etag": "0x8DEA7C00640F8EA",
|
||||||
|
"hash": "6c944067adde19558aff6b6eb0003e82a95a52ac9dd75465ba3df894eeac5b74"
|
||||||
|
},
|
||||||
|
"x86_64_windows": {
|
||||||
|
"url": "https://github.com/drahnr/cargo-spellcheck/releases/download/v0.15.7/cargo-spellcheck-v0.15.7-x86_64-pc-windows-msvc.exe",
|
||||||
|
"etag": "0x8DEA7C002803985",
|
||||||
|
"hash": "fef4eae8bd21d1edac52b00c7729fbabd7ad47bb6053e29025d62adb2746c93f"
|
||||||
|
},
|
||||||
|
"aarch64_linux_gnu": {
|
||||||
|
"url": "https://github.com/drahnr/cargo-spellcheck/releases/download/v0.15.7/cargo-spellcheck-v0.15.7-aarch64-unknown-linux-gnu",
|
||||||
|
"etag": "0x8DEA7C0074205C5",
|
||||||
|
"hash": "22c5ea30ca4bc86004022cffb671bdbf971d66f2dd564397e8a7647cadcf3ec8"
|
||||||
|
},
|
||||||
|
"aarch64_windows": {
|
||||||
|
"url": "https://github.com/drahnr/cargo-spellcheck/releases/download/v0.15.7/cargo-spellcheck-v0.15.7-aarch64-pc-windows-msvc.exe",
|
||||||
|
"etag": "0x8DEA7C002536910",
|
||||||
|
"hash": "cc72699c01f192f160d2c402fa44efdd56b9ff5856c5b1d4cd5af1631ded48a3"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"0.15.2": {
|
"0.15.2": {
|
||||||
"x86_64_linux_gnu": {
|
"x86_64_linux_gnu": {
|
||||||
|
"url": "https://github.com/drahnr/cargo-spellcheck/releases/download/v0.15.2/cargo-spellcheck-v0.15.2-x86_64-unknown-linux-gnu",
|
||||||
"etag": "0x8DD4A85530EF13A",
|
"etag": "0x8DD4A85530EF13A",
|
||||||
"hash": "9b36eb04e83aaea2c943064fbb2e5a04d37a46bcf51dfd99495b74b09ff56455"
|
"hash": "9b36eb04e83aaea2c943064fbb2e5a04d37a46bcf51dfd99495b74b09ff56455"
|
||||||
},
|
},
|
||||||
"x86_64_windows": {
|
"x86_64_windows": {
|
||||||
|
"url": "https://github.com/drahnr/cargo-spellcheck/releases/download/v0.15.2/cargo-spellcheck-v0.15.2-x86_64-pc-windows-gnu.exe",
|
||||||
"etag": "0x8DD4A8564500872",
|
"etag": "0x8DD4A8564500872",
|
||||||
"hash": "5d70eac68be1dae5fb69439217581f79e642867ddd4b67ba258e224de6ff82a2"
|
"hash": "5d70eac68be1dae5fb69439217581f79e642867ddd4b67ba258e224de6ff82a2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"0.15.1": {
|
"0.15.1": {
|
||||||
"x86_64_linux_gnu": {
|
"x86_64_linux_gnu": {
|
||||||
|
"url": "https://github.com/drahnr/cargo-spellcheck/releases/download/v0.15.1/cargo-spellcheck-v0.15.1-x86_64-unknown-linux-gnu",
|
||||||
"etag": "0x8DD49AEF852F898",
|
"etag": "0x8DD49AEF852F898",
|
||||||
"hash": "b96e4e73babd959aa138d1629b143180e83ebd8461064fa68e99e2e961560029"
|
"hash": "b96e4e73babd959aa138d1629b143180e83ebd8461064fa68e99e2e961560029"
|
||||||
},
|
},
|
||||||
"x86_64_windows": {
|
"x86_64_windows": {
|
||||||
|
"url": "https://github.com/drahnr/cargo-spellcheck/releases/download/v0.15.1/cargo-spellcheck-v0.15.1-x86_64-pc-windows-gnu.exe",
|
||||||
"etag": "0x8DD49AF09E6176C",
|
"etag": "0x8DD49AF09E6176C",
|
||||||
"hash": "53e697b1016880ffe864dfba9fda68c050694644267557450881d52d9eed987d"
|
"hash": "53e697b1016880ffe864dfba9fda68c050694644267557450881d52d9eed987d"
|
||||||
}
|
}
|
||||||
@@ -39,10 +58,12 @@
|
|||||||
},
|
},
|
||||||
"0.14.0": {
|
"0.14.0": {
|
||||||
"x86_64_linux_gnu": {
|
"x86_64_linux_gnu": {
|
||||||
|
"url": "https://github.com/drahnr/cargo-spellcheck/releases/download/v0.14.0/cargo-spellcheck-v0.14.0-x86_64-unknown-linux-gnu",
|
||||||
"etag": "0x8DC6466EF3038F3",
|
"etag": "0x8DC6466EF3038F3",
|
||||||
"hash": "6f35073843f2eb87990ef19c841c61ded5263e3a7ff38f885cfab22193b84f13"
|
"hash": "6f35073843f2eb87990ef19c841c61ded5263e3a7ff38f885cfab22193b84f13"
|
||||||
},
|
},
|
||||||
"x86_64_windows": {
|
"x86_64_windows": {
|
||||||
|
"url": "https://github.com/drahnr/cargo-spellcheck/releases/download/v0.14.0/cargo-spellcheck-v0.14.0-x86_64-pc-windows-gnu.exe",
|
||||||
"etag": "0x8DC646705A424A4",
|
"etag": "0x8DC646705A424A4",
|
||||||
"hash": "ad97a1471b7e718902ec385c3ad045a6afbc986f736d0c4986855ec99a79c80c"
|
"hash": "ad97a1471b7e718902ec385c3ad045a6afbc986f736d0c4986855ec99a79c80c"
|
||||||
}
|
}
|
||||||
@@ -52,30 +73,36 @@
|
|||||||
},
|
},
|
||||||
"0.13.2": {
|
"0.13.2": {
|
||||||
"x86_64_linux_gnu": {
|
"x86_64_linux_gnu": {
|
||||||
|
"url": "https://github.com/drahnr/cargo-spellcheck/releases/download/v0.13.2/cargo-spellcheck-v0.13.2-x86_64-unknown-linux-gnu",
|
||||||
"etag": "0x8DC0E0760B5DD94",
|
"etag": "0x8DC0E0760B5DD94",
|
||||||
"hash": "f547b8f992dcc43f8a4106bae8b090ecb3fcb7ef6ce336081c22636f70e876d9"
|
"hash": "f547b8f992dcc43f8a4106bae8b090ecb3fcb7ef6ce336081c22636f70e876d9"
|
||||||
},
|
},
|
||||||
"x86_64_windows": {
|
"x86_64_windows": {
|
||||||
|
"url": "https://github.com/drahnr/cargo-spellcheck/releases/download/v0.13.2/cargo-spellcheck-v0.13.2-x86_64-pc-windows-gnu.exe",
|
||||||
"etag": "0x8DC0E07751C8D13",
|
"etag": "0x8DC0E07751C8D13",
|
||||||
"hash": "f54fb8243497258115d1eb55b99bfc94ab3e09636c78665d3b6410885ba9190a"
|
"hash": "f54fb8243497258115d1eb55b99bfc94ab3e09636c78665d3b6410885ba9190a"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"0.13.1": {
|
"0.13.1": {
|
||||||
"x86_64_linux_gnu": {
|
"x86_64_linux_gnu": {
|
||||||
|
"url": "https://github.com/drahnr/cargo-spellcheck/releases/download/v0.13.1/cargo-spellcheck-v0.13.1-x86_64-unknown-linux-gnu",
|
||||||
"etag": "0x8DBC987279A3734",
|
"etag": "0x8DBC987279A3734",
|
||||||
"hash": "17af34dbefad5c45d23df3e4e81b0addc78782db0ed2e8e491a1532761463e1e"
|
"hash": "17af34dbefad5c45d23df3e4e81b0addc78782db0ed2e8e491a1532761463e1e"
|
||||||
},
|
},
|
||||||
"x86_64_windows": {
|
"x86_64_windows": {
|
||||||
|
"url": "https://github.com/drahnr/cargo-spellcheck/releases/download/v0.13.1/cargo-spellcheck-v0.13.1-x86_64-pc-windows-gnu.exe",
|
||||||
"etag": "0x8DBC9875250341E",
|
"etag": "0x8DBC9875250341E",
|
||||||
"hash": "d18c19a3c5e7eb9ea516e691b54a4517a60517b6b1fb75b7f56a0c1dcc9b177e"
|
"hash": "d18c19a3c5e7eb9ea516e691b54a4517a60517b6b1fb75b7f56a0c1dcc9b177e"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"0.13.0": {
|
"0.13.0": {
|
||||||
"x86_64_linux_gnu": {
|
"x86_64_linux_gnu": {
|
||||||
|
"url": "https://github.com/drahnr/cargo-spellcheck/releases/download/v0.13.0/cargo-spellcheck-v0.13.0-x86_64-unknown-linux-gnu",
|
||||||
"etag": "0x8DB98F2A6C10BCB",
|
"etag": "0x8DB98F2A6C10BCB",
|
||||||
"hash": "41e99240e55f38cc6d43d7ea9f2ccd448f584eefdc262129e4238f057d995923"
|
"hash": "41e99240e55f38cc6d43d7ea9f2ccd448f584eefdc262129e4238f057d995923"
|
||||||
},
|
},
|
||||||
"x86_64_windows": {
|
"x86_64_windows": {
|
||||||
|
"url": "https://github.com/drahnr/cargo-spellcheck/releases/download/v0.13.0/cargo-spellcheck-v0.13.0-x86_64-pc-windows-gnu.exe",
|
||||||
"etag": "0x8DB98F240CB78CC",
|
"etag": "0x8DB98F240CB78CC",
|
||||||
"hash": "57d45d5942d7ccd49599aae549c0bd5d906868eaeb39481088e55001d65f4784"
|
"hash": "57d45d5942d7ccd49599aae549c0bd5d906868eaeb39481088e55001d65f4784"
|
||||||
}
|
}
|
||||||
|
|||||||
61
manifests/mdbook-d2.json
generated
Normal file
61
manifests/mdbook-d2.json
generated
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
{
|
||||||
|
"rust_crate": "mdbook-d2",
|
||||||
|
"template": {
|
||||||
|
"x86_64_linux_musl": {
|
||||||
|
"url": "https://github.com/danieleades/mdbook-d2/releases/download/v${version}/mdbook-d2-x86_64-unknown-linux-musl.tar.gz",
|
||||||
|
"bin": "mdbook-d2"
|
||||||
|
},
|
||||||
|
"x86_64_macos": {
|
||||||
|
"url": "https://github.com/danieleades/mdbook-d2/releases/download/v${version}/mdbook-d2-x86_64-apple-darwin.tar.gz",
|
||||||
|
"bin": "mdbook-d2"
|
||||||
|
},
|
||||||
|
"x86_64_windows": {
|
||||||
|
"url": "https://github.com/danieleades/mdbook-d2/releases/download/v${version}/mdbook-d2-x86_64-pc-windows-msvc.tar.gz",
|
||||||
|
"bin": "mdbook-d2.exe"
|
||||||
|
},
|
||||||
|
"aarch64_linux_musl": {
|
||||||
|
"url": "https://github.com/danieleades/mdbook-d2/releases/download/v${version}/mdbook-d2-aarch64-unknown-linux-musl.tar.gz",
|
||||||
|
"bin": "mdbook-d2"
|
||||||
|
},
|
||||||
|
"aarch64_macos": {
|
||||||
|
"url": "https://github.com/danieleades/mdbook-d2/releases/download/v${version}/mdbook-d2-aarch64-apple-darwin.tar.gz",
|
||||||
|
"bin": "mdbook-d2"
|
||||||
|
},
|
||||||
|
"aarch64_windows": {
|
||||||
|
"url": "https://github.com/danieleades/mdbook-d2/releases/download/v${version}/mdbook-d2-aarch64-pc-windows-msvc.tar.gz",
|
||||||
|
"bin": "mdbook-d2.exe"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"latest": {
|
||||||
|
"version": "0.3.8"
|
||||||
|
},
|
||||||
|
"0.3": {
|
||||||
|
"version": "0.3.8"
|
||||||
|
},
|
||||||
|
"0.3.8": {
|
||||||
|
"x86_64_linux_musl": {
|
||||||
|
"etag": "0x8DE4D1050CFDFE1",
|
||||||
|
"hash": "6601ff37d3f220db0c9617b85c7e80f985a13ea75e2b6bb88b5158ea429455b6"
|
||||||
|
},
|
||||||
|
"x86_64_macos": {
|
||||||
|
"etag": "0x8DE4D104B08EF36",
|
||||||
|
"hash": "0ce3bf83daa8f4d458d9acf3cc5e9af1fc85d864854439a8a7d45a9a48166eaf"
|
||||||
|
},
|
||||||
|
"x86_64_windows": {
|
||||||
|
"etag": "0x8DE4D106181D5F5",
|
||||||
|
"hash": "89ba967c1f95b32d05612183b9752aeccafa749d5dce0680fb9dcbfda24285fd"
|
||||||
|
},
|
||||||
|
"aarch64_linux_musl": {
|
||||||
|
"etag": "0x8DE4D104E5464C8",
|
||||||
|
"hash": "84f37cb1d89f6fabbefb5581205f93035fe5d9f2ace32f01cb76622cb563a9c1"
|
||||||
|
},
|
||||||
|
"aarch64_macos": {
|
||||||
|
"etag": "0x8DE4D104A941BA3",
|
||||||
|
"hash": "dcd49feace49c4adce583cfab121885cd84b746fdad6ebc99ca36eb52272f849"
|
||||||
|
},
|
||||||
|
"aarch64_windows": {
|
||||||
|
"etag": "0x8DE4D1061C79129",
|
||||||
|
"hash": "6cc7507acae02d73719b260dffd33c3b1d74029cfa97cc7edfe220f8489aef02"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
33
manifests/mise.json
generated
33
manifests/mise.json
generated
@@ -27,10 +27,39 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"latest": {
|
"latest": {
|
||||||
"version": "2026.4.28"
|
"version": "2026.5.0"
|
||||||
},
|
},
|
||||||
"2026": {
|
"2026": {
|
||||||
"version": "2026.4.28"
|
"version": "2026.5.0"
|
||||||
|
},
|
||||||
|
"2026.5": {
|
||||||
|
"version": "2026.5.0"
|
||||||
|
},
|
||||||
|
"2026.5.0": {
|
||||||
|
"x86_64_linux_musl": {
|
||||||
|
"etag": "0x8DEA9471A2EEE95",
|
||||||
|
"hash": "f47a11b64b32f94db74b6792601bd9b0440bf4fe4d1e54056738b3e1eeff13db"
|
||||||
|
},
|
||||||
|
"x86_64_macos": {
|
||||||
|
"etag": "0x8DEA9471C55F180",
|
||||||
|
"hash": "8335873c9280e2dca0b1ceeb0298f2905188732fe128e0f97672f7796bdecbd7"
|
||||||
|
},
|
||||||
|
"x86_64_windows": {
|
||||||
|
"etag": "0x8DEA9471D67181D",
|
||||||
|
"hash": "053de50b0ee574a40ebcca667c17e27b06423bfed3779c623970e0e36e1d6405"
|
||||||
|
},
|
||||||
|
"aarch64_linux_musl": {
|
||||||
|
"etag": "0x8DEA94716D421D2",
|
||||||
|
"hash": "9ff141301ad0eb05ed98c45195de6af9f4f6a2b7ec8ae1acab845e65e4aa1c43"
|
||||||
|
},
|
||||||
|
"aarch64_macos": {
|
||||||
|
"etag": "0x8DEA9471BAE1289",
|
||||||
|
"hash": "c4b34f7d4831f7d296bbd3b1ae50ecca5cbe404650575472c0db6bcaad8bb4e5"
|
||||||
|
},
|
||||||
|
"aarch64_windows": {
|
||||||
|
"etag": "0x8DEA9471D4C0D77",
|
||||||
|
"hash": "43bfe834b2c420b467114cea698f08b8aee26b6be748ec046e8a06915d5003ac"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"2026.4": {
|
"2026.4": {
|
||||||
"version": "2026.4.28"
|
"version": "2026.4.28"
|
||||||
|
|||||||
6
manifests/osv-scanner.json
generated
6
manifests/osv-scanner.json
generated
@@ -2,13 +2,13 @@
|
|||||||
"rust_crate": null,
|
"rust_crate": null,
|
||||||
"template": null,
|
"template": null,
|
||||||
"latest": {
|
"latest": {
|
||||||
"version": "2.3.5"
|
"version": "2.3.6"
|
||||||
},
|
},
|
||||||
"2": {
|
"2": {
|
||||||
"version": "2.3.5"
|
"version": "2.3.6"
|
||||||
},
|
},
|
||||||
"2.3": {
|
"2.3": {
|
||||||
"version": "2.3.5"
|
"version": "2.3.6"
|
||||||
},
|
},
|
||||||
"2.3.6": {
|
"2.3.6": {
|
||||||
"x86_64_linux_musl": {
|
"x86_64_linux_musl": {
|
||||||
|
|||||||
7
manifests/rclone.json
generated
7
manifests/rclone.json
generated
@@ -27,10 +27,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"latest": {
|
"latest": {
|
||||||
"version": "1.73.5"
|
"version": "1.74.0"
|
||||||
},
|
},
|
||||||
"1": {
|
"1": {
|
||||||
"version": "1.73.5"
|
"version": "1.74.0"
|
||||||
|
},
|
||||||
|
"1.74": {
|
||||||
|
"version": "1.74.0"
|
||||||
},
|
},
|
||||||
"1.74.0": {
|
"1.74.0": {
|
||||||
"x86_64_linux_musl": {
|
"x86_64_linux_musl": {
|
||||||
|
|||||||
7
manifests/syft.json
generated
7
manifests/syft.json
generated
@@ -35,10 +35,13 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"latest": {
|
"latest": {
|
||||||
"version": "1.43.0"
|
"version": "1.44.0"
|
||||||
},
|
},
|
||||||
"1": {
|
"1": {
|
||||||
"version": "1.43.0"
|
"version": "1.44.0"
|
||||||
|
},
|
||||||
|
"1.44": {
|
||||||
|
"version": "1.44.0"
|
||||||
},
|
},
|
||||||
"1.44.0": {
|
"1.44.0": {
|
||||||
"x86_64_linux_musl": {
|
"x86_64_linux_musl": {
|
||||||
|
|||||||
76
manifests/tombi.json
generated
76
manifests/tombi.json
generated
@@ -2,10 +2,82 @@
|
|||||||
"rust_crate": null,
|
"rust_crate": null,
|
||||||
"template": null,
|
"template": null,
|
||||||
"latest": {
|
"latest": {
|
||||||
"version": "0.10.1"
|
"version": "0.10.2"
|
||||||
},
|
},
|
||||||
"0.10": {
|
"0.10": {
|
||||||
"version": "0.10.1"
|
"version": "0.10.2"
|
||||||
|
},
|
||||||
|
"0.10.3": {
|
||||||
|
"x86_64_linux_musl": {
|
||||||
|
"url": "https://github.com/tombi-toml/tombi/releases/download/v0.10.3/tombi-cli-0.10.3-x86_64-unknown-linux-musl.tar.gz",
|
||||||
|
"etag": "0x8DEA9E19B70067F",
|
||||||
|
"hash": "179a43d5f9656ead70477de4b09c9bdd869ba386618d0b2e2c255b3473dd0593",
|
||||||
|
"bin": "tombi-cli-0.10.3-x86_64-unknown-linux-musl/tombi"
|
||||||
|
},
|
||||||
|
"x86_64_macos": {
|
||||||
|
"url": "https://github.com/tombi-toml/tombi/releases/download/v0.10.3/tombi-cli-0.10.3-x86_64-apple-darwin.tar.gz",
|
||||||
|
"etag": "0x8DEA9E19A72ED10",
|
||||||
|
"hash": "e6418659f2ed54c3c1a371cdd9c2281880a8cbba047caf920067843e7bdc7c10",
|
||||||
|
"bin": "tombi-cli-0.10.3-x86_64-apple-darwin/tombi"
|
||||||
|
},
|
||||||
|
"x86_64_windows": {
|
||||||
|
"url": "https://github.com/tombi-toml/tombi/releases/download/v0.10.3/tombi-cli-0.10.3-x86_64-pc-windows-msvc.zip",
|
||||||
|
"etag": "0x8DEA9E19A8E6C75",
|
||||||
|
"hash": "0972c9dbbc7a83b30c992c3ac564c6601aca3776c004d9e1b300f03bb410975d"
|
||||||
|
},
|
||||||
|
"aarch64_linux_musl": {
|
||||||
|
"url": "https://github.com/tombi-toml/tombi/releases/download/v0.10.3/tombi-cli-0.10.3-aarch64-unknown-linux-musl.tar.gz",
|
||||||
|
"etag": "0x8DEA9E19A7754EA",
|
||||||
|
"hash": "7c7e0e7950086947137f6d453a0e6137ae08baa5bed491cb10af0528f56768aa",
|
||||||
|
"bin": "tombi-cli-0.10.3-aarch64-unknown-linux-musl/tombi"
|
||||||
|
},
|
||||||
|
"aarch64_macos": {
|
||||||
|
"url": "https://github.com/tombi-toml/tombi/releases/download/v0.10.3/tombi-cli-0.10.3-aarch64-apple-darwin.tar.gz",
|
||||||
|
"etag": "0x8DEA9E19A82B9C9",
|
||||||
|
"hash": "f28035c9bf37d3a3ef73047ba1f31dcdfb9531ff6fe278dcfef1ad6c13c8d5bc",
|
||||||
|
"bin": "tombi-cli-0.10.3-aarch64-apple-darwin/tombi"
|
||||||
|
},
|
||||||
|
"aarch64_windows": {
|
||||||
|
"url": "https://github.com/tombi-toml/tombi/releases/download/v0.10.3/tombi-cli-0.10.3-aarch64-pc-windows-msvc.zip",
|
||||||
|
"etag": "0x8DEA9E19B1B40FC",
|
||||||
|
"hash": "7554606c2e2feb809c748042eb05e3e7303d830e93123e6acad7c53b5ace99da"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"0.10.2": {
|
||||||
|
"x86_64_linux_musl": {
|
||||||
|
"url": "https://github.com/tombi-toml/tombi/releases/download/v0.10.2/tombi-cli-0.10.2-x86_64-unknown-linux-musl.tar.gz",
|
||||||
|
"etag": "0x8DEA86927EBA7E7",
|
||||||
|
"hash": "c4268eaaea8a7eb23c8578b5d8976b2490e748670a3725db4f5e4352f9d3076c",
|
||||||
|
"bin": "tombi-cli-0.10.2-x86_64-unknown-linux-musl/tombi"
|
||||||
|
},
|
||||||
|
"x86_64_macos": {
|
||||||
|
"url": "https://github.com/tombi-toml/tombi/releases/download/v0.10.2/tombi-cli-0.10.2-x86_64-apple-darwin.tar.gz",
|
||||||
|
"etag": "0x8DEA86927DE9741",
|
||||||
|
"hash": "b3ed94dc4396f565728a7ccb08de466de13607b3f4e73741ab5a3d13571e46f7",
|
||||||
|
"bin": "tombi-cli-0.10.2-x86_64-apple-darwin/tombi"
|
||||||
|
},
|
||||||
|
"x86_64_windows": {
|
||||||
|
"url": "https://github.com/tombi-toml/tombi/releases/download/v0.10.2/tombi-cli-0.10.2-x86_64-pc-windows-msvc.zip",
|
||||||
|
"etag": "0x8DEA86927F5AEC2",
|
||||||
|
"hash": "8ecfb32d7fe90612a626a25500fa92a9b4e42dbad6a00f202849901a058dd6a7"
|
||||||
|
},
|
||||||
|
"aarch64_linux_musl": {
|
||||||
|
"url": "https://github.com/tombi-toml/tombi/releases/download/v0.10.2/tombi-cli-0.10.2-aarch64-unknown-linux-musl.tar.gz",
|
||||||
|
"etag": "0x8DEA869285CD610",
|
||||||
|
"hash": "9cb16ec45802bc84cb76bb955facb4f1c5de9bd36f349075765ed12d180ceccf",
|
||||||
|
"bin": "tombi-cli-0.10.2-aarch64-unknown-linux-musl/tombi"
|
||||||
|
},
|
||||||
|
"aarch64_macos": {
|
||||||
|
"url": "https://github.com/tombi-toml/tombi/releases/download/v0.10.2/tombi-cli-0.10.2-aarch64-apple-darwin.tar.gz",
|
||||||
|
"etag": "0x8DEA86927DA2F62",
|
||||||
|
"hash": "e456b5518923f1c3b3b136aa92c57aa9ffc6f27d8ce155af337509d3f5a3a619",
|
||||||
|
"bin": "tombi-cli-0.10.2-aarch64-apple-darwin/tombi"
|
||||||
|
},
|
||||||
|
"aarch64_windows": {
|
||||||
|
"url": "https://github.com/tombi-toml/tombi/releases/download/v0.10.2/tombi-cli-0.10.2-aarch64-pc-windows-msvc.zip",
|
||||||
|
"etag": "0x8DEA86927F2095A",
|
||||||
|
"hash": "532d25f214564bf685b2bfbd21cf2202c70ff4d8c66b0e449ca669bcffd9eba2"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"0.10.1": {
|
"0.10.1": {
|
||||||
"x86_64_linux_musl": {
|
"x86_64_linux_musl": {
|
||||||
|
|||||||
@@ -30,9 +30,14 @@ for manifest in manifests/*.json; do
|
|||||||
git stash pop
|
git stash pop
|
||||||
new_version=$(jq -r '.latest.version' "${manifest}")
|
new_version=$(jq -r '.latest.version' "${manifest}")
|
||||||
if [[ "${old_version}" != "${new_version}" ]]; then
|
if [[ "${old_version}" != "${new_version}" ]]; then
|
||||||
# TODO: If there is a line about updating the same tool in the "Unreleased" section, replace it.
|
unreleased=$(parse-changelog CHANGELOG.md Unreleased)
|
||||||
msg="Update \`${name}@latest\` to ${new_version}"
|
msg="Update \`${name}@latest\` to ${new_version}"
|
||||||
|
if grep -Eq "^- Update \`${name}@latest\` to " <<<"${unreleased}"; then
|
||||||
|
# If there is a line about updating the same tool in the "Unreleased" section, replace it.
|
||||||
|
sed -Ei "0,/^- Update \`${name}@latest\` to .*/s//- ${msg}./" CHANGELOG.md
|
||||||
|
else
|
||||||
sed -Ei "s/^## \\[Unreleased\\]/## [Unreleased]\\n\\n- ${msg}./" CHANGELOG.md
|
sed -Ei "s/^## \\[Unreleased\\]/## [Unreleased]\\n\\n- ${msg}./" CHANGELOG.md
|
||||||
|
fi
|
||||||
git add "${manifest}" CHANGELOG.md
|
git add "${manifest}" CHANGELOG.md
|
||||||
else
|
else
|
||||||
msg="Update ${name} manifest"
|
msg="Update ${name} manifest"
|
||||||
|
|||||||
@@ -6,11 +6,13 @@ trap -- 's=$?; printf >&2 "%s\n" "${0##*/}:${LINENO}: \`${BASH_COMMAND}\` exit w
|
|||||||
cd -- "$(dirname -- "$0")"/../..
|
cd -- "$(dirname -- "$0")"/../..
|
||||||
|
|
||||||
# They don't provide prebuilt binaries for musl or old glibc host.
|
# They don't provide prebuilt binaries for musl or old glibc host.
|
||||||
# version `GLIBC_2.35' not found
|
# version `GLIBC_2.39' not found
|
||||||
glibc_pre_2_39_incompat=(
|
glibc_pre_2_39_incompat=(
|
||||||
cargo-deb
|
cargo-deb
|
||||||
|
cargo-spellcheck
|
||||||
zizmor
|
zizmor
|
||||||
)
|
)
|
||||||
|
# version `GLIBC_2.35' not found
|
||||||
glibc_pre_2_35_incompat=(
|
glibc_pre_2_35_incompat=(
|
||||||
"${glibc_pre_2_39_incompat[@]}"
|
"${glibc_pre_2_39_incompat[@]}"
|
||||||
zola
|
zola
|
||||||
@@ -19,7 +21,6 @@ glibc_pre_2_35_incompat=(
|
|||||||
glibc_pre_2_34_incompat=(
|
glibc_pre_2_34_incompat=(
|
||||||
"${glibc_pre_2_35_incompat[@]}"
|
"${glibc_pre_2_35_incompat[@]}"
|
||||||
cargo-sort
|
cargo-sort
|
||||||
cargo-spellcheck
|
|
||||||
espup
|
espup
|
||||||
wait-for-them
|
wait-for-them
|
||||||
xbuild
|
xbuild
|
||||||
@@ -47,6 +48,7 @@ glibc_pre_2_27_incompat=(
|
|||||||
glibc_pre_2_17_incompat=(
|
glibc_pre_2_17_incompat=(
|
||||||
"${glibc_pre_2_27_incompat[@]}"
|
"${glibc_pre_2_27_incompat[@]}"
|
||||||
deepsource # https://github.com/DeepSourceCorp/cli/issues/245
|
deepsource # https://github.com/DeepSourceCorp/cli/issues/245
|
||||||
|
rust
|
||||||
)
|
)
|
||||||
musl_incompat=(
|
musl_incompat=(
|
||||||
"${glibc_pre_2_17_incompat[@]}"
|
"${glibc_pre_2_17_incompat[@]}"
|
||||||
@@ -149,6 +151,10 @@ for manifest in tools/codegen/base/*.json; do
|
|||||||
fi
|
fi
|
||||||
case "${host_os}" in
|
case "${host_os}" in
|
||||||
linux*)
|
linux*)
|
||||||
|
# cargo-apple-runner is not supported on Linux
|
||||||
|
if [[ "${tool_name}" == "cargo-apple-runner" ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
if [[ "${host_arch}" != "x86_64" ]] && [[ "$(jq -r --arg p "${host_arch}_${host_os}_gnu" '.platform[$p]' "${manifest}")" == "null" ]] && [[ "$(jq -r --arg p "${host_arch}_${host_os}_musl" '.platform[$p]' "${manifest}")" == "null" ]]; then
|
if [[ "${host_arch}" != "x86_64" ]] && [[ "$(jq -r --arg p "${host_arch}_${host_os}_gnu" '.platform[$p]' "${manifest}")" == "null" ]] && [[ "$(jq -r --arg p "${host_arch}_${host_os}_musl" '.platform[$p]' "${manifest}")" == "null" ]]; then
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
@@ -189,14 +195,48 @@ if [[ "${version}" != "latest" ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Not manifest-based
|
# Not manifest-based
|
||||||
|
case "${runner}" in
|
||||||
|
# requires glibc 2.17 / musl 1.2
|
||||||
|
centos:6 | alpine:3.2) ;;
|
||||||
|
*)
|
||||||
|
case $((RANDOM % 4)) in
|
||||||
|
0) rust=rust ;;
|
||||||
|
1) rust=rust@stable ;;
|
||||||
|
2) rust=rust@nightly ;;
|
||||||
|
3) rust=rust@1.93 ;;
|
||||||
|
esac
|
||||||
|
case $((RANDOM % 3)) in
|
||||||
|
0) ;;
|
||||||
|
1) rust+='+thumbv6m-none-eabi' ;;
|
||||||
|
2) rust+=' + thumbv6m-none-eabi' ;;
|
||||||
|
esac
|
||||||
|
if [[ "${rust}" == *'nightly'* ]]; then
|
||||||
|
component=miri
|
||||||
|
else
|
||||||
|
component=rustfmt
|
||||||
|
fi
|
||||||
|
case $((RANDOM % 5)) in
|
||||||
|
0) ;;
|
||||||
|
1) rust+="+${component}" ;;
|
||||||
|
2) rust+=" + ${component}" ;;
|
||||||
|
3) rust+=" +${component}" ;;
|
||||||
|
4) rust+="+ ${component}" ;;
|
||||||
|
esac
|
||||||
|
case $((RANDOM % 3)) in
|
||||||
|
0) ;;
|
||||||
|
1) rust+='+thumbv7m-none-eabi' ;;
|
||||||
|
2) rust+=' + thumbv7m-none-eabi' ;;
|
||||||
|
esac
|
||||||
|
tools+=("${rust}")
|
||||||
|
;;
|
||||||
|
esac
|
||||||
case "${host_os}" in
|
case "${host_os}" in
|
||||||
linux*)
|
linux*)
|
||||||
# TODO: disable valgrind due to Canonical's incident.
|
|
||||||
# Installing snap to container is difficult...
|
# Installing snap to container is difficult...
|
||||||
# Specifying the version of valgrind is not supported.
|
# Specifying the version of valgrind is not supported.
|
||||||
# if type -P snap >/dev/null && [[ "${version}" == "latest" ]]; then
|
if type -P snap >/dev/null && [[ "${version}" == "latest" ]]; then
|
||||||
# tools+=(valgrind)
|
tools+=(valgrind)
|
||||||
# fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
# cargo-watch/watchexec-cli is supported by cargo-binstall (through quickinstall)
|
# cargo-watch/watchexec-cli is supported by cargo-binstall (through quickinstall)
|
||||||
|
|||||||
11
tools/codegen/base/cargo-apple-runner.json
Normal file
11
tools/codegen/base/cargo-apple-runner.json
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"repository": "https://github.com/madsmtm/cargo-apple-runner",
|
||||||
|
"license_markdown": "[Zlib](https://github.com/madsmtm/cargo-apple-runner/blob/main/LICENSE-ZLIB.txt) OR [Apache-2.0](https://github.com/madsmtm/cargo-apple-runner/blob/main/LICENSE-APACHE.txt) OR [MIT](https://github.com/madsmtm/cargo-apple-runner/blob/main/LICENSE-MIT.txt)",
|
||||||
|
"tag_prefix": "v",
|
||||||
|
"rust_crate": "${package}",
|
||||||
|
"asset_name": "${package}-${rust_target}.tar.gz",
|
||||||
|
"platform": {
|
||||||
|
"x86_64_macos": {},
|
||||||
|
"aarch64_macos": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
"tag_prefix": "v",
|
"tag_prefix": "v",
|
||||||
"rust_crate": "${package}",
|
"rust_crate": "${package}",
|
||||||
"asset_name": "${package}-${rust_target}.zip",
|
"asset_name": "${package}-${rust_target}.zip",
|
||||||
"version_range": "latest",
|
"version_range": "=1.18.1",
|
||||||
"signing": {
|
"signing": {
|
||||||
"kind": "minisign-binstall"
|
"kind": "minisign-binstall"
|
||||||
},
|
},
|
||||||
@@ -18,6 +18,9 @@
|
|||||||
"asset_name": "${package}-${rust_target}.tgz"
|
"asset_name": "${package}-${rust_target}.tgz"
|
||||||
},
|
},
|
||||||
"aarch64_macos": {},
|
"aarch64_macos": {},
|
||||||
"aarch64_windows": {}
|
"aarch64_windows": {},
|
||||||
|
"riscv64_linux_musl": {
|
||||||
|
"asset_name": "${package}-${rust_target}.tgz"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,12 +3,17 @@
|
|||||||
"license_markdown": "[LGPLv2.1](https://github.com/drahnr/cargo-spellcheck/blob/master/LICENSE-LGPL)",
|
"license_markdown": "[LGPLv2.1](https://github.com/drahnr/cargo-spellcheck/blob/master/LICENSE-LGPL)",
|
||||||
"tag_prefix": "v",
|
"tag_prefix": "v",
|
||||||
"rust_crate": "${package}",
|
"rust_crate": "${package}",
|
||||||
"asset_name": "${package}-v${version}-${rust_target}",
|
"asset_name": "${package}-v${version}-${rust_target}${exe}",
|
||||||
"version_range": ">= 0.13",
|
"version_range": ">= 0.13",
|
||||||
"platform": {
|
"platform": {
|
||||||
"x86_64_linux_gnu": {},
|
"x86_64_linux_gnu": {},
|
||||||
"x86_64_windows": {
|
"x86_64_windows": {
|
||||||
"asset_name": "${package}-v${version}-x86_64-pc-windows-gnu.exe"
|
"asset_name": [
|
||||||
}
|
"${package}-v${version}-${rust_target}${exe}",
|
||||||
|
"${package}-v${version}-x86_64-pc-windows-gnu${exe}"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"aarch64_linux_gnu": {},
|
||||||
|
"aarch64_windows": {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
20
tools/codegen/base/mdbook-d2.json
Normal file
20
tools/codegen/base/mdbook-d2.json
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"repository": "https://github.com/danieleades/mdbook-d2",
|
||||||
|
"license_markdown": "[MIT](https://github.com/danieleades/mdbook-d2/blob/main/LICENSE)",
|
||||||
|
"tag_prefix": "v",
|
||||||
|
"rust_crate": "${package}",
|
||||||
|
"asset_name": [
|
||||||
|
"${package}-${rust_target}.tar.gz",
|
||||||
|
"${package}-${rust_target}.zip"
|
||||||
|
],
|
||||||
|
"bin": "${package}${exe}",
|
||||||
|
"version_range": ">= 0.3.8",
|
||||||
|
"platform": {
|
||||||
|
"x86_64_linux_musl": {},
|
||||||
|
"x86_64_macos": {},
|
||||||
|
"x86_64_windows": {},
|
||||||
|
"aarch64_linux_musl": {},
|
||||||
|
"aarch64_macos": {},
|
||||||
|
"aarch64_windows": {}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -129,7 +129,9 @@ fn main() {
|
|||||||
|
|
||||||
let mut latest_only = false;
|
let mut latest_only = false;
|
||||||
if let Some(version_range) = &base_info.version_range {
|
if let Some(version_range) = &base_info.version_range {
|
||||||
if version_range == "latest" {
|
if version_range == "latest"
|
||||||
|
|| version_range.starts_with('=') && !version_range.contains(',')
|
||||||
|
{
|
||||||
latest_only = true;
|
latest_only = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -171,13 +173,20 @@ fn main() {
|
|||||||
|
|
||||||
let version_req: semver::VersionReq = match version_req {
|
let version_req: semver::VersionReq = match version_req {
|
||||||
_ if latest_only => {
|
_ if latest_only => {
|
||||||
|
let version_range = base_info.version_range.as_ref().unwrap();
|
||||||
|
if version_range == "latest" {
|
||||||
// Exclude very recently released version from candidate for latest version.
|
// Exclude very recently released version from candidate for latest version.
|
||||||
let req =
|
let req = format!(
|
||||||
format!("={}", releases.iter().find(|r| r.1.1.published_at <= before).unwrap().0.0)
|
"={}",
|
||||||
|
releases.iter().find(|r| r.1.1.published_at <= before).unwrap().0.0
|
||||||
|
)
|
||||||
.parse()
|
.parse()
|
||||||
.unwrap();
|
.unwrap();
|
||||||
eprintln!("update manifest for versions '{req}'");
|
eprintln!("update manifest for versions '{req}'");
|
||||||
req
|
req
|
||||||
|
} else {
|
||||||
|
version_range.parse().unwrap()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
None => match base_info.version_range {
|
None => match base_info.version_range {
|
||||||
Some(version_range) => version_range.parse().unwrap(),
|
Some(version_range) => version_range.parse().unwrap(),
|
||||||
|
|||||||
@@ -52,7 +52,20 @@ fn main() {
|
|||||||
let mut paths: Vec<_> = fs::read_dir(&manifest_dir).unwrap().map(|r| r.unwrap()).collect();
|
let mut paths: Vec<_> = fs::read_dir(&manifest_dir).unwrap().map(|r| r.unwrap()).collect();
|
||||||
paths.sort_by_key(fs_err::DirEntry::path);
|
paths.sort_by_key(fs_err::DirEntry::path);
|
||||||
|
|
||||||
let mut tools = vec"
|
||||||
|
.to_owned(),
|
||||||
|
},
|
||||||
|
MarkdownEntry {
|
||||||
name: "valgrind".to_owned(),
|
name: "valgrind".to_owned(),
|
||||||
alias: None,
|
alias: None,
|
||||||
website: "https://valgrind.org/".to_owned(),
|
website: "https://valgrind.org/".to_owned(),
|
||||||
@@ -63,7 +76,8 @@ fn main() {
|
|||||||
license_markdown:
|
license_markdown:
|
||||||
"[GPL-2.0](https://sourceware.org/git/?p=valgrind.git;a=blob;f=COPYING;hb=HEAD)"
|
"[GPL-2.0](https://sourceware.org/git/?p=valgrind.git;a=blob;f=COPYING;hb=HEAD)"
|
||||||
.to_owned(),
|
.to_owned(),
|
||||||
}];
|
},
|
||||||
|
];
|
||||||
|
|
||||||
for path in paths {
|
for path in paths {
|
||||||
let file_name = path.file_name();
|
let file_name = path.file_name();
|
||||||
@@ -153,6 +167,7 @@ struct MarkdownEntry {
|
|||||||
#[derive(Debug, Eq, PartialEq)]
|
#[derive(Debug, Eq, PartialEq)]
|
||||||
enum InstalledFrom {
|
enum InstalledFrom {
|
||||||
GitHubRelease,
|
GitHubRelease,
|
||||||
|
Rustup,
|
||||||
Snap,
|
Snap,
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -215,6 +230,9 @@ impl fmt::Display for MarkdownEntry {
|
|||||||
let markdown = format!("| [GitHub Releases]({}/releases) ", self.repository);
|
let markdown = format!("| [GitHub Releases]({}/releases) ", self.repository);
|
||||||
f.write_str(&markdown)?;
|
f.write_str(&markdown)?;
|
||||||
}
|
}
|
||||||
|
InstalledFrom::Rustup => {
|
||||||
|
f.write_str("| rustup ")?;
|
||||||
|
}
|
||||||
InstalledFrom::Snap => {
|
InstalledFrom::Snap => {
|
||||||
let markdown =
|
let markdown =
|
||||||
format!("| [snap](https://snapcraft.io/install/{}/ubuntu) ", self.name);
|
format!("| [snap](https://snapcraft.io/install/{}/ubuntu) ", self.name);
|
||||||
|
|||||||
37
tools/rustup-hash.sh
Executable file
37
tools/rustup-hash.sh
Executable file
@@ -0,0 +1,37 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# SPDX-License-Identifier: Apache-2.0 OR MIT
|
||||||
|
set -CeEuo pipefail
|
||||||
|
IFS=$'\n\t'
|
||||||
|
trap -- 's=$?; printf >&2 "%s\n" "${0##*/}:${LINENO}: \`${BASH_COMMAND}\` exit with ${s}"; exit ${s}' ERR
|
||||||
|
cd -- "$(dirname -- "$0")"/..
|
||||||
|
|
||||||
|
# Get sha256 hash of rustup-init binaries
|
||||||
|
|
||||||
|
# NB: Synch with main.sh.
|
||||||
|
rustup_version=1.29.0
|
||||||
|
targets=(
|
||||||
|
x86_64-unknown-linux-gnu
|
||||||
|
x86_64-unknown-linux-musl
|
||||||
|
aarch64-unknown-linux-gnu
|
||||||
|
aarch64-unknown-linux-musl
|
||||||
|
powerpc64le-unknown-linux-gnu
|
||||||
|
powerpc64le-unknown-linux-musl
|
||||||
|
riscv64gc-unknown-linux-gnu
|
||||||
|
# riscv64gc-unknown-linux-musl # tier 2 without host tools
|
||||||
|
s390x-unknown-linux-gnu
|
||||||
|
# s390x-unknown-linux-musl # tier 3
|
||||||
|
x86_64-apple-darwin
|
||||||
|
aarch64-apple-darwin
|
||||||
|
x86_64-pc-windows-msvc
|
||||||
|
aarch64-pc-windows-msvc
|
||||||
|
)
|
||||||
|
|
||||||
|
for rust_target in "${targets[@]}"; do
|
||||||
|
exe=''
|
||||||
|
case "${rust_target}" in
|
||||||
|
*-windows*) exe=.exe ;;
|
||||||
|
esac
|
||||||
|
url="https://static.rust-lang.org/rustup/archive/${rustup_version}/${rust_target}/rustup-init${exe}.sha256"
|
||||||
|
printf '%s: ' "${rust_target}"
|
||||||
|
curl --proto '=https' --tlsv1.2 -fsSL --retry 10 "${url}" | cut -d' ' -f1
|
||||||
|
done
|
||||||
@@ -9,13 +9,22 @@ cd -- "$(dirname -- "$0")"/..
|
|||||||
# GITHUB_TOKEN=$(gh auth token) ./tools/tidy.sh
|
# GITHUB_TOKEN=$(gh auth token) ./tools/tidy.sh
|
||||||
#
|
#
|
||||||
# Note: This script requires the following tools:
|
# Note: This script requires the following tools:
|
||||||
# - docker
|
# - docker or podman (or compatible CLI specified by TIDY_DOCKER_PATH. when both available and TIDY_DOCKER_PATH is not set, docker is preferred)
|
||||||
#
|
#
|
||||||
# This script is shared by projects under github.com/taiki-e, so there may also
|
# This script is shared by projects under github.com/taiki-e, so there may also
|
||||||
# be checks for files not included in this repository, but they will be skipped
|
# be checks for files not included in this repository, but they will be skipped
|
||||||
# if the corresponding files do not exist.
|
# if the corresponding files do not exist.
|
||||||
# It is not intended for manual editing.
|
# It is not intended for manual editing.
|
||||||
|
|
||||||
|
bail() {
|
||||||
|
if [[ -n "${GITHUB_ACTIONS:-}" ]]; then
|
||||||
|
printf '::error::%s\n' "$*"
|
||||||
|
else
|
||||||
|
printf >&2 'error: %s\n' "$*"
|
||||||
|
fi
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
if [[ $# -gt 0 ]]; then
|
if [[ $# -gt 0 ]]; then
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
USAGE:
|
USAGE:
|
||||||
@@ -24,10 +33,11 @@ EOF
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
image='ghcr.io/taiki-e/tidy'
|
||||||
if [[ -n "${TIDY_DEV:-}" ]]; then
|
if [[ -n "${TIDY_DEV:-}" ]]; then
|
||||||
image="ghcr.io/taiki-e/tidy:latest"
|
image+=':latest'
|
||||||
else
|
else
|
||||||
image="ghcr.io/taiki-e/tidy@sha256:71def761a5585e83a2672c4051aee13cd886ad5571215aee52f193454bb3cdff"
|
image+='@sha256:4d7ec52a86bd3c0a2d96627b0ec3aa534afc02c2d56fc9a898df64e29aa03312'
|
||||||
fi
|
fi
|
||||||
user="$(id -u):$(id -g)"
|
user="$(id -u):$(id -g)"
|
||||||
workdir=$(pwd)
|
workdir=$(pwd)
|
||||||
@@ -40,8 +50,12 @@ color=''
|
|||||||
if [[ -t 1 ]] || [[ -n "${GITHUB_ACTIONS:-}" ]]; then
|
if [[ -t 1 ]] || [[ -n "${GITHUB_ACTIONS:-}" ]]; then
|
||||||
color=1
|
color=1
|
||||||
fi
|
fi
|
||||||
|
# Refs:
|
||||||
|
# - https://docs.docker.com/reference/cli/docker/container/run/
|
||||||
|
# - https://docs.podman.io/en/latest/markdown/podman-run.1.html
|
||||||
|
# - https://cheatsheetseries.owasp.org/cheatsheets/Docker_Security_Cheat_Sheet.html
|
||||||
common_args=(
|
common_args=(
|
||||||
run --rm --init -i --user "${user}"
|
run --rm --init
|
||||||
--cap-drop=all
|
--cap-drop=all
|
||||||
--security-opt=no-new-privileges
|
--security-opt=no-new-privileges
|
||||||
--read-only
|
--read-only
|
||||||
@@ -59,6 +73,30 @@ common_args=(
|
|||||||
--env TIDY_EXPECTED_SHELL_FILE_COUNT
|
--env TIDY_EXPECTED_SHELL_FILE_COUNT
|
||||||
--env TIDY_EXPECTED_DOCKER_FILE_COUNT
|
--env TIDY_EXPECTED_DOCKER_FILE_COUNT
|
||||||
)
|
)
|
||||||
|
if [[ -n "${TIDY_DOCKER_PATH:-}" ]]; then
|
||||||
|
docker="${TIDY_DOCKER_PATH}"
|
||||||
|
elif type -P docker >/dev/null; then
|
||||||
|
docker='docker'
|
||||||
|
elif type -P podman >/dev/null; then
|
||||||
|
docker='podman'
|
||||||
|
else
|
||||||
|
bail 'this script requires docker or podman'
|
||||||
|
fi
|
||||||
|
rootless=''
|
||||||
|
if [[ "$("${docker}" --version)" == *'podman'* ]]; then
|
||||||
|
if [[ "$("${docker}" info)" == *'rootless: true'* ]]; then
|
||||||
|
rootless=1
|
||||||
|
fi
|
||||||
|
elif [[ "$("${docker}" info -f '{{println .SecurityOptions}}')" == *'rootless'* ]]; then
|
||||||
|
rootless=1
|
||||||
|
fi
|
||||||
|
if [[ -n "${rootless}" ]]; then
|
||||||
|
printf 'docker path: %s\n' "${docker} (rootless)"
|
||||||
|
else
|
||||||
|
printf 'docker path: %s\n' "${docker}"
|
||||||
|
common_args+=(--user "${user}")
|
||||||
|
fi
|
||||||
|
|
||||||
# Map ignored files (e.g., .env) to dummy files.
|
# Map ignored files (e.g., .env) to dummy files.
|
||||||
while IFS= read -r path; do
|
while IFS= read -r path; do
|
||||||
if [[ -d "${path}" ]]; then
|
if [[ -d "${path}" ]]; then
|
||||||
@@ -73,7 +111,7 @@ while IFS= read -r path; do
|
|||||||
done < <(git status --porcelain --ignored | grep -E '^!!' | cut -d' ' -f2)
|
done < <(git status --porcelain --ignored | grep -E '^!!' | cut -d' ' -f2)
|
||||||
|
|
||||||
docker_run() {
|
docker_run() {
|
||||||
docker "${common_args[@]}" "$@"
|
"${docker}" "${common_args[@]}" "$@"
|
||||||
code2="$?"
|
code2="$?"
|
||||||
if [[ ${code} -eq 0 ]] && [[ ${code2} -ne 0 ]]; then
|
if [[ ${code} -eq 0 ]] && [[ ${code2} -ne 0 ]]; then
|
||||||
code="${code2}"
|
code="${code2}"
|
||||||
@@ -83,6 +121,7 @@ docker_run() {
|
|||||||
set +e
|
set +e
|
||||||
docker_run \
|
docker_run \
|
||||||
--mount "type=bind,source=${workdir},target=${workdir}" --workdir "${workdir}" \
|
--mount "type=bind,source=${workdir},target=${workdir}" --workdir "${workdir}" \
|
||||||
|
--mount "type=bind,source=${workdir}/.git,target=${workdir}/.git,readonly" \
|
||||||
--mount "type=bind,source=${tmp}/tmp,target=/tmp/tidy" \
|
--mount "type=bind,source=${tmp}/tmp,target=/tmp/tidy" \
|
||||||
--mount "type=bind,source=${tmp}/pwsh-cache,target=/.cache/powershell" \
|
--mount "type=bind,source=${tmp}/pwsh-cache,target=/.cache/powershell" \
|
||||||
--mount "type=bind,source=${tmp}/pwsh-local,target=/.local/share/powershell" \
|
--mount "type=bind,source=${tmp}/pwsh-local,target=/.local/share/powershell" \
|
||||||
|
|||||||
Reference in New Issue
Block a user