Compare commits

..

61 Commits

Author SHA1 Message Date
Taiki Endo ce6ef907a3 Update manifest schema 2026-06-20 07:50:08 +00:00
Taiki Endo 6d7a42908e Update manifest schema 2026-06-17 19:24:32 +00:00
Taiki Endo 6781fd19ff Update manifest schema 2026-06-15 16:33:08 +00:00
Taiki Endo a57fab1097 Update manifest schema 2026-06-11 01:27:08 +00:00
Taiki Endo cbcfb63b3c Update manifest schema 2026-06-10 01:35:54 +00:00
Taiki Endo 22768809da Update manifest schema 2026-06-08 01:38:07 +00:00
Taiki Endo beda42d1b9 Update manifest schema 2026-06-06 19:40:22 +00:00
Taiki Endo 8c81258e17 Update manifest schema 2026-06-05 15:59:30 +00:00
Taiki Endo 72ba4c2e30 Update manifest schema 2026-06-05 01:40:50 +00:00
Taiki Endo 46c12f2314 Update manifest schema 2026-06-04 14:25:45 +00:00
Taiki Endo ebed786d72 Update manifest schema 2026-06-03 01:54:40 +00:00
Taiki Endo 96c7d7b3fb Update manifest schema 2026-06-02 10:21:43 +00:00
Taiki Endo 77ed6cea39 Update manifest schema 2026-05-31 17:38:42 +00:00
Taiki Endo 6375f431d4 Update manifest schema 2026-05-31 13:07:10 +00:00
Taiki Endo a7630fe7b4 Update manifest schema 2026-05-30 16:58:07 +00:00
Taiki Endo 4e684d9160 Update manifest schema 2026-05-30 04:40:14 +00:00
Taiki Endo 7a3c44a504 Update manifest schema 2026-05-29 13:49:26 +00:00
Taiki Endo bcafa651c6 Update manifest schema 2026-05-29 01:38:58 +00:00
Taiki Endo 5fcbfa21c8 Update manifest schema 2026-05-28 09:52:48 +00:00
Taiki Endo 998827db3b Update manifest schema 2026-05-28 00:17:13 +00:00
Taiki Endo 36ea559b28 Update manifest schema 2026-05-27 14:33:41 +00:00
Taiki Endo b9748cee12 Update manifest schema 2026-05-26 17:26:42 +00:00
Taiki Endo da5042f4cf Update manifest schema 2026-05-26 00:06:24 +00:00
Taiki Endo 15d8d82803 Update manifest schema 2026-05-24 20:24:19 +00:00
Taiki Endo 72ebf88048 Update manifest schema 2026-05-23 20:22:23 +00:00
Taiki Endo 0b245c87d3 Update manifest schema 2026-05-22 21:22:00 +00:00
Taiki Endo d7d9bd3dfd Update manifest schema 2026-05-22 01:31:39 +00:00
Taiki Endo 4f15e020b0 Update manifest schema 2026-05-20 16:48:54 +00:00
Taiki Endo 3aaebfb2de Update manifest schema 2026-05-19 11:42:41 +00:00
Taiki Endo ba17eb0eaf Update manifest schema 2026-05-18 15:45:52 +00:00
Taiki Endo 2ee5e6bf78 Update manifest schema 2026-05-17 07:37:21 +00:00
Taiki Endo 3b668bf190 Update manifest schema 2026-05-16 13:28:35 +00:00
Taiki Endo 5a93c317c5 Update manifest schema 2026-05-15 02:15:18 +00:00
Taiki Endo 9186124e39 Update manifest schema 2026-05-14 13:17:25 +00:00
Taiki Endo a741de180c Update manifest schema 2026-05-13 01:34:16 +00:00
Taiki Endo fcab6c3a5d Update manifest schema 2026-05-11 19:14:02 +00:00
Taiki Endo 63657eacb1 Update manifest schema 2026-05-11 01:22:58 +00:00
Taiki Endo 7884c40aa9 Update manifest schema 2026-05-10 09:54:13 +00:00
Taiki Endo 9d3ccd80b1 Update manifest schema 2026-05-09 20:38:01 +00:00
Taiki Endo 83d1e35ab7 Update manifest schema 2026-05-08 12:52:27 +00:00
Taiki Endo 92c7641add Update manifest schema 2026-05-05 15:10:06 +00:00
Taiki Endo 2662e7f922 Update manifest schema 2026-05-05 01:09:40 +00:00
Taiki Endo f664066dd8 Update manifest schema 2026-05-04 12:34:39 +00:00
Taiki Endo 5c9160eeb4 Update manifest schema 2026-05-03 10:38:47 +00:00
Taiki Endo 6b3d9c4ee2 Update manifest schema 2026-05-02 19:40:26 +00:00
Taiki Endo 6e30db588f Update manifest schema 2026-05-01 20:39:12 +00:00
Taiki Endo 681e18935e Update manifest schema 2026-04-30 01:51:19 +00:00
Taiki Endo fc8c5f0cb2 Update manifest schema 2026-04-29 13:01:33 +00:00
Taiki Endo 0868af0c56 Update manifest schema 2026-04-28 19:03:39 +00:00
Taiki Endo 25935f53ae Update manifest schema 2026-04-28 11:15:32 +00:00
Taiki Endo 4a48eb8bb7 Update manifest schema 2026-04-27 16:13:30 +00:00
Taiki Endo 394468c7e8 Update manifest schema 2026-04-25 07:07:02 +00:00
Taiki Endo 37ff462bdb Update manifest schema 2026-04-24 10:08:43 +00:00
Taiki Endo 036090998c Update manifest schema 2026-04-23 13:39:13 +00:00
Taiki Endo 11ca0e4a7c Update manifest schema 2026-04-21 19:13:17 +00:00
Taiki Endo a44ceb537f Update manifest schema 2026-04-19 00:34:42 +00:00
Taiki Endo 505d159458 Update manifest schema 2026-04-17 18:59:24 +00:00
Taiki Endo 5b4e9d21d5 Update manifest schema 2026-04-17 01:51:18 +00:00
Taiki Endo eb128acbf7 Update manifest schema 2026-04-16 00:29:43 +00:00
Taiki Endo ce6cee8c85 Update manifest schema 2026-04-15 13:56:07 +00:00
Taiki Endo 063190eb1d Initial commit 2026-04-15 13:56:07 +00:00
238 changed files with 0 additions and 15845 deletions
-13
View File
@@ -1,13 +0,0 @@
# Clippy configuration
# https://doc.rust-lang.org/nightly/clippy/lint_configuration.html
allow-private-module-inception = true
avoid-breaking-exported-api = false
disallowed-names = []
disallowed-macros = [
{ path = "std::dbg", reason = "it is okay to use during development, but please do not include it in main branch" },
]
disallowed-methods = [
]
disallowed-types = [
]
-52
View File
@@ -1,52 +0,0 @@
{
"version": "0.2",
"gitignoreRoot": ".",
"useGitignore": true,
"dictionaryDefinitions": [
{
"name": "organization-dictionary",
"path": "https://raw.githubusercontent.com/taiki-e/github-actions/HEAD/.github/.cspell/organization-dictionary.txt",
"addWords": true
},
{
"name": "project-dictionary",
"path": "./.github/.cspell/project-dictionary.txt",
"addWords": true
},
{
"name": "rust-dependencies",
"path": "./.github/.cspell/rust-dependencies.txt",
"addWords": true
}
],
"dictionaries": [
"organization-dictionary",
"project-dictionary",
"rust-dependencies"
],
"ignoreRegExpList": [
// Copyright notice
"Copyright .*",
"SPDX-(File|Snippet)CopyrightText: .*",
// GHA actions/workflows
"uses: .+@[\\w_.-]+",
// GHA context (repo name, owner name, etc.)
"github.[\\w_.-]+ (=|!)= '[^']+'",
// GH username
"( |\\[)@[\\w_-]+",
// Git config username
"git config( --[^ ]+)? user.name .*",
// Username in TODO|FIXME comment
"(TODO|FIXME)\\([\\w_., -]+\\)",
// Cargo.toml authors
"authors *= *\\[[^\\]]*\\]",
"\"[^\"]* <[\\w_.+-]+@[\\w.-]+>\""
],
"languageSettings": [
{
"languageId": ["*"],
"dictionaries": ["bash", "cpp-refined", "rust"]
}
],
"ignorePaths": []
}
-48
View File
@@ -1,48 +0,0 @@
# https://embarkstudios.github.io/cargo-deny/checks/advisories/cfg.html
[advisories]
unused-ignored-advisory = "deny"
yanked = "deny"
unmaintained = "none"
unsound = "all"
git-fetch-with-cli = true
ignore = [
]
# https://embarkstudios.github.io/cargo-deny/checks/bans/cfg.html
[bans]
multiple-versions = "warn"
wildcards = "deny"
allow-wildcard-paths = true
build.executables = "deny"
build.interpreted = "deny"
build.include-dependencies = true
build.include-workspace = false # covered by tools/tidy.sh
build.include-archives = true
build.allow-build-scripts = [
{ name = "proc-macro2" }, # via serde_derive
{ name = "quote" }, # via serde_derive
{ name = "semver" },
{ name = "serde_core" },
{ name = "serde" }, # https://github.com/serde-rs/serde/issues/2972
]
build.bypass = [
]
# https://embarkstudios.github.io/cargo-deny/checks/licenses/cfg.html
[licenses]
unused-allowed-license = "deny"
unused-license-exception = "deny"
private.ignore = true
allow = [
"Apache-2.0",
"MIT",
"Unicode-3.0", # unicode-ident
]
# https://embarkstudios.github.io/cargo-deny/checks/sources/cfg.html
[sources]
unused-allowed-source = "deny"
unknown-registry = "deny"
unknown-git = "deny"
allow-git = [
]
-24
View File
@@ -1,24 +0,0 @@
# EditorConfig configuration
# https://editorconfig.org
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
[*.{css,html,json,md,rb,ps1,sh,yml,yaml}]
indent_size = 2
[*.{js,yml,yaml}]
quote_type = single
[*.sh]
# https://google.github.io/styleguide/shellguide.html#s5.3-pipelines
binary_next_line = true
# https://google.github.io/styleguide/shellguide.html#s5.5-case-statement
switch_case_indent = true
-2
View File
@@ -1,2 +0,0 @@
# Change indent size of shell script files to match scripts in CI config
946918579413996845b77e146aa8eb3c6f40f7ab
-4
View File
@@ -1,4 +0,0 @@
* text=auto eol=lf
tools/tidy.sh linguist-detectable=false
.github/.cspell/rust-dependencies.txt linguist-generated
manifests/** linguist-generated
-48
View File
@@ -1,48 +0,0 @@
almalinux
archlinux
binstall
callgrind
CDPATH
convco
coreutils
covgate
cyclonedx
cygdrive
deadlinks
deepsource
docgarden
doas
enablerepo
epel
espup
fastestmirror
grcov
gungraun
insta
knope
LASTEXITCODE
leptos
libicu
linkcheck
mdbook
microdnf
minisig
mirrorlist
nextest
pluginconf
ppcle
prek
quickinstall
rdme
sccache
SHASUMS
sigstore
syft
tombi
udeps
USERPROFILE
wasmtime
watchexec
xbuild
xscale
xwin
-6
View File
@@ -1,6 +0,0 @@
# This file is @generated by tidy.sh.
# It is not intended for manual editing.
flate
minisign
ureq
-1
View File
@@ -1 +0,0 @@
blank_issues_enabled: true
-46
View File
@@ -1,46 +0,0 @@
name: New tool suggestion
description: Suggest support for a new tool
labels: [enhancement]
body:
- type: markdown
attributes:
value: |
Thanks for a new tool suggestion!
Normally, you don't need to open an issue to request support for a new tool.
Instead, please submit a pull request.
(See [DEVELOPMENT.md](https://github.com/taiki-e/install-action/blob/main/DEVELOPMENT.md) for how to add support for a new tool.)
That said, if you have any questions before getting started, or if youre unable to contribute for any reason, feel free to open an issue.
- type: input
id: name
attributes:
label: Tool name
validations:
required: true
- type: dropdown
id: pre-built
attributes:
label: Are official pre-built binaries provided?
description: |
If "No", this issue will be blocked until official pre-built binaries are provided.<br>
If "Unknown", this issue will be blocked until it is determined that it is provided.<br>
(When the tool is a Rust crate, it may already be available via fallback even if "No" or "Unknown".)<br>
options:
- 'Yes'
- 'No'
- Unknown
default: 2
validations:
required: true
- type: input
id: url
attributes:
label: Website or repository link
validations:
required: true
- type: textarea
id: context
attributes:
label: Additional Context
description: Any additional context that you believe may be relevant.
-23
View File
@@ -1,23 +0,0 @@
version: 2
updates:
- package-ecosystem: cargo
directory: /
schedule:
interval: weekly
cooldown:
default-days: 14 # Note: Unless dependencies are pinned/locked, the effect is limited.
commit-message:
prefix: ''
ignore:
# https://github.com/taiki-e/install-action/pull/831#issuecomment-2650284580
- dependency-name: ureq
labels: []
- package-ecosystem: github-actions
directory: /
schedule:
interval: monthly
cooldown:
default-days: 14
commit-message:
prefix: ''
labels: []
-327
View File
@@ -1,327 +0,0 @@
name: CI
permissions: {}
on:
pull_request:
push:
branches:
- main
- dev
- ci-*
schedule:
- cron: '0 2 * * *'
workflow_dispatch:
env:
CARGO_INCREMENTAL: 0
CARGO_NET_GIT_FETCH_WITH_CLI: true
CARGO_NET_RETRY: 10
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
RUSTFLAGS: -D warnings
RUSTUP_MAX_RETRIES: 10
defaults:
run:
shell: bash --noprofile --norc -CeEuxo pipefail {0}
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true
jobs:
tidy:
uses: taiki-e/github-actions/.github/workflows/tidy.yml@1bb80ca038216cd1fb7b6ca6d76240b3772963ab # main
permissions:
security-events: write # for github/codeql-action/*
test-manifest-schema:
needs: tidy
uses: taiki-e/github-actions/.github/workflows/rust-test.yml@1bb80ca038216cd1fb7b6ca6d76240b3772963ab # main
with:
test-args: --exclude install-action-internal-codegen
no-std: false
test:
needs: tidy
strategy:
fail-fast: false
matrix:
include:
# NB: Sync list with https://github.com/taiki-e/checkout-action/blob/HEAD/.github/workflows/ci.yml
# --------------------------------------------------------------------
# GitHub-hosted runners
- os: ubuntu-24.04
- os: ubuntu-24.04-arm
- os: ubuntu-22.04
- os: ubuntu-22.04-arm
- os: ubuntu-slim
- os: ubuntu-22.04
tool: major.minor.patch
- os: ubuntu-22.04
tool: major.minor
- os: ubuntu-22.04
tool: major
- os: macos-26
- os: macos-15
- os: macos-15-intel
- os: windows-2025
- os: windows-2025
bash: msys2
- os: windows-2025
bash: cygwin
- os: windows-2022
- os: windows-2022
bash: msys2
- os: windows-2022
bash: cygwin
- os: windows-11-arm
- os: windows-2022
tool: major.minor.patch
- os: windows-2022
tool: major.minor
- os: windows-2022
tool: major
# --------------------------------------------------------------------
# Containers
# --------------------------------------------------------------------
# Debian-based
- container: debian:sid # glibc
- container: debian:testing # glibc
- container: debian:13-slim # glibc 2.41
- container: debian:12-slim # glibc 2.36
- container: debian:11-slim # glibc 2.31, EoL
- container: debian:10-slim # glibc 2.28, EoL, end of LTS
- container: debian:9-slim # glibc 2.24, EoL, end of LTS
- container: debian/eol:jessie-slim # 8, glibc 2.19, EoL, end of LTS
- container: ubuntu:devel # glibc
- container: ubuntu:rolling # glibc
- container: ubuntu:26.04 # glibc 2.43
- container: ubuntu:24.04 # glibc 2.39
- container: ubuntu:22.04 # glibc 2.35
- container: ubuntu:20.04 # glibc 2.31, EoL
- container: ubuntu:18.04 # glibc 2.27, EoL
- container: ubuntu:16.04 # glibc 2.23, EoL, end of ESM
- container: ubuntu:14.04 # glibc 2.19, EoL, end of ESM
# --------------------------------------------------------------------
# Fedora/RHEL-based
- container: fedora:latest # glibc
- container: centos:7 # glibc 2.17, EoL
- container: centos:6 # glibc 2.12, EoL
- container: almalinux:10 # glibc 2.39
- container: almalinux:10-minimal # glibc 2.39
- container: almalinux:9 # glibc 2.34
- container: almalinux:9-minimal # glibc 2.34
- container: almalinux:8 # glibc 2.28
- container: almalinux:8-minimal # glibc 2.28
# --------------------------------------------------------------------
# SUSE-based
# - container: opensuse/tumbleweed:latest # glibc # TODO: zypper timeout
- container: opensuse/leap:latest # glibc
# --------------------------------------------------------------------
# apk
- container: alpine:3.23 # musl 1.2.5
- container: alpine:3.22 # musl 1.2.5
- container: alpine:3.21 # musl 1.2.5
# Skip intermediate versions that have reached EoL by default.
# - container: alpine:3.20 # musl 1.2.5, EoL
# - container: alpine:3.19 # musl 1.2.4, EoL
# - container: alpine:3.18 # musl 1.2.4, EoL
# - container: alpine:3.17 # musl 1.2.3, EoL
# - container: alpine:3.16 # musl 1.2.3, EoL
# - container: alpine:3.15 # musl 1.2.2, EoL
# - container: alpine:3.14 # musl 1.2.2, EoL
# - container: alpine:3.13 # musl 1.2.2, EoL
# - container: alpine:3.12 # musl 1.1.24, EoL
# - container: alpine:3.11 # musl 1.1.24, EoL
# - container: alpine:3.10 # musl 1.1.22, EoL
# - container: alpine:3.9 # musl 1.1.20, EoL
# - container: alpine:3.8 # musl 1.1.19, EoL
# - container: alpine:3.7 # musl 1.1.18, EoL, broken env command
# - container: alpine:3.6 # musl 1.1.16, EoL, broken env command
# - container: alpine:3.5 # musl 1.1.15, EoL
# - container: alpine:3.4 # musl 1.1.14, EoL
# - container: alpine:3.3 # musl 1.1.12, EoL
- container: alpine:3.2 # musl 1.1.11, EoL
# --------------------------------------------------------------------
# Arch-based
- container: archlinux:latest # glibc
runs-on: ${{ matrix.os || 'ubuntu-24.04' }}
timeout-minutes: 30
container: ${{ matrix.container }}
steps:
- name: Install requirements (old Debian)
run: |
# In Debian, the old repositories is removed from the main mirrors some time after EoL.
codename=$(grep -E '^VERSION_CODENAME=' /etc/os-release | cut -d= -f2)
sed -i /etc/apt/sources.list -e 's/deb.debian.org/archive.debian.org/g' \
-e 's|security.debian.org|archive.debian.org/|g' \
-e "/${codename}-updates/d"
if: startsWith(matrix.container, 'debian:9') || startsWith(matrix.container, 'debian:10')
- name: Install requirements (CentOS)
run: |
retry() {
for i in {1..10}; do
if "$@"; then
return 0
else
sleep "${i}"
fi
done
"$@"
}
# In CentOS, the old repositories is removed from the main mirrors just after EoL.
# https://github.com/rust-lang/rust/pull/126352
sed -i /etc/yum.repos.d/*.repo -e 's!^mirrorlist!#mirrorlist!' \
-e 's!^#baseurl=http://mirror.centos.org/!baseurl=https://vault.centos.org/!'
sed -i 's/enabled=1/enabled=0/' /etc/yum/pluginconf.d/fastestmirror.conf
if [[ "${CONTAINER}" == "centos:6" ]]; then
# CentOS 6's curl (7.19.7) has no curl has no --proto/--tlsv1.2.
retry yum install -y gcc openssl-devel
retry curl -fsSL --retry 10 https://curl.se/download/curl-7.34.0.tar.gz | tar xzf -
cd -- curl-*
./configure --prefix=/usr/local --with-ssl
make
make install
# for checkout-action https://github.com/taiki-e/checkout-action/blob/v1.3.0/.github/workflows/ci.yml#L135-L143
retry yum install -y openssh-clients perl perl-Error perl-TermReadKey rsync
retry rpm -i \
https://vault.ius.io/el6/x86_64/packages/p/perl-Git18-1.8.5.5-4.ius.el6.noarch.rpm \
https://vault.ius.io/el6/x86_64/packages/g/git18-1.8.5.5-4.ius.el6.x86_64.rpm
fi
env:
CONTAINER: ${{ matrix.container }}
if: startsWith(matrix.container, 'centos')
# 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
# cross attempts to install rust-src when Cargo.toml is available even if `cross --version`
- run: rm -- Cargo.toml
- name: Generate tool list
id: tool-list
run: tools/ci/tool-list.sh "${TOOL}" "${OS}" "${BASH}" >>"${GITHUB_OUTPUT}"
env:
TOOL: ${{ matrix.tool }}
OS: ${{ matrix.container || matrix.os }}
BASH: ${{ matrix.bash }}
- name: Setup MSYS2 bash
run: |
printf '%s\n' 'C:\msys64\mingw32\bin' >>"${GITHUB_PATH}"
printf '%s\n' 'C:\msys64\usr\bin' >>"${GITHUB_PATH}"
if: matrix.bash == 'msys2'
- name: Setup Cygwin bash
run: |
choco install --no-progress --requirechecksums cygwin
printf '%s\n' 'C:\tools\cygwin\bin' >>"${GITHUB_PATH}"
printf '%s\n' 'C:\tools\cygwin\usr\bin' >>"${GITHUB_PATH}"
if: matrix.bash == 'cygwin'
# remove bash installed by checkout-action
- run: apk --no-cache del bash
shell: sh
if: startsWith(matrix.container, 'alpine')
- uses: ./
with:
tool: ${{ steps.tool-list.outputs.tool }}
# Test all shells listed in https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsshell
- name: Test bash
run: just --version && shfmt --version && protoc --version && rustc --version && cargo --version && rustup --version
shell: bash
if: matrix.container == ''
- name: Test bash
run: just --version && shfmt --version
shell: bash
# TODO: OCI runtime exec failed: exec failed: unable to start container process: exec: "bash": executable file not found in $PATH: unknown
if: matrix.container != '' && !startsWith(matrix.container, 'opensuse')
- name: Test sh
run: just --version && shfmt --version && protoc --version && rustc --version && cargo --version && rustup --version
shell: sh
if: matrix.container == ''
- name: Test sh
run: just --version && shfmt --version
shell: sh
# TODO: OCI runtime exec failed: exec failed: unable to start container process: exec: "sh": executable file not found in $PATH: unknown
if: matrix.container != '' && !startsWith(matrix.container, 'opensuse')
- name: Test pwsh
run: just --version; shfmt --version; protoc --version; rustc --version; cargo --version; rustup --version
shell: pwsh
if: matrix.os != 'ubuntu-slim' && matrix.container == ''
- name: Test powershell
run: just --version; shfmt --version; protoc --version; rustc --version; cargo --version; rustup --version
shell: powershell
if: startsWith(matrix.os, 'windows')
- name: Test cmd
run: just --version & shfmt --version & protoc --version & rustc --version & cargo --version & rustup --version
shell: cmd # zizmor: ignore[misfeature] used for compatibility testing
if: startsWith(matrix.os, 'windows')
# We use the version output to check the version of cargo-binstall, but they
# several times change the version output format in the past so we need to
# check it with CI. (e.g., 0.14.0->0.16.0 update change it
# from "cargo-binstall <version>" to "<version>")
- run: |
if [[ "$(cargo-binstall binstall -V)" != "$(jq -r '.latest.version' manifests/cargo-binstall.json)" ]]; then
exit 1
fi
if: matrix.bash != 'cygwin' && matrix.os != 'windows-11-arm' && !startsWith(matrix.container, 'opensuse')
test-alias:
needs: tidy
runs-on: ubuntu-24.04
timeout-minutes: 60
steps:
- uses: taiki-e/checkout-action@7d1e50e93dc4fb3bba58f85018fadf77898aee8b # v1.4.2
# cross attempts to install rust-src when Cargo.toml is available even if `cross --version`
- run: rm -- Cargo.toml
- run: env
- uses: ./
with:
# NB: Update alias list in tools/ci/release-post-commit.sh, case for aliases in main.sh,
# and match for alias for tools/codegen/src/tools-markdown.rs.
tool: |
nextest
taplo-cli
typos-cli
wasm-bindgen-cli
wasmtime-cli
- name: Test bash
run: cargo-nextest nextest --version && taplo --version
shell: bash
- name: Test sh
run: cargo-nextest nextest --version && taplo --version
shell: sh
test-fallback:
needs: tidy
strategy:
fail-fast: false
matrix:
include:
- fallback: none
- fallback: cargo-install
- fallback: cargo-binstall
- fallback: cargo-binstall
version: 0.3
runs-on: ubuntu-24.04-arm
timeout-minutes: 60
steps:
- uses: taiki-e/checkout-action@7d1e50e93dc4fb3bba58f85018fadf77898aee8b # v1.4.2
# cross attempts to install rust-src when Cargo.toml is available even if `cross --version`
- run: rm -- Cargo.toml
- run: env
- uses: ./
id: install
continue-on-error: ${{ matrix.fallback == 'none' }}
with:
tool: parse-changelog@${{ matrix.version || '0.4.6' }}
fallback: ${{ matrix.fallback }}
- run: exit 1
if: matrix.fallback == 'none' && steps.install.outcome != 'failure'
- name: Test bash
run: parse-changelog --version
shell: bash
if: matrix.fallback != 'none'
- name: Test sh
run: parse-changelog --version
shell: sh
if: matrix.fallback != 'none'
-33
View File
@@ -1,33 +0,0 @@
name: Manifest
permissions: {}
on:
pull_request:
push:
branches:
- main
- dev
- ci-*
schedule:
- cron: '0 0,3,6,9,12,15,18,21 * * *'
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}
cancel-in-progress: true
jobs:
manifest:
uses: taiki-e/github-actions/.github/workflows/gen.yml@1bb80ca038216cd1fb7b6ca6d76240b3772963ab # main
permissions:
contents: write # for creating branch for pr
secrets:
PR_TOKEN_APP_PRIVATE_KEY: ${{ secrets.PR_TOKEN_APP_PRIVATE_KEY }}
with:
script: tools/manifest.sh
commit-script: tools/ci/manifest.sh
title: Update manifest
branch: update-manifest
install-cosign: true
install-parse-changelog: true
-58
View File
@@ -1,58 +0,0 @@
name: Release
permissions: {}
on:
workflow_dispatch:
inputs:
target:
description: Package to be released
required: true
type: choice
options:
- install-action
- install-action-manifest-schema
version:
description: Version to be increased
required: true
type: choice
options:
- patch
- minor
- major
concurrency:
group: ${{ github.workflow }}
cancel-in-progress: false
jobs:
release:
if: github.repository_owner == 'taiki-e' && inputs.target == 'install-action'
uses: taiki-e/github-actions/.github/workflows/action-release.yml@1bb80ca038216cd1fb7b6ca6d76240b3772963ab # main
permissions:
contents: write # for taiki-e/create-gh-release-action
secrets:
PUSH_TOKEN_APP_CLIENT_ID: ${{ secrets.PUSH_TOKEN_APP_CLIENT_ID }}
PUSH_TOKEN_APP_PRIVATE_KEY: ${{ secrets.PUSH_TOKEN_APP_PRIVATE_KEY }}
with:
version: ${{ inputs.version }}
post-commit-script: tools/ci/release-post-commit.sh
release-manifest-schema:
if: github.repository_owner == 'taiki-e' && inputs.target == 'install-action-manifest-schema'
uses: taiki-e/github-actions/.github/workflows/rust-release.yml@1bb80ca038216cd1fb7b6ca6d76240b3772963ab # main
permissions:
contents: write # for taiki-e/create-gh-release-action
id-token: write # for rust-lang/crates-io-auth-action
attestations: write # unused (used when options for uploading binaries are set)
secrets:
PUSH_TOKEN_APP_CLIENT_ID: ${{ secrets.PUSH_TOKEN_APP_CLIENT_ID }}
PUSH_TOKEN_APP_PRIVATE_KEY: ${{ secrets.PUSH_TOKEN_APP_PRIVATE_KEY }}
with:
version: ${{ inputs.version }}
tag-prefix: install-action-manifest-schema-
package: install-action-manifest-schema
changelog: tools/manifest-schema/CHANGELOG.md
title: $prefix $version
prefix: install-action-manifest-schema
commit-prefix: 'manifest-schema: '
-6
View File
@@ -1,6 +0,0 @@
# zizmor configuration
# https://docs.zizmor.sh/configuration/
rules:
anonymous-definition: { disable: true } # This is pedantic/auditor only audit and requires explicitly naming each job, but is usually redundant.
dependabot-cooldown: { config: { days: 14 } }
-8
View File
@@ -1,8 +0,0 @@
target
Cargo.lock
mutants.out*
tmp
# For platform and editor specific settings, it is recommended to add to
# a global .gitignore file.
# Refs: https://docs.github.com/en/github/using-git/ignoring-files#configuring-ignored-files-for-all-repositories-on-your-computer
-11
View File
@@ -1,11 +0,0 @@
# https://github.com/DavidAnson/markdownlint/blob/HEAD/doc/Rules.md
config:
line-length: false # MD013
no-duplicate-heading: false # MD024
no-blanks-blockquote: false # MD028 (this warns valid GFM alerts usage)
no-inline-html: false # MD033
no-emphasis-as-heading: false # MD036
# https://github.com/DavidAnson/markdownlint-cli2#markdownlint-cli2jsonc
noBanner: true
noProgress: true
-1
View File
@@ -1 +0,0 @@
manifests/*.json
-34
View File
@@ -1,34 +0,0 @@
# Rustfmt configuration
# https://github.com/rust-lang/rustfmt/blob/HEAD/Configurations.md
# Rustfmt cannot format long lines inside macros, but this option detects this.
# This is unstable (tracking issue: https://github.com/rust-lang/rustfmt/issues/3391)
error_on_line_overflow = true
# Override the default formatting style.
# See https://internals.rust-lang.org/t/running-rustfmt-on-rust-lang-rust-and-other-rust-lang-repositories/8732/81.
use_small_heuristics = "Max"
# This is unstable (tracking issue: https://github.com/rust-lang/rustfmt/issues/3370)
overflow_delimited_expr = true
# This is unstable (tracking issue: https://github.com/rust-lang/rustfmt/issues/4991).
imports_granularity = "Crate"
# This is unstable (tracking issue: https://github.com/rust-lang/rustfmt/issues/5083).
group_imports = "StdExternalCrate"
# This is unstable (tracking issue: https://github.com/rust-lang/rustfmt/issues/5081).
hex_literal_case = "Upper"
# Apply rustfmt to more places.
# This is unstable (tracking issue: https://github.com/rust-lang/rustfmt/issues/3348).
format_code_in_doc_comments = true
# Automatically fix deprecated style.
use_field_init_shorthand = true
use_try_shorthand = true
# Set the default settings again to always apply the proper formatting without
# being affected by the editor settings.
edition = "2021"
style_edition = "2024"
hard_tabs = false
newline_style = "Unix"
tab_spaces = 4
-38
View File
@@ -1,38 +0,0 @@
# ShellCheck configuration
# https://github.com/koalaman/shellcheck/blob/HEAD/shellcheck.1.md#rc-files
# See also:
# https://github.com/koalaman/shellcheck/wiki/Optional
# https://google.github.io/styleguide/shellguide.html
# https://github.com/koalaman/shellcheck/wiki/Directive#external-sources
external-sources=true
# https://github.com/koalaman/shellcheck/wiki/SC2249
# enable=add-default-case
# https://github.com/koalaman/shellcheck/wiki/SC2244
enable=avoid-nullary-conditions
# https://github.com/koalaman/shellcheck/wiki/SC2312
# enable=check-extra-masked-returns
# https://github.com/koalaman/shellcheck/wiki/SC2310
# https://github.com/koalaman/shellcheck/wiki/SC2311
# enable=check-set-e-suppressed
# enable=check-unassigned-uppercase
# https://github.com/koalaman/shellcheck/wiki/SC2230
enable=deprecate-which
# https://github.com/koalaman/shellcheck/wiki/SC2248
enable=quote-safe-variables
# https://github.com/koalaman/shellcheck/wiki/SC2292
# https://google.github.io/styleguide/shellguide.html#s6.3-tests
enable=require-double-brackets
# https://github.com/koalaman/shellcheck/wiki/SC2250
# https://google.github.io/styleguide/shellguide.html#s5.6-variable-expansion
enable=require-variable-braces
-9
View File
@@ -1,9 +0,0 @@
# Taplo configuration
# https://taplo.tamasfe.dev/configuration/formatter-options.html
[formatting]
align_comments = false
allowed_blank_lines = 1
array_auto_collapse = false
array_auto_expand = false
indent_string = " "
-8033
View File
File diff suppressed because it is too large Load Diff
-53
View File
@@ -1,53 +0,0 @@
[workspace]
resolver = "2"
members = ["tools/codegen", "tools/manifest-schema"]
# This table is shared by projects under github.com/taiki-e.
# Expect for unexpected_cfgs.check-cfg, it is not intended for manual editing.
[workspace.lints.rust]
deprecated_safe = "warn"
improper_ctypes = "warn"
improper_ctypes_definitions = "warn"
non_ascii_idents = "warn"
rust_2018_idioms = "warn"
single_use_lifetimes = "warn"
unexpected_cfgs = { level = "warn", check-cfg = [
] }
unnameable_types = "warn"
unreachable_pub = "warn"
unsafe_op_in_unsafe_fn = "warn"
[workspace.lints.clippy]
all = "warn" # Downgrade deny-by-default lints
pedantic = "warn"
as_ptr_cast_mut = "warn"
as_underscore = "warn"
default_union_representation = "warn"
inline_asm_x86_att_syntax = "warn"
trailing_empty_array = "warn"
transmute_undefined_repr = "warn"
undocumented_unsafe_blocks = "warn"
unused_trait_names = "warn"
# Suppress buggy or noisy clippy lints
bool_assert_comparison = { level = "allow", priority = 1 }
borrow_as_ptr = { level = "allow", priority = 1 } # https://github.com/rust-lang/rust-clippy/issues/8286
cast_lossless = { level = "allow", priority = 1 } # suggested code has poor codegen with -C opt-level=0 https://godbolt.org/z/GzTxzbd9q
collapsible_match = { level = "allow", priority = 1 }
declare_interior_mutable_const = { level = "allow", priority = 1 } # https://github.com/rust-lang/rust-clippy/issues/7665
doc_markdown = { level = "allow", priority = 1 }
float_cmp = { level = "allow", priority = 1 } # https://github.com/rust-lang/rust-clippy/issues/7725
incompatible_msrv = { level = "allow", priority = 1 } # buggy: doesn't consider cfg, https://github.com/rust-lang/rust-clippy/issues/12280, https://github.com/rust-lang/rust-clippy/issues/12257#issuecomment-2093667187
manual_assert = { level = "allow", priority = 1 }
manual_range_contains = { level = "allow", priority = 1 } # https://github.com/rust-lang/rust-clippy/issues/6455#issuecomment-1225966395
missing_errors_doc = { level = "allow", priority = 1 }
module_name_repetitions = { level = "allow", priority = 1 } # buggy: https://github.com/rust-lang/rust-clippy/issues?q=is%3Aissue+is%3Aopen+module_name_repetitions
naive_bytecount = { level = "allow", priority = 1 }
nonminimal_bool = { level = "allow", priority = 1 } # buggy: https://github.com/rust-lang/rust-clippy/issues?q=is%3Aissue+is%3Aopen+nonminimal_bool
range_plus_one = { level = "allow", priority = 1 } # buggy: https://github.com/rust-lang/rust-clippy/issues?q=is%3Aissue+is%3Aopen+range_plus_one
similar_names = { level = "allow", priority = 1 }
single_match = { level = "allow", priority = 1 }
single_match_else = { level = "allow", priority = 1 }
struct_excessive_bools = { level = "allow", priority = 1 }
struct_field_names = { level = "allow", priority = 1 }
too_many_arguments = { level = "allow", priority = 1 }
too_many_lines = { level = "allow", priority = 1 }
type_complexity = { level = "allow", priority = 1 }
-64
View File
@@ -1,64 +0,0 @@
# Development Guide
## Add support for new tool
(Example: [ffbd316](https://github.com/taiki-e/install-action/commit/ffbd316e0fe98cb460dae3a66cd2ef9deb398bb1))
1\. Add base manifest to [`tools/codegen/base`](tools/codegen/base) directory.
See JSON files in `tools/codegen/base` directory for examples of the manifest.
2\. Generate manifest with the following command (replace `<tool>` with the tool name).
```sh
./tools/manifest.sh <tool>
```
> If you're having problem with github api rate limit, you can use your GITHUB_TOKEN to increase the rate limit.
> If you have `Github CLI` installed (the command `gh`), you can:
>
> ```sh
> GITHUB_TOKEN=$(gh auth token) ./tools/manifest.sh <tool>
> ```
3\. Update `TOOLS.md` with the following command.
```sh
./tools/update-markdown.sh
```
## Troubleshooting
If one of the CI builds fails due to a bin path or release asset_name, fix the problem in the base
manifest, and re-run the manifest tool `tools/manifest.sh` to regenerate the manifest json file. The
base manifest supports overriding the bin path per platform by adding the `"bin"` / `"asset_name"`
to the platform object.
If CI fails only for containers using older versions of glibc or musl, you may need to add the tool
name to one of the `*_incompat` arrays in `tools/ci/tool-list.sh`.
## Release new version
Releases are performed by running the [release workflow](https://github.com/taiki-e/install-action/actions/workflows/release.yml) via workflow dispatch. The owner and collaborators can start the release workflow, but the owners [approval](https://docs.github.com/en/actions/reference/workflows-and-actions/deployments-and-environments#required-reviewers) is required before the actual release.
### Minor version vs patch version
Increase the patch version if only the following changes are included.
- Update the `@latest` version of the tool.
Rationale: Normally, tool versions are controlled by the `@<version>` syntax, which is explicitly separated from the versioning of the install-action itself.
Exception: If the major or minor version of the `cargo-binstall` is updated, the minor version may be increased because the behavior of the fallback may change slightly.
- Fix regressions or minor bugs.
Rationale: Semantic Versioning.
- Improve documentation or diagnostics.
Rationale: Semantic Versioning.
Usually increase the minor version otherwise.
Adding support for a new tool may conflict with existing fallbacks, so it is necessary to increase the minor version.
-177
View File
@@ -1,177 +0,0 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
-23
View File
@@ -1,23 +0,0 @@
Permission is hereby granted, free of charge, to any
person obtaining a copy of this software and associated
documentation files (the "Software"), to deal in the
Software without restriction, including without
limitation the rights to use, copy, modify, merge,
publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software
is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice
shall be included in all copies or substantial portions
of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
-204
View File
@@ -1,204 +0,0 @@
<!-- omit in toc -->
# install-action
[![release](https://img.shields.io/github/release/taiki-e/install-action?style=flat-square&logo=github)](https://github.com/taiki-e/install-action/releases/latest)
[![github actions](https://img.shields.io/github/actions/workflow/status/taiki-e/install-action/ci.yml?branch=main&style=flat-square&logo=github)](https://github.com/taiki-e/install-action/actions)
GitHub Action for installing development tools (mainly from GitHub Releases).
- [Usage](#usage)
- [Inputs](#inputs)
- [Example workflow](#example-workflow)
- [Supported tools](#supported-tools)
- [Add support for new tool](#add-support-for-new-tool)
- [Security](#security)
- [Compatibility](#compatibility)
- [Related Projects](#related-projects)
- [License](#license)
## Usage
### Inputs
| Name | Required | Description | Type | Default |
| ---- | :------: | ----------- | ---- | ------- |
| tool | **✓** | Tools to install (whitespace or comma separated list) | String | |
| checksum | | Whether to enable checksums (strongly discouraged to disable) | Boolean | `true` |
| fallback | | Whether to use fallback (none, cargo-binstall, or cargo-install) | String | `cargo-binstall` |
### Example workflow
To install the latest version:
```yaml
- uses: taiki-e/install-action@v2
with:
tool: cargo-hack
```
You can use the shorthand (if you do not need to pin the versions of this action and the installed tool):
```yaml
- uses: taiki-e/install-action@cargo-hack
```
To install a specific version, use `@version` syntax:
```yaml
- uses: taiki-e/install-action@v2
with:
tool: cargo-hack@0.5.24
```
You can also omit patch version.
(You can also omit the minor version if the major version is 1 or greater.)
```yaml
- uses: taiki-e/install-action@v2
with:
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:
```yaml
- uses: taiki-e/install-action@v2
with:
tool: cargo-hack,cargo-minimal-versions
```
Or:
```yaml
- uses: taiki-e/install-action@cargo-hack
- 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
See [TOOLS.md](TOOLS.md) for the list of tools that are installed from manifests managed in this action.
If a tool not included in the list above is specified, this action uses [cargo-binstall] as a fallback.
If you want to ensure that fallback is not used, use `fallback: none`.
```yaml
- uses: taiki-e/install-action@v2
with:
tool: cargo-hack
# Possible values:
# - none: disable all fallback options
# - cargo-binstall (default): use cargo-binstall (includes "quickinstall" and "install from source")
# - cargo-install: use `cargo install`
fallback: none
```
On platforms where cargo-binstall does not provide prebuilt binaries, cargo-install fallback is used instead of cargo-binstall fallback.
### Add support for new tool
See the [development guide](DEVELOPMENT.md) for how to add support for new tool.
## Security
The `@v<major>` and `@<tool_name>` tags are updated with each release. If you want to enhance workflow stability and security against supply chain attacks, consider using the `@v<major>.<minor>.<patch>` tag or their hash to pin the version and regularly updating with [dependency cooldown]. Since all releases are immutable, pinning the version in either way should have the same effect. Pinning `@<tool_name>` tags by hash is strongly discouraged, as it causes the workflow to reference a [commit that is not present on the repository](https://docs.zizmor.sh/audits/#impostor-commit) when a new version is released.
The default fallback (cargo-binstall) is often affected by GitHub's API rate limits, so we [pass the `${{ github.token }}` to cargo-binstall](https://github.com/taiki-e/install-action/issues/561). Disabling the cargo-binstall fallback prevent passing token so helps enhance security.
See the [Supported tools section](#supported-tools) for how to ensure that fallback is not used.
<!-- omit in toc -->
### Security on installation from GitHub Releases
**Tools covered in this section:** Tools in the [supported tools list](TOOLS.md) where column "Where will it be installed from" is "GitHub Releases".
This action will download the tool or its installer from GitHub Releases using HTTPS with tlsv1.2+. This is basically considered to be the same level of security as [the recommended installation of rustup](https://www.rust-lang.org/tools/install).
Additionally, this action will also verify SHA256 checksums for downloaded files for all tools covered in this section. This is enabled by default and can be disabled by setting the `checksum` input option to `false` (strongly discouraged to disable).
Additionally, we also verify [artifact attestations](https://docs.github.com/en/actions/concepts/security/artifact-attestations) or signature if the tool publishes artifact attestations or distributes signed archives. Verification is done at the stage of getting the checksum, so disabling the checksum will also disable verification.
When installing with `taiki-e/install-action@<tool_name>`, `tool: <tool_name>`, or `tool: <tool_name>@<omitted_version>`, The tool version is reflects upstream releases with a delay of one to a few days (as with other common package managers that verify checksums or signatures). A delay of at least one day is known as [dependency cooldown] and is intended to mitigate the risk of supply chain attacks (the specific cooldown period may be changed in the future). You can bypass the cooldown by explicitly specifying a version. If you want a longer cooldown, consider using the property described below.
When installing with `tool: <tool_name>` or `tool: <tool_name>@<omitted_version>`, the tool version is associated with the install-action version, so pinning install-action version with the `@v<major>.<minor>.<patch>` tag or their hash also pins the version of the tool being installed. This also means that if a [dependency cooldown] applies to the action itself, a cooldown of one to a few days longer will apply to the tools installed by that action.
[dependency cooldown]: https://blog.yossarian.net/2025/11/21/We-should-all-be-using-dependency-cooldowns
<!-- omit in toc -->
### Security on other installation methods
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.
## Compatibility
This action has been tested for GitHub-hosted runners (Ubuntu, macOS, Windows) and containers (Ubuntu, Debian, Fedora, CentOS, Alma, openSUSE, Arch, Alpine).
On Linux, if any required tools are missing, this action will attempt to install them from distro's package manager, so no pre-setup is usually required (except for CentOS or Debian 10 (or older) or very old distro described below, which was already EoL and needs to use vault/archive repos -- see "Install requirements" in [our CI config](https://github.com/taiki-e/install-action/blob/HEAD/.github/workflows/ci.yml) for example of setup).
On other platforms, at least the following tools are required:
- bash 3.2+
- jq 1.3+ (only on non-Windows platforms)
- curl 7.34+ (or RHEL7/CentOS7's patched curl 7.29)
Known environments affected by the above version requirements are CentOS 6 (EoL on 2020-11) using curl 7.19, and Ubuntu 12.04 (EoL on 2017-04) using curl 7.22 (see "Install requirements" in [our CI config](https://github.com/taiki-e/install-action/blob/HEAD/.github/workflows/ci.yml) for example of workaround).
Note that what this action installs for its setup (such as above tools) is considered an implementation detail if they are installed by this action's side, and there is no guarantee that they will be available in subsequent steps, because this action is not an action for installing those tools.
## Related Projects
- [cache-cargo-install-action]: GitHub Action for `cargo install` with cache.
- [create-gh-release-action]: GitHub Action for creating GitHub Releases based on changelog.
- [upload-rust-binary-action]: GitHub Action for building and uploading Rust binary to GitHub Releases.
- [setup-cross-toolchain-action]: GitHub Action for setup toolchains for cross compilation and cross testing for Rust.
- [checkout-action]: GitHub Action for checking out a repository. (Simplified actions/checkout alternative that does not depend on Node.js.)
- [homebrew-tap]: Homebrew tap for projects under github.com/taiki-e.
- [scoop-bucket]: Scoop bucket for projects under github.com/taiki-e.
[cache-cargo-install-action]: https://github.com/taiki-e/cache-cargo-install-action
[cargo-binstall]: https://github.com/cargo-bins/cargo-binstall
[checkout-action]: https://github.com/taiki-e/checkout-action
[create-gh-release-action]: https://github.com/taiki-e/create-gh-release-action
[homebrew-tap]: https://github.com/taiki-e/homebrew-tap
[scoop-bucket]: https://github.com/taiki-e/scoop-bucket
[setup-cross-toolchain-action]: https://github.com/taiki-e/setup-cross-toolchain-action
[upload-rust-binary-action]: https://github.com/taiki-e/upload-rust-binary-action
## License
Licensed under either of [Apache License, Version 2.0](LICENSE-APACHE) or
[MIT license](LICENSE-MIT) at your option.
Each of the tools installed by this action has a different license. See the
[Supported tools](#supported-tools) section for more information.
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, as defined in the Apache-2.0 license, shall
be dual licensed as above, without any additional terms or conditions.
-115
View File
@@ -1,115 +0,0 @@
# Tools
This is a list of tools that are installed from manifests managed in this action.
If a tool not included in the list below is specified, this action uses [cargo-binstall] as a fallback.
See the [Supported tools section in README.md](README.md#supported-tools) for how to ensure that fallback is not used.
> If `$CARGO_HOME/bin` is not available, Rust-related binaries will be installed to `$HOME/.cargo/bin`.<br>
> If `$HOME/.cargo/bin` is not available, Rust-related binaries will be installed to `$HOME/.install-action/bin`.<br>
> [!WARNING]
> Please note that the fact that a specific tool is listed here does **NOT** mean that the maintainer trusts the tool for safety or has reviewed its code.
| Name | Where binaries will be installed | Where will it be installed from | Supported platform | License | Note |
| ---- | -------------------------------- | ------------------------------- | ------------------ | ------- | ---- |
| [**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) | |
| [**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-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-careful**](https://github.com/RalfJung/cargo-careful) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/RalfJung/cargo-careful/releases) | Linux, macOS, Windows | [MIT](https://github.com/RalfJung/cargo-careful/blob/master/LICENSE-MIT) OR [Apache-2.0](https://github.com/RalfJung/cargo-careful/blob/master/LICENSE-APACHE) | |
| [**cargo-crap**](https://github.com/minikin/cargo-crap) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/minikin/cargo-crap/releases) | Linux, macOS, Windows | [MIT](https://github.com/minikin/cargo-crap/blob/main/LICENSE) | |
| [**cargo-cyclonedx**](https://github.com/CycloneDX/cyclonedx-rust-cargo) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/CycloneDX/cyclonedx-rust-cargo/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/CycloneDX/cyclonedx-rust-cargo/blob/main/LICENSE) | |
| [**cargo-deadlinks**](https://github.com/deadlinks/cargo-deadlinks) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/deadlinks/cargo-deadlinks/releases) | Linux, macOS, Windows | [MIT](https://github.com/deadlinks/cargo-deadlinks/blob/master/LICENSE-MIT) OR [Apache-2.0](https://github.com/deadlinks/cargo-deadlinks/blob/master/LICENSE-APACHE) | |
| [**cargo-deb**](https://github.com/kornelski/cargo-deb) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/kornelski/cargo-deb/releases) | Linux | [MIT](https://github.com/kornelski/cargo-deb/blob/main/LICENSE) | |
| [**cargo-deny**](https://github.com/EmbarkStudios/cargo-deny) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/EmbarkStudios/cargo-deny/releases) | Linux, macOS, Windows | [MIT](https://github.com/EmbarkStudios/cargo-deny/blob/main/LICENSE-MIT) OR [Apache-2.0](https://github.com/EmbarkStudios/cargo-deny/blob/main/LICENSE-APACHE) | |
| [**cargo-dinghy**](https://github.com/sonos/dinghy) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/sonos/dinghy/releases) | Linux, macOS | [MIT](https://github.com/sonos/dinghy/blob/main/LICENSE-MIT) OR [Apache-2.0](https://github.com/sonos/dinghy/blob/main/LICENSE-APACHE) | |
| [**cargo-export**](https://github.com/bazhenov/cargo-export) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/bazhenov/cargo-export/releases) | Linux, macOS, Windows | [MIT](https://github.com/bazhenov/cargo-export/blob/master/LICENSE) | |
| [**cargo-hack**](https://github.com/taiki-e/cargo-hack) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/taiki-e/cargo-hack/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/taiki-e/cargo-hack/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/cargo-hack/blob/main/LICENSE-MIT) | |
| [**cargo-insta**](https://insta.rs/) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/mitsuhiko/insta/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/mitsuhiko/insta/blob/master/LICENSE) | |
| [**cargo-lambda**](https://github.com/cargo-lambda/cargo-lambda) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/cargo-lambda/cargo-lambda/releases) | Linux, macOS, Windows | [MIT](https://github.com/cargo-lambda/cargo-lambda/blob/main/LICENSE) | |
| [**cargo-leptos**](https://github.com/leptos-rs/cargo-leptos) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/leptos-rs/cargo-leptos/releases) | Linux, macOS, Windows | [MIT](https://github.com/leptos-rs/cargo-leptos/blob/main/LICENSE) | |
| [**cargo-llvm-cov**](https://github.com/taiki-e/cargo-llvm-cov) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/taiki-e/cargo-llvm-cov/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/taiki-e/cargo-llvm-cov/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/cargo-llvm-cov/blob/main/LICENSE-MIT) | |
| [**cargo-machete**](https://github.com/bnjbvr/cargo-machete) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/bnjbvr/cargo-machete/releases) | Linux, macOS, Windows | [MIT](https://github.com/bnjbvr/cargo-machete/blob/main/LICENSE.md) | |
| [**cargo-make**](https://github.com/sagiegurari/cargo-make) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/sagiegurari/cargo-make/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/sagiegurari/cargo-make/blob/master/LICENSE) | |
| [**cargo-minimal-versions**](https://github.com/taiki-e/cargo-minimal-versions) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/taiki-e/cargo-minimal-versions/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/taiki-e/cargo-minimal-versions/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/cargo-minimal-versions/blob/main/LICENSE-MIT) | |
| [**cargo-mutants**](https://github.com/sourcefrog/cargo-mutants) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/sourcefrog/cargo-mutants/releases) | Linux, macOS, Windows | [MIT](https://github.com/sourcefrog/cargo-mutants/blob/main/LICENSE) | |
| [**cargo-neat**](https://github.com/killzoner/cargo-neat) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/killzoner/cargo-neat/releases) | Linux, macOS, Windows | [MIT](https://github.com/killzoner/cargo-neat/blob/master/LICENSE-MIT) OR [Apache-2.0](https://github.com/killzoner/cargo-neat/blob/master/LICENSE-APACHE) | |
| [**cargo-nextest**](https://github.com/nextest-rs/nextest) (alias: `nextest`) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/nextest-rs/nextest/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/nextest-rs/nextest/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/nextest-rs/nextest/blob/main/LICENSE-MIT) | |
| [**cargo-no-dev-deps**](https://github.com/taiki-e/cargo-no-dev-deps) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/taiki-e/cargo-no-dev-deps/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/taiki-e/cargo-no-dev-deps/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/cargo-no-dev-deps/blob/main/LICENSE-MIT) | |
| [**cargo-rdme**](https://github.com/orium/cargo-rdme) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/orium/cargo-rdme/releases) | Linux, macOS, Windows | [MPL-2.0](https://github.com/orium/cargo-rdme/blob/main/LICENSE.md) | |
| [**cargo-semver-checks**](https://github.com/obi1kenobi/cargo-semver-checks) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/obi1kenobi/cargo-semver-checks/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/obi1kenobi/cargo-semver-checks/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/obi1kenobi/cargo-semver-checks/blob/main/LICENSE-MIT) | |
| [**cargo-shear**](https://github.com/Boshen/cargo-shear) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/Boshen/cargo-shear/releases) | Linux, macOS, Windows | [MIT](https://github.com/Boshen/cargo-shear/blob/main/LICENSE) | |
| [**cargo-sort**](https://github.com/DevinR528/cargo-sort) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/DevinR528/cargo-sort/releases) | Linux, macOS, Windows | [Apache-2.0 OR MIT](https://github.com/DevinR528/cargo-sort/blob/v1.0.9/Cargo.toml#L5) | |
| [**cargo-spellcheck**](https://github.com/drahnr/cargo-spellcheck) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/drahnr/cargo-spellcheck/releases) | Linux, Windows | [LGPLv2.1](https://github.com/drahnr/cargo-spellcheck/blob/master/LICENSE-LGPL) | |
| [**cargo-tarpaulin**](https://github.com/xd009642/tarpaulin) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/xd009642/tarpaulin/releases) | Linux, macOS, Windows | [MIT](https://github.com/xd009642/tarpaulin/blob/develop/LICENSE-MIT) OR [Apache-2.0](https://github.com/xd009642/tarpaulin/blob/develop/LICENSE-APACHE) | |
| [**cargo-udeps**](https://github.com/est31/cargo-udeps) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/est31/cargo-udeps/releases) | Linux, macOS, Windows | [Apache-2.0 OR MIT](https://github.com/est31/cargo-udeps/blob/master/LICENSE) | |
| [**cargo-valgrind**](https://github.com/jfrimmel/cargo-valgrind) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/jfrimmel/cargo-valgrind/releases) | Linux, macOS, Windows | [MIT](https://github.com/jfrimmel/cargo-valgrind/blob/master/LICENSE-MIT) OR [Apache-2.0](https://github.com/jfrimmel/cargo-valgrind/blob/master/LICENSE-APACHE) | |
| [**cargo-vet**](https://github.com/mozilla/cargo-vet) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/mozilla/cargo-vet/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/mozilla/cargo-vet/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/mozilla/cargo-vet/blob/main/LICENSE-MIT) | |
| [**cargo-xwin**](https://github.com/rust-cross/cargo-xwin) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/rust-cross/cargo-xwin/releases) | Linux, macOS, Windows | [MIT](https://github.com/rust-cross/cargo-xwin/blob/main/LICENSE) | |
| [**cargo-zigbuild**](https://github.com/rust-cross/cargo-zigbuild) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/rust-cross/cargo-zigbuild/releases) | Linux, macOS, Windows | [MIT](https://github.com/rust-cross/cargo-zigbuild/blob/main/LICENSE) | |
| [**convco**](https://github.com/convco/convco) | `$HOME/.install-action/bin` | [GitHub Releases](https://github.com/convco/convco/releases) | Linux, macOS, Windows | [MIT](https://github.com/convco/convco/blob/main/LICENSE) | |
| [**coreutils**](https://github.com/uutils/coreutils) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/uutils/coreutils/releases) | Linux, macOS, Windows | [MIT](https://github.com/uutils/coreutils/blob/main/LICENSE) | |
| [**cosign**](https://github.com/sigstore/cosign) | `$HOME/.install-action/bin` | [GitHub Releases](https://github.com/sigstore/cosign/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/sigstore/cosign/blob/main/LICENSE) | |
| [**covgate**](https://github.com/jesse-black/covgate) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/jesse-black/covgate/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/jesse-black/covgate/blob/main/LICENSE) | |
| [**cross**](https://github.com/cross-rs/cross) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/cross-rs/cross/releases) | Linux, macOS, Windows | [MIT](https://github.com/cross-rs/cross/blob/main/LICENSE-MIT) OR [Apache-2.0](https://github.com/cross-rs/cross/blob/main/LICENSE-APACHE) | |
| [**cyclonedx**](https://github.com/CycloneDX/cyclonedx-cli) | `$HOME/.install-action/bin` | [GitHub Releases](https://github.com/CycloneDX/cyclonedx-cli/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/CycloneDX/cyclonedx-cli/blob/main/LICENSE) | |
| [**deepsource**](https://github.com/DeepSourceCorp/cli) | `$HOME/.install-action/bin` | [GitHub Releases](https://github.com/DeepSourceCorp/cli/releases) | Linux, macOS, Windows | [BSD-2-Clause](https://github.com/DeepSourceCorp/cli/blob/master/LICENSE) | |
| [**docgarden**](https://github.com/jesse-black/docgarden) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/jesse-black/docgarden/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/jesse-black/docgarden/blob/main/LICENSE) | |
| [**dprint**](https://github.com/dprint/dprint) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/dprint/dprint/releases) | Linux, macOS, Windows | [MIT](https://github.com/dprint/dprint/blob/main/LICENSE) | |
| [**earthly**](https://github.com/earthly/earthly) | `$HOME/.install-action/bin` | [GitHub Releases](https://github.com/earthly/earthly/releases) | Linux, macOS, Windows | [MPL-2.0](https://github.com/earthly/earthly/blob/main/LICENSE) | |
| [**editorconfig-checker**](https://github.com/editorconfig-checker/editorconfig-checker) | `$HOME/.install-action/bin` | [GitHub Releases](https://github.com/editorconfig-checker/editorconfig-checker/releases) | Linux, macOS, Windows | [MIT](https://github.com/editorconfig-checker/editorconfig-checker/blob/main/LICENSE) | |
| [**espup**](https://github.com/esp-rs/espup) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/esp-rs/espup/releases) | Linux, macOS, Windows | [MIT](https://github.com/esp-rs/espup/blob/main/LICENSE-MIT) OR [Apache-2.0](https://github.com/esp-rs/espup/blob/main/LICENSE-APACHE) | |
| [**git-cliff**](https://github.com/orhun/git-cliff) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/orhun/git-cliff/releases) | Linux, macOS, Windows | [MIT](https://github.com/orhun/git-cliff/blob/main/LICENSE-MIT) OR [Apache-2.0](https://github.com/orhun/git-cliff/blob/main/LICENSE-APACHE) | |
| [**grcov**](https://github.com/mozilla/grcov) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/mozilla/grcov/releases) | Linux, macOS, Windows | [MPL-2.0](https://github.com/mozilla/grcov/blob/master/LICENSE-MPL-2.0) | |
| [**gungraun-runner**](https://gungraun.github.io/gungraun/) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/gungraun/gungraun/releases) | Linux | [Apache-2.0](https://github.com/gungraun/gungraun/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/gungraun/gungraun/blob/main/LICENSE-MIT) | |
| [**hyperfine**](https://github.com/sharkdp/hyperfine) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/sharkdp/hyperfine/releases) | Linux, macOS, Windows | [MIT](https://github.com/sharkdp/hyperfine/blob/master/LICENSE-MIT) OR [Apache-2.0](https://github.com/sharkdp/hyperfine/blob/master/LICENSE-APACHE) | |
| [**iai-callgrind-runner (deprecated)**](https://gungraun.github.io/gungraun/) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/iai-callgrind/iai-callgrind/releases) | Linux | [Apache-2.0](https://github.com/iai-callgrind/iai-callgrind/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/iai-callgrind/iai-callgrind/blob/main/LICENSE-MIT) | renamed to `gungraun-runner` |
| [**jaq**](https://github.com/01mf02/jaq) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/01mf02/jaq/releases) | Linux, macOS, Windows | [MIT](https://github.com/01mf02/jaq/blob/main/LICENSE-MIT) | |
| [**just**](https://github.com/casey/just) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/casey/just/releases) | Linux, macOS, Windows | [CC0-1.0](https://github.com/casey/just/blob/master/LICENSE) | |
| [**kingfisher**](https://github.com/mongodb/kingfisher) | `$HOME/.install-action/bin` | [GitHub Releases](https://github.com/mongodb/kingfisher/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/mongodb/kingfisher/blob/main/LICENSE) | |
| [**knope**](https://github.com/knope-dev/knope) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/knope-dev/knope/releases) | Linux, macOS, Windows | [MIT](https://github.com/knope-dev/knope/blob/main/LICENSE) | |
| [**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-alerts (deprecated)**](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) | included in `mdbook` |
| [**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-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) | |
| [**mise**](https://github.com/jdx/mise) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/jdx/mise/releases) | Linux, macOS, Windows | [MIT](https://github.com/jdx/mise/blob/main/LICENSE) | |
| [**osv-scanner**](https://github.com/google/osv-scanner) | `$HOME/.install-action/bin` | [GitHub Releases](https://github.com/google/osv-scanner/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/google/osv-scanner/blob/main/LICENSE) | |
| [**parse-changelog**](https://github.com/taiki-e/parse-changelog) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/taiki-e/parse-changelog/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/taiki-e/parse-changelog/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/parse-changelog/blob/main/LICENSE-MIT) | |
| [**parse-dockerfile**](https://github.com/taiki-e/parse-dockerfile) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/taiki-e/parse-dockerfile/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/taiki-e/parse-dockerfile/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/parse-dockerfile/blob/main/LICENSE-MIT) | |
| [**prek**](https://github.com/j178/prek) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/j178/prek/releases) | Linux, macOS, Windows | [MIT](https://github.com/j178/prek/blob/master/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) | |
| [**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) | |
| [**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) | |
| [**syft**](https://github.com/anchore/syft) | `$HOME/.install-action/bin` | [GitHub Releases](https://github.com/anchore/syft/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/anchore/syft/blob/main/LICENSE) | |
| [**taplo**](https://github.com/tamasfe/taplo) (alias: `taplo-cli`) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/tamasfe/taplo/releases) | Linux, macOS, Windows | [MIT](https://github.com/tamasfe/taplo/blob/master/LICENSE) | |
| [**tombi**](https://tombi-toml.github.io/tombi/) | `$HOME/.install-action/bin` | [GitHub Releases](https://github.com/tombi-toml/tombi/releases) | Linux, macOS, Windows | [MIT](https://github.com/tombi-toml/tombi/blob/main/LICENSE) | |
| [**trivy**](https://github.com/aquasecurity/trivy) | `$HOME/.install-action/bin` | [GitHub Releases](https://github.com/aquasecurity/trivy/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/aquasecurity/trivy/blob/main/LICENSE) | |
| [**trunk**](https://github.com/trunk-rs/trunk) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/trunk-rs/trunk/releases) | Linux, macOS, Windows | [MIT](https://github.com/trunk-rs/trunk/blob/main/LICENSE-MIT) OR [Apache-2.0](https://github.com/trunk-rs/trunk/blob/main/LICENSE-APACHE) | |
| [**typos**](https://github.com/crate-ci/typos) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/crate-ci/typos/releases) | Linux, macOS, Windows | [MIT](https://github.com/crate-ci/typos/blob/master/LICENSE-MIT) OR [Apache-2.0](https://github.com/crate-ci/typos/blob/master/LICENSE-APACHE) | |
| [**ubi**](https://github.com/houseabsolute/ubi) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/houseabsolute/ubi/releases) | Linux, macOS, Windows | [MIT](https://github.com/houseabsolute/ubi/blob/master/LICENSE-MIT) OR [Apache-2.0](https://github.com/houseabsolute/ubi/blob/master/LICENSE-APACHE) | |
| [**uv**](https://github.com/astral-sh/uv) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/astral-sh/uv/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/astral-sh/uv/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/astral-sh/uv/blob/main/LICENSE-MIT) | |
| [**vacuum**](https://github.com/daveshanley/vacuum) | `$HOME/.install-action/bin` | [GitHub Releases](https://github.com/daveshanley/vacuum/releases) | Linux, macOS, Windows | [MIT](https://github.com/daveshanley/vacuum/blob/main/LICENSE) | |
| [**valgrind**](https://valgrind.org/) | `/snap/bin` | [snap](https://snapcraft.io/install/valgrind/ubuntu) | Linux | [GPL-2.0](https://sourceware.org/git/?p=valgrind.git;a=blob;f=COPYING;hb=HEAD) | |
| [**wait-for-them**](https://github.com/shenek/wait-for-them) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/shenek/wait-for-them/releases) | Linux, macOS, Windows | [GPL-3.0](https://github.com/shenek/wait-for-them/blob/v0.4.0/Cargo.toml#L7) | |
| [**wash**](https://github.com/wasmCloud/wasmCloud) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/wasmCloud/wasmCloud/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/wasmCloud/wasmCloud/blob/main/LICENSE) | |
| [**wasm-bindgen**](https://github.com/wasm-bindgen/wasm-bindgen) (alias: `wasm-bindgen-cli`) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/wasm-bindgen/wasm-bindgen/releases) | Linux, macOS, Windows | [MIT](https://github.com/wasm-bindgen/wasm-bindgen/blob/main/LICENSE-MIT) OR [Apache-2.0](https://github.com/wasm-bindgen/wasm-bindgen/blob/main/LICENSE-APACHE) | |
| [**wasm-pack**](https://github.com/wasm-bindgen/wasm-pack) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/wasm-bindgen/wasm-pack/releases) | Linux, macOS, Windows | [MIT](https://github.com/wasm-bindgen/wasm-pack/blob/master/LICENSE-MIT) OR [Apache-2.0](https://github.com/wasm-bindgen/wasm-pack/blob/master/LICENSE-APACHE) | |
| [**wasm-tools**](https://github.com/bytecodealliance/wasm-tools) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/bytecodealliance/wasm-tools/releases) | Linux, macOS, Windows | [Apache-2.0 WITH LLVM-exception](https://github.com/bytecodealliance/wasm-tools/blob/main/LICENSE-APACHE) OR [Apache-2.0](https://github.com/bytecodealliance/wasm-tools/blob/main/LICENSE-APACHE) OR [MIT](https://github.com/bytecodealliance/wasm-tools/blob/main/LICENSE-MIT) | |
| [**wasmtime**](https://github.com/bytecodealliance/wasmtime) (alias: `wasmtime-cli`) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/bytecodealliance/wasmtime/releases) | Linux, macOS, Windows | [Apache-2.0 WITH LLVM-exception](https://github.com/bytecodealliance/wasmtime/blob/main/LICENSE) | |
| [**xbuild**](https://github.com/rust-mobile/xbuild) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/rust-mobile/xbuild/releases) | Linux, macOS, Windows | [Apache-2.0 OR MIT](https://github.com/rust-mobile/xbuild/blob/v0.2.0/xbuild/Cargo.toml#L7) | |
| [**xh**](https://github.com/ducaale/xh) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/ducaale/xh/releases) | Linux, macOS, Windows | [MIT](https://github.com/ducaale/xh/blob/master/LICENSE) | |
| [**zizmor**](https://github.com/zizmorcore/zizmor) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/zizmorcore/zizmor/releases) | Linux, macOS, Windows | [MIT](https://github.com/zizmorcore/zizmor/blob/main/LICENSE) | |
| [**zola**](https://github.com/getzola/zola) | `$HOME/.install-action/bin` | [GitHub Releases](https://github.com/getzola/zola/releases) | Linux, macOS, Windows | [MIT](https://github.com/getzola/zola/blob/master/LICENSE) | |
[cargo-binstall]: https://github.com/cargo-bins/cargo-binstall
-97
View File
@@ -1,97 +0,0 @@
name: Install development tools
description: GitHub Action for installing development tools
inputs:
tool:
description: Tools to install (whitespace or comma separated list)
required: false
default: cargo-lambda
checksum:
description: Whether to enable checksums (strongly discouraged to disable)
required: false
default: 'true'
fallback:
description: Whether to use fallback (none, cargo-binstall, or cargo-install)
required: false
default: 'cargo-binstall'
# Note:
# - inputs.* should be manually mapped to INPUT_* due to https://github.com/actions/runner/issues/665
# - For context containing path, use GITHUB_*/RUNNER_* instead of github.*/runner.* due to https://github.com/actions/runner/issues/2185
runs:
using: composite
steps:
- run: |
bail() {
printf '::error::install-action: %s\n' "$*"
exit 1
}
# 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.
if /usr/bin/env | grep -Eq '^BASH_FUNC_'; then
bail 'bash function injection via BASH_FUNC_ environment variable is not allowed for security reasons'
fi
if ! command -v bash >/dev/null; then
if grep -Eq '^ID=alpine' /etc/os-release; then
printf '::group::Install packages required for install-action (bash)\n'
# NB: sync with apk_install in main.sh
if command -v sudo >/dev/null; then
sudo apk --no-cache add bash
elif command -v doas >/dev/null; then
doas apk --no-cache add bash
else
apk --no-cache add bash
fi
printf '::endgroup::\n'
else
bail 'this action requires bash'
fi
fi
bash --noprofile --norc "${GITHUB_ACTION_PATH:?}/main.sh"
shell: /usr/bin/env -u ENV -u BASH_ENV -u CDPATH -u SHELLOPTS -u BASHOPTS /bin/sh -eu {0} # zizmor: ignore[misfeature] false positive
env:
# NB: Sync with Windows case.
INPUT_TOOL: ${{ inputs.tool }}
INPUT_CHECKSUM: ${{ inputs.checksum }}
INPUT_FALLBACK: ${{ inputs.fallback }}
DEFAULT_GITHUB_TOKEN: ${{ inputs.fallback == 'cargo-binstall' && github.token || '' }}
ACTION_USER_AGENT: ${{ github.action_repository }} (${{ github.action_ref }})
RUNNER_OS: ${{ runner.os }}
RUNNER_ARCH: ${{ runner.arch }}
if: runner.os != 'Windows'
# 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
- run: |
Set-StrictMode -Version Latest
$remove_env = @('ENV','BASH_ENV','CDPATH','SHELLOPTS','BASHOPTS','BASH_FUNC_*')
foreach ($name in $remove_env) {
if (Test-Path "Env:$name") { Remove-Item "Env:\$name" }
}
for ($i=1; $i -le 10; $i++) {
$prev_err_action = $ErrorActionPreference
$ErrorActionPreference = "Continue"
& bash --noprofile --norc "$env:GITHUB_ACTION_PATH\main.sh"
$code = $LASTEXITCODE
$ErrorActionPreference = "$prev_err_action"
if (Test-Path "$env:USERPROFILE\.install-action\init") {
# If bash started successfully, main.sh creates init file.
Remove-Item "$env:USERPROFILE\.install-action\init" -Force
exit $code
}
if ($i -lt 10) {
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::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
shell: pwsh
env:
# NB: Sync with non-Windows case.
INPUT_TOOL: ${{ inputs.tool }}
INPUT_CHECKSUM: ${{ inputs.checksum }}
INPUT_FALLBACK: ${{ inputs.fallback }}
DEFAULT_GITHUB_TOKEN: ${{ inputs.fallback == 'cargo-binstall' && github.token || '' }}
ACTION_USER_AGENT: ${{ github.action_repository }} (${{ github.action_ref }})
RUNNER_OS: ${{ runner.os }}
RUNNER_ARCH: ${{ runner.arch }}
if: runner.os == 'Windows'
View File
View File
View File
View File
View File
View File
View File
-1105
View File
File diff suppressed because it is too large Load Diff
View File
View File

Some files were not shown because too many files have changed in this diff Show More