mirror of
https://github.com/taiki-e/install-action.git
synced 2026-05-01 03:00:26 +00:00
Compare commits
219 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4dad9dd51d | ||
|
|
9ff3167a7f | ||
|
|
2a026de3a2 | ||
|
|
f69fae4162 | ||
|
|
c3ee7d751f | ||
|
|
ff96887f37 | ||
|
|
97334a704a | ||
|
|
83639e6b24 | ||
|
|
8bc4e50568 | ||
|
|
1fa8737224 | ||
|
|
a75cc5295d | ||
|
|
ee26d44cfa | ||
|
|
4eef07f07c | ||
|
|
bb72b7ab31 | ||
|
|
f80dd34cc7 | ||
|
|
a252073294 | ||
|
|
f4a1ca475e | ||
|
|
d33a0a9074 | ||
|
|
3594558506 | ||
|
|
bbcb7fd5c9 | ||
|
|
155e686da4 | ||
|
|
e5d84f2a67 | ||
|
|
0865eee0cd | ||
|
|
ab2d9d2b4f | ||
|
|
8666426bd7 | ||
|
|
5b5badbee3 | ||
|
|
8f358b0517 | ||
|
|
087b8bdbf4 | ||
|
|
22d12abbc7 | ||
|
|
c4dcfd4545 | ||
|
|
36e7fe7dbe | ||
|
|
d49da406cc | ||
|
|
d0f28d3db6 | ||
|
|
96c3fd376d | ||
|
|
4091e8ab02 | ||
|
|
956e75d2d4 | ||
|
|
44a0ddacb9 | ||
|
|
ce55513d1e | ||
|
|
d650d1426d | ||
|
|
9de731de5b | ||
|
|
8c5018c59c | ||
|
|
f5afcb464c | ||
|
|
b42a02cb11 | ||
|
|
c971aa51fb | ||
|
|
c0929bd53c | ||
|
|
dfd35942fe | ||
|
|
078ab003a2 | ||
|
|
ba4b012f19 | ||
|
|
6746ad0324 | ||
|
|
68642cc590 | ||
|
|
97df8adcf7 | ||
|
|
f021e393f7 | ||
|
|
0158edbfba | ||
|
|
e3981a6d57 | ||
|
|
1bc9250743 | ||
|
|
999ba40f44 | ||
|
|
b8a856acea | ||
|
|
9f3710a281 | ||
|
|
e85ee51dd0 | ||
|
|
c35547fc3a | ||
|
|
7e60635127 | ||
|
|
25db2c0373 | ||
|
|
eabd84cfdd | ||
|
|
c7aafffa95 | ||
|
|
93c0efda22 | ||
|
|
71ce4c0326 | ||
|
|
e380e63944 | ||
|
|
0f4d53b2aa | ||
|
|
ac22f2e031 | ||
|
|
c079fd141a | ||
|
|
edbd1909dc | ||
|
|
618bb235a3 | ||
|
|
93a94c2059 | ||
|
|
6bb27b4afe | ||
|
|
ca5df137f6 | ||
|
|
a7ac3cded3 | ||
|
|
2b9035e07b | ||
|
|
6c0394aa23 | ||
|
|
815f5e1266 | ||
|
|
d5d85f7b2e | ||
|
|
a0deac80c0 | ||
|
|
6597128d21 | ||
|
|
e4c6aaa80b | ||
|
|
c8c4e1b05f | ||
|
|
39be0e3135 | ||
|
|
5475499f3a | ||
|
|
462c9790a0 | ||
|
|
7f648a20c4 | ||
|
|
6b915acdfc | ||
|
|
6559edc36a | ||
|
|
d7be3bce25 | ||
|
|
c43c9c2677 | ||
|
|
aab22b4379 | ||
|
|
20c09fa7dc | ||
|
|
684e4b1c21 | ||
|
|
d62eacb562 | ||
|
|
a8382c73ee | ||
|
|
6c46ebf75b | ||
|
|
f912bf2387 | ||
|
|
2962aafadb | ||
|
|
581b570b73 | ||
|
|
57339998f1 | ||
|
|
dda69eeab2 | ||
|
|
3f4a57923d | ||
|
|
cb1e26fae1 | ||
|
|
74efbe3ca4 | ||
|
|
0ed66b7383 | ||
|
|
b9424a9dfb | ||
|
|
0b2484c3a0 | ||
|
|
bd71caf797 | ||
|
|
4696ae1646 | ||
|
|
a1eacca287 | ||
|
|
c25592b07d | ||
|
|
61afdb8d12 | ||
|
|
536bc7c409 | ||
|
|
f317c8aedc | ||
|
|
de0e9b667c | ||
|
|
45e69d69e2 | ||
|
|
9c40419eb7 | ||
|
|
b8a66e6289 | ||
|
|
a8803585a3 | ||
|
|
80528fecb9 | ||
|
|
878e967972 | ||
|
|
b1b32c59f1 | ||
|
|
a8398547d2 | ||
|
|
15ad10ce15 | ||
|
|
27a2597e2a | ||
|
|
41cb1134d7 | ||
|
|
13e84cc696 | ||
|
|
d744cfca57 | ||
|
|
f6e099c85c | ||
|
|
a86d24f499 | ||
|
|
c13274e43a | ||
|
|
b0d750a59e | ||
|
|
7d5481ab3a | ||
|
|
b6afd8d427 | ||
|
|
d1839c2f68 | ||
|
|
85064bbc1c | ||
|
|
9fdefab8ca | ||
|
|
c430b7f8ce | ||
|
|
cfca345a65 | ||
|
|
a76dc5ad72 | ||
|
|
1dda3d1d7e | ||
|
|
92705122ed | ||
|
|
7e5692dc7d | ||
|
|
8aa291abce | ||
|
|
36cb23f9a6 | ||
|
|
ab4e6f5142 | ||
|
|
aae9c8b0a3 | ||
|
|
6eaed8fc4e | ||
|
|
fd84b52d9c | ||
|
|
d637ba13b3 | ||
|
|
f343021ffc | ||
|
|
d7602d9dcb | ||
|
|
31800b17cc | ||
|
|
e6302a3430 | ||
|
|
1e5fc1d1ff | ||
|
|
ca9824f699 | ||
|
|
de0d285973 | ||
|
|
fb59c794dd | ||
|
|
daa62f7ff1 | ||
|
|
f113ef4cd9 | ||
|
|
6a6a02956b | ||
|
|
782f135cee | ||
|
|
d39d50062b | ||
|
|
6f1ebcd9e2 | ||
|
|
161dccbf9a | ||
|
|
b410f0ad6a | ||
|
|
e067205061 | ||
|
|
78118df4d7 | ||
|
|
1cbab0616a | ||
|
|
e937b634a0 | ||
|
|
37f510303a | ||
|
|
841e33c134 | ||
|
|
095ba5e160 | ||
|
|
0e32218b80 | ||
|
|
4a4d2c21ca | ||
|
|
64d4f090ec | ||
|
|
60952837b3 | ||
|
|
640bc768ee | ||
|
|
d5b4eb3fc2 | ||
|
|
83e8fa8971 | ||
|
|
2ab583ea78 | ||
|
|
6745402100 | ||
|
|
03433ef024 | ||
|
|
47e0a4c507 | ||
|
|
7909142ffc | ||
|
|
cc6a4561c7 | ||
|
|
e71b030c0f | ||
|
|
2e924a47e0 | ||
|
|
27b6cde93d | ||
|
|
238cf20a47 | ||
|
|
5d3b331fca | ||
|
|
362d8665ec | ||
|
|
0b1022563b | ||
|
|
70b038cf3c | ||
|
|
2e2f046ba3 | ||
|
|
bc0a06a003 | ||
|
|
8b8c667dd4 | ||
|
|
b0517abb78 | ||
|
|
e92f6df9a9 | ||
|
|
c2d1a0109d | ||
|
|
faecae2c4d | ||
|
|
c9f17ee0e8 | ||
|
|
128d64bf89 | ||
|
|
cc153c439a | ||
|
|
68092bc267 | ||
|
|
04e2194ad0 | ||
|
|
9d4e8b470d | ||
|
|
7ac23e803d | ||
|
|
1a26a6ebba | ||
|
|
74b1a6bda9 | ||
|
|
3e62d0866a | ||
|
|
d6786821c2 | ||
|
|
89155eb702 | ||
|
|
bb135877f4 | ||
|
|
97a43ec52d | ||
|
|
f0cf8b84ad | ||
|
|
330a7255ba |
49
.cspell.json
Normal file
49
.cspell.json
Normal file
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"version": "0.2",
|
||||
"gitignoreRoot": ".",
|
||||
"useGitignore": true,
|
||||
"dictionaryDefinitions": [
|
||||
{
|
||||
"name": "organization-dictionary",
|
||||
"path": "./.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 ((\\(c\\)|\\(C\\)|©) )?.*",
|
||||
// GHA actions/workflows
|
||||
"uses: .+@",
|
||||
// GHA context (repo name, owner name, etc.)
|
||||
"github.\\w+ (=|!)= '.+'",
|
||||
// GH username
|
||||
"( |\\[)@[\\w_-]+",
|
||||
// Git config username
|
||||
"git config user.name .*",
|
||||
// Cargo.toml authors
|
||||
"authors *= *\\[.*\\]",
|
||||
"\".* <[\\w_.+-]+@[\\w.-]+>\""
|
||||
],
|
||||
"languageSettings": [
|
||||
{
|
||||
"languageId": ["*"],
|
||||
"dictionaries": ["rust"]
|
||||
}
|
||||
],
|
||||
"ignorePaths": []
|
||||
}
|
||||
109
.github/.cspell/organization-dictionary.txt
vendored
Normal file
109
.github/.cspell/organization-dictionary.txt
vendored
Normal file
@@ -0,0 +1,109 @@
|
||||
// This is a dictionary shared by projects under https://github.com/taiki-e.
|
||||
// It is not intended for manual editing.
|
||||
|
||||
endo
|
||||
taiki
|
||||
|
||||
// tool name and its configs or options
|
||||
asan
|
||||
cflags
|
||||
clippy
|
||||
codegen
|
||||
cxxflags
|
||||
exitcode
|
||||
miri
|
||||
miriflags
|
||||
msan
|
||||
retag
|
||||
rustc
|
||||
rustdoc
|
||||
rustdocflags
|
||||
rustflags
|
||||
rustfmt
|
||||
rustsec
|
||||
rustup
|
||||
valgrind
|
||||
xcompile
|
||||
Zdoctest
|
||||
Zmiri
|
||||
|
||||
// Rust target triple
|
||||
aarch
|
||||
androideabi
|
||||
armeb
|
||||
armebv
|
||||
armv
|
||||
asmjs
|
||||
atmega
|
||||
bpfeb
|
||||
bpfel
|
||||
cuda
|
||||
eabi
|
||||
eabihf
|
||||
emscripten
|
||||
espidf
|
||||
fortanix
|
||||
gnuabi
|
||||
gnueabi
|
||||
gnueabihf
|
||||
gnullvm
|
||||
gnuspe
|
||||
gnux
|
||||
illumos
|
||||
imac
|
||||
macabi
|
||||
mipsel
|
||||
mipsisa
|
||||
msvc
|
||||
muslabi
|
||||
musleabi
|
||||
musleabihf
|
||||
nvptx
|
||||
openwrt
|
||||
riscv
|
||||
softfloat
|
||||
sparcv
|
||||
thumbeb
|
||||
thumbebv
|
||||
thumbv
|
||||
tvos
|
||||
uclibc
|
||||
uclibceabi
|
||||
uclibceabihf
|
||||
uefi
|
||||
vxworks
|
||||
wasi
|
||||
watchos
|
||||
xous
|
||||
|
||||
// Rust other
|
||||
alloc
|
||||
canonicalize
|
||||
consts
|
||||
deque
|
||||
doctest
|
||||
hasher
|
||||
inlateout
|
||||
intrinsics
|
||||
lateout
|
||||
msrv
|
||||
peekable
|
||||
punct
|
||||
repr
|
||||
rfind
|
||||
rfold
|
||||
splitn
|
||||
uninit
|
||||
|
||||
// Other
|
||||
connrefused
|
||||
cygwin
|
||||
euxo
|
||||
msys
|
||||
noninteractive
|
||||
noprofile
|
||||
norc
|
||||
pipefail
|
||||
powerset
|
||||
proto
|
||||
tlsv
|
||||
22
.github/.cspell/project-dictionary.txt
vendored
Normal file
22
.github/.cspell/project-dictionary.txt
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
binstall
|
||||
bytecodealliance
|
||||
distro
|
||||
doas
|
||||
Dpkg
|
||||
jfrimmel
|
||||
koalaman
|
||||
libc
|
||||
linkcheck
|
||||
mdbook
|
||||
mvdan
|
||||
nextest
|
||||
protobuf
|
||||
protoc
|
||||
protocolbuffers
|
||||
quickinstall
|
||||
rustwasm
|
||||
shellcheck
|
||||
shfmt
|
||||
toolchains
|
||||
udeps
|
||||
wasmtime
|
||||
0
.github/.cspell/rust-dependencies.txt
vendored
Normal file
0
.github/.cspell/rust-dependencies.txt
vendored
Normal file
9
.github/dependabot.yml
vendored
Normal file
9
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: github-actions
|
||||
directory: /
|
||||
schedule:
|
||||
interval: daily
|
||||
commit-message:
|
||||
prefix: ''
|
||||
labels: []
|
||||
72
.github/workflows/ci.yml
vendored
72
.github/workflows/ci.yml
vendored
@@ -10,7 +10,7 @@ on:
|
||||
- main
|
||||
- dev
|
||||
schedule:
|
||||
- cron: '0 0 * * *'
|
||||
- cron: '0 1 * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
defaults:
|
||||
@@ -18,27 +18,30 @@ defaults:
|
||||
shell: bash
|
||||
|
||||
jobs:
|
||||
tidy:
|
||||
uses: taiki-e/workflows/.github/workflows/tidy-no-rust.yml@main
|
||||
|
||||
test:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
os:
|
||||
- ubuntu-20.04
|
||||
- ubuntu-22.04
|
||||
tool:
|
||||
# Note: Specifying the version of valgrind and wasm-pack is not supported.
|
||||
- cargo-hack,cargo-llvm-cov,cargo-minimal-versions,parse-changelog,cross,nextest,shellcheck,shfmt,valgrind,wasm-pack,wasmtime,mdbook
|
||||
- cargo-hack@0.5.12,cargo-llvm-cov@0.3.0,cargo-minimal-versions@0.1.3,parse-changelog@0.4.7,cross@0.2.1,nextest@0.9.11,shellcheck@0.8.0,shfmt@3.4.3,wasmtime@0.35.3,mdbook@0.4.18
|
||||
# Nextest supports basic version ranges as well
|
||||
- nextest@0.9
|
||||
# cargo-watch is supported by cargo-binstall (through quickinstall)
|
||||
- cargo-hack,cargo-llvm-cov,cargo-minimal-versions,parse-changelog,cargo-udeps,cargo-valgrind,cargo-deny,cross,nextest,protoc,shellcheck,shfmt,valgrind,wasm-pack,wasmtime,mdbook,mdbook-linkcheck,cargo-watch
|
||||
include:
|
||||
# Note: mdBook binary is incompatible with ubuntu 18.04,
|
||||
# see https://github.com/rust-lang/mdBook/issues/1779
|
||||
- os: ubuntu-18.04
|
||||
tool: cargo-hack,cargo-llvm-cov,cargo-minimal-versions,parse-changelog,cross,nextest,shellcheck,shfmt,valgrind,wasm-pack,wasmtime
|
||||
- os: macos-10.15
|
||||
tool: cargo-hack,cargo-llvm-cov,cargo-minimal-versions,parse-changelog,cross,nextest,shellcheck,shfmt,wasm-pack,wasmtime,mdbook
|
||||
# Note: Specifying the version of valgrind and cargo-binstall is not supported.
|
||||
- os: ubuntu-20.04
|
||||
tool: cargo-hack@0.5.24,cargo-llvm-cov@0.5.2,cargo-minimal-versions@0.1.8,parse-changelog@0.5.2,cargo-udeps@0.1.35,cargo-valgrind@2.1.0,cargo-deny@0.13.5,cross@0.2.4,nextest@0.9.11,protoc@3.21.11,shellcheck@0.9.0,shfmt@3.6.0,wasm-pack@0.10.3,wasmtime@3.0.1,mdbook@0.4.22,mdbook-linkcheck@0.7.7,cargo-watch@8.1.1
|
||||
# Nextest supports basic version ranges as well. For other tools, this will be supported by https://github.com/taiki-e/install-action/pull/27.
|
||||
- os: ubuntu-20.04
|
||||
tool: nextest@0.9
|
||||
- os: macos-11
|
||||
tool: cargo-hack,cargo-llvm-cov,cargo-minimal-versions,parse-changelog,cargo-udeps,cargo-valgrind,cargo-deny,cross,nextest,protoc,shellcheck,shfmt,wasm-pack,wasmtime,mdbook,mdbook-linkcheck,cargo-watch
|
||||
- os: windows-2019
|
||||
tool: cargo-hack,cargo-llvm-cov,cargo-minimal-versions,parse-changelog,cross,nextest
|
||||
tool: cargo-hack,cargo-llvm-cov,cargo-minimal-versions,parse-changelog,cargo-udeps,cargo-valgrind,cargo-deny,cross,nextest,protoc,shellcheck,shfmt,wasm-pack,wasmtime,mdbook,mdbook-linkcheck,cargo-watch
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
@@ -48,20 +51,39 @@ jobs:
|
||||
with:
|
||||
tool: ${{ matrix.tool }}
|
||||
|
||||
tidy:
|
||||
test-container:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
container:
|
||||
- ubuntu:20.04
|
||||
- debian:latest
|
||||
tool:
|
||||
# valgrind: installing snap to container is difficult...
|
||||
- cargo-hack,cargo-llvm-cov,cargo-minimal-versions,parse-changelog,cargo-udeps,cargo-valgrind,cargo-deny,cross,nextest,protoc,shellcheck,shfmt,wasm-pack,wasmtime,mdbook,mdbook-linkcheck,cargo-watch
|
||||
include:
|
||||
- container: ubuntu:18.04
|
||||
# The latest mdbook provides prebuilt binaries for musl host, but we don't support it yet (will be done by https://github.com/taiki-e/install-action/pull/27)
|
||||
tool: cargo-hack,cargo-llvm-cov,cargo-minimal-versions,parse-changelog,cargo-udeps,cargo-valgrind,cargo-deny,cross,nextest,protoc,shellcheck,shfmt,wasm-pack,wasmtime,mdbook-linkcheck,cargo-watch
|
||||
- container: alpine:latest
|
||||
# cargo-udeps,protoc,valgrind,wasmtime,mdbook,mdbook-linkcheck,cargo-watch don't provide prebuilt binaries for musl host.
|
||||
tool: cargo-hack,cargo-llvm-cov,cargo-minimal-versions,parse-changelog,cargo-valgrind,cargo-deny,cross,nextest,shellcheck,shfmt,wasm-pack,cargo-binstall
|
||||
runs-on: ubuntu-latest
|
||||
container: ${{ matrix.container }}
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
persist-credentials: false
|
||||
- uses: taiki-e/install-action@shellcheck
|
||||
- uses: taiki-e/install-action@shfmt
|
||||
- run: npm install prettier
|
||||
- run: shfmt -d $(git ls-files '*.sh')
|
||||
if: always()
|
||||
- run: npx prettier -c $(git ls-files '*.yml')
|
||||
if: always()
|
||||
- run: npx prettier -c $(git ls-files '*.js')
|
||||
if: always()
|
||||
- run: shellcheck $(git ls-files '*.sh')
|
||||
if: always()
|
||||
- name: Install requirements (ubuntu/debian)
|
||||
run: |
|
||||
set -ex
|
||||
apt-get -o Acquire::Retries=10 -qq update
|
||||
apt-get -o Acquire::Retries=10 -qq -o Dpkg::Use-Pty=0 install -y --no-install-recommends cargo
|
||||
if: startsWith(matrix.container, 'ubuntu') || startsWith(matrix.container, 'debian')
|
||||
- name: Install requirements (alpine)
|
||||
run: apk add bash cargo
|
||||
shell: sh
|
||||
if: startsWith(matrix.container, 'alpine')
|
||||
- uses: ./
|
||||
with:
|
||||
tool: ${{ matrix.tool }}
|
||||
|
||||
3
.github/workflows/release.yml
vendored
3
.github/workflows/release.yml
vendored
@@ -26,5 +26,4 @@ jobs:
|
||||
changelog: CHANGELOG.md
|
||||
title: $version
|
||||
branch: 'main|v[0-9]+'
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
5
.gitignore
vendored
5
.gitignore
vendored
@@ -1,6 +1,5 @@
|
||||
node_modules
|
||||
package-lock.json
|
||||
package.json
|
||||
target
|
||||
Cargo.lock
|
||||
|
||||
# For platform and editor specific settings, it is recommended to add to
|
||||
# a global .gitignore file.
|
||||
|
||||
14
.shellcheckrc
Normal file
14
.shellcheckrc
Normal file
@@ -0,0 +1,14 @@
|
||||
# ShellCheck configuration
|
||||
# https://github.com/koalaman/shellcheck/blob/HEAD/shellcheck.1.md#rc-files
|
||||
|
||||
# See also:
|
||||
# https://www.shellcheck.net/wiki/Optional
|
||||
# https://google.github.io/styleguide/shellguide.html
|
||||
|
||||
# https://www.shellcheck.net/wiki/SC2292
|
||||
# https://google.github.io/styleguide/shellguide.html#s6.3-tests
|
||||
enable=require-double-brackets
|
||||
|
||||
# https://www.shellcheck.net/wiki/SC2250
|
||||
# https://google.github.io/styleguide/shellguide.html#s5.6-variable-expansion
|
||||
enable=require-variable-braces
|
||||
419
CHANGELOG.md
419
CHANGELOG.md
@@ -10,6 +10,350 @@ Note: In this file, do not use the hard wrap in the middle of a sentence for com
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [1.16.0] - 2022-12-14
|
||||
|
||||
- Update `cargo-binstall@latest` to 0.18.1. ([#32](https://github.com/taiki-e/install-action/pull/32), thanks @NobodyXu)
|
||||
|
||||
- If the host environment lacks packages required for installation, such as `curl` or `tar`, install them if possible.
|
||||
|
||||
It is mainly intended to make the use of this action easy on containers or self-hosted runners, and currently supports Debian-based distributions (including Ubuntu) and Alpine.
|
||||
|
||||
The system's package manager is used for these installations. However, bash, which is an execution requirement of the action itself, and rustc, which is usually preferred for installation by rustup rather than the system's package manager, are *not* covered by these installations.
|
||||
|
||||
## [1.15.5] - 2022-12-13
|
||||
|
||||
- Update `shellcheck@latest` to 0.9.0.
|
||||
|
||||
## [1.15.4] - 2022-12-12
|
||||
|
||||
- Update `shfmt@latest` to 3.6.0.
|
||||
- Update `cargo-binstall@latest` to 0.18.0.
|
||||
- Support installing `cargo-binstall` on linux with custom host targets such as x86_64-alpine-linux-musl.
|
||||
|
||||
## [1.15.3] - 2022-12-11
|
||||
|
||||
- Fix bug regarding musl host detection. ([#29](https://github.com/taiki-e/install-action/issues/29))
|
||||
|
||||
## [1.15.2] - 2022-12-10
|
||||
|
||||
- Update `mdbook-linkcheck@latest` to 0.7.7.
|
||||
- Update `protoc@latest` to 3.21.11.
|
||||
|
||||
## [1.15.1] - 2022-12-03
|
||||
|
||||
- Update `wasmtime@latest` to 3.0.1.
|
||||
- Update `protoc@latest` to 3.21.10.
|
||||
- Update `cargo-hack@latest` to 0.5.24.
|
||||
|
||||
## [1.15.0] - 2022-11-29
|
||||
|
||||
- Support `cargo-deny`.
|
||||
- Update `mdbook@latest` to 0.4.22.
|
||||
|
||||
## [1.14.7] - 2022-11-27
|
||||
|
||||
- Update `cargo-llvm-cov@latest` to 0.5.2.
|
||||
|
||||
## [1.14.6] - 2022-11-27
|
||||
|
||||
- Update `cargo-hack@latest` to 0.5.23.
|
||||
- Update `cargo-llvm-cov@latest` to 0.5.1.
|
||||
- Update `cargo-minimal-versions@latest` to 0.1.8.
|
||||
|
||||
## [1.14.5] - 2022-11-27
|
||||
|
||||
- Update `wasmtime@latest` to 3.0.0.
|
||||
- Update `cargo-binstall@latest` to 0.17.0.
|
||||
|
||||
## [1.14.4] - 2022-11-04
|
||||
|
||||
- Update `cargo-udeps@latest` to 0.1.35.
|
||||
|
||||
## [1.14.3] - 2022-10-28
|
||||
|
||||
- Update `wasmtime@latest` to 2.0.1.
|
||||
- Update `protoc@latest` to 3.21.9.
|
||||
|
||||
## [1.14.2] - 2022-10-25
|
||||
|
||||
- Update `cargo-hack@latest` to 0.5.22.
|
||||
- Update `cargo-minimal-versions@latest` to 0.1.7.
|
||||
- Update `parse-changelog@latest` to 0.5.2.
|
||||
|
||||
## [1.14.1] - 2022-10-21
|
||||
|
||||
- Update `wasmtime@latest` to 2.0.0.
|
||||
- Update `protoc@latest` to 3.21.8.
|
||||
|
||||
## [1.14.0] - 2022-10-18
|
||||
|
||||
- Update `protoc@latest` to 3.21.7.
|
||||
- Update `cargo-binstall@latest` to 0.16.0. ([#28](https://github.com/taiki-e/install-action/pull/28), thanks @NobodyXu)
|
||||
- Reject semver operators in version. This was not supported even before, but was accidentally accepted in the `cargo-binstall` fallback. ([#26](https://github.com/taiki-e/install-action/pull/26), thanks @NobodyXu)
|
||||
|
||||
## [1.13.9] - 2022-09-28
|
||||
|
||||
- Update `cargo-binstall@latest` to 0.14.0. ([#24](https://github.com/taiki-e/install-action/pull/24), thanks @coltfred)
|
||||
|
||||
## [1.13.8] - 2022-09-26
|
||||
|
||||
- Update `cargo-hack@latest` to 0.5.21.
|
||||
|
||||
## [1.13.7] - 2022-09-25
|
||||
|
||||
- Work around cargo-binstall upgrade issue on Windows. ([#23](https://github.com/taiki-e/install-action/pull/23))
|
||||
- Ensure that the latest cargo-binstall is used. ([#22](https://github.com/taiki-e/install-action/pull/22), thanks @NobodyXu)
|
||||
|
||||
## [1.13.6] - 2022-09-25
|
||||
|
||||
- Update `cargo-binstall@latest` to 0.13.3.
|
||||
|
||||
## [1.13.5] - 2022-09-24
|
||||
|
||||
- Update `cargo-hack@latest` to 0.5.20.
|
||||
- Downgrade `cargo-binstall@latest` to 0.13.1 to avoid [upstream bug](https://github.com/cargo-bins/cargo-binstall/issues/416).
|
||||
|
||||
## [1.13.4] - 2022-09-22
|
||||
|
||||
- Update `cargo-hack@latest` to 0.5.19.
|
||||
|
||||
## [1.13.3] - 2022-09-20
|
||||
|
||||
- Update `wasmtime@latest` to 1.0.0.
|
||||
|
||||
## [1.13.2] - 2022-09-16
|
||||
|
||||
- Update `cargo-udeps@latest` to 0.1.33.
|
||||
|
||||
## [1.13.1] - 2022-09-15
|
||||
|
||||
- Update `protoc@latest` to 3.21.6.
|
||||
|
||||
## [1.13.0] - 2022-09-10
|
||||
|
||||
- Avoid using sudo on `protoc` installation.
|
||||
|
||||
## [1.12.4] - 2022-09-10
|
||||
|
||||
- Update `cargo-llvm-cov@latest` to 0.5.0.
|
||||
|
||||
## [1.12.3] - 2022-09-08
|
||||
|
||||
- Update `parse-changelog@latest` to 0.5.1.
|
||||
|
||||
## [1.12.2] - 2022-09-04
|
||||
|
||||
- Update `cargo-hack@latest` to 0.5.18.
|
||||
|
||||
## [1.12.1] - 2022-09-01
|
||||
|
||||
- Update `wasmtime@latest` to 0.40.1.
|
||||
|
||||
## [1.12.0] - 2022-08-28
|
||||
|
||||
- Support `cargo-valgrind`. ([#20](https://github.com/taiki-e/install-action/pull/20), thanks @messense)
|
||||
|
||||
## [1.11.2] - 2022-08-23
|
||||
|
||||
- Update `wasmtime@latest` to 0.40.0.
|
||||
- Update `cargo-udeps@latest` to 0.1.32.
|
||||
- Update `protoc@latest` to 3.21.5.
|
||||
|
||||
## [1.11.1] - 2022-08-13
|
||||
|
||||
- Make installation that uses `cargo-binstall` robust. ([#19](https://github.com/taiki-e/install-action/pull/19), thanks @NobodyXu)
|
||||
|
||||
## [1.11.0] - 2022-08-13
|
||||
|
||||
- Update `cargo-hack@latest` to 0.5.17.
|
||||
- Support `cargo-udeps`. ([#17](https://github.com/taiki-e/install-action/pull/17), thanks @gifnksm)
|
||||
|
||||
## [1.10.4] - 2022-08-06
|
||||
|
||||
- Update `cargo-llvm-cov@latest` to 0.4.14.
|
||||
|
||||
## [1.10.3] - 2022-08-01
|
||||
|
||||
- Support `wasm-pack` on Windows.
|
||||
|
||||
- Support specifying the version of `wasm-pack`.
|
||||
|
||||
## [1.10.2] - 2022-08-01
|
||||
|
||||
- Support `protoc` on Windows.
|
||||
|
||||
## [1.10.1] - 2022-08-01
|
||||
|
||||
- Fix missing include files when installing `protoc` on Linux and macOS.
|
||||
|
||||
- Installation of `protoc` on Windows is not currently working (in all released versions) and is considered unsupported.
|
||||
|
||||
## [1.10.0] - 2022-08-01
|
||||
|
||||
- Set the `PROTOC` environment variable when installing `protoc` if it has not already been set.
|
||||
|
||||
## [1.9.0] - 2022-08-01
|
||||
|
||||
- Support `protoc`.
|
||||
- Support `shellcheck` on Windows.
|
||||
- Support `shfmt` on Windows.
|
||||
|
||||
## [1.8.4] - 2022-08-01
|
||||
|
||||
- Update `cargo-llvm-cov@latest` to 0.4.13.
|
||||
|
||||
## [1.8.3] - 2022-07-30
|
||||
|
||||
- Support `taiki-e/install-action@mdbook-linkcheck` shorthand for mdbook-linkcheck.
|
||||
|
||||
## [1.8.2] - 2022-07-30
|
||||
|
||||
- Update `cargo-hack@latest` to 0.5.16.
|
||||
- Update `cargo-llvm-cov@latest` to 0.4.12.
|
||||
|
||||
## [1.8.1] - 2022-07-26
|
||||
|
||||
- Fix `cargo-binstall` installation failure.
|
||||
|
||||
## [1.8.0] - 2022-07-26
|
||||
|
||||
- Only use musl binaries for nextest if glibc isn't available. See [#13](https://github.com/taiki-e/install-action/issues/13) for more.
|
||||
|
||||
- Fix `cargo-binstall` installation failure. ([#16](https://github.com/taiki-e/install-action/pull/16), thanks @CAD97)
|
||||
|
||||
- Accept `cargo-nextest` as an alias for `nextest`. ([#15](https://github.com/taiki-e/install-action/pull/15), thanks @CAD97)
|
||||
|
||||
## [1.7.0] - 2022-07-25
|
||||
|
||||
- Install Rust-related binaries to `/usr/local/bin` when `$CARGO_HOME/bin` and `$HOME/.cargo/bin` is not available.
|
||||
|
||||
## [1.6.1] - 2022-07-25
|
||||
|
||||
- Fix diagnostics.
|
||||
|
||||
## [1.6.0] - 2022-07-25
|
||||
|
||||
- Support `mdbook-linkcheck`.
|
||||
- Support `mdbook` on Windows.
|
||||
- Support `wasmtime` on Windows.
|
||||
- Support `nextest` on Linux (musl).
|
||||
- Fix installation failure when `$CARGO_HOME/bin` and `$HOME/.cargo/bin` is not available.
|
||||
|
||||
## [1.5.11] - 2022-07-25
|
||||
|
||||
- Fix `cargo-binstall` installation on macOS and Windows.
|
||||
|
||||
## [1.5.10] - 2022-07-24
|
||||
|
||||
- Update `parse-changelog@latest` to 0.5.0.
|
||||
|
||||
## [1.5.9] - 2022-07-22
|
||||
|
||||
- Update `wasmtime@latest` to 0.39.1.
|
||||
- Update `mdbook@latest` to 0.4.21.
|
||||
|
||||
## [1.5.8] - 2022-07-21
|
||||
|
||||
- Update `wasmtime@latest` to 0.39.0.
|
||||
|
||||
## [1.5.7] - 2022-07-20
|
||||
|
||||
- Update `cargo-llvm-cov@latest` to 0.4.11.
|
||||
|
||||
## [1.5.6] - 2022-07-18
|
||||
|
||||
- Update `cargo-llvm-cov@latest` to 0.4.10.
|
||||
|
||||
## [1.5.5] - 2022-07-18
|
||||
|
||||
- Update `cargo-hack@latest` to 0.5.15.
|
||||
|
||||
## [1.5.4] - 2022-07-16
|
||||
|
||||
- Update `mdbook@latest` to 0.4.20.
|
||||
- Update `cross@latest` to 0.2.4.
|
||||
- Update `cargo-minimal-versions@latest` to 0.1.5.
|
||||
- Update `parse-changelog@latest` to 0.4.9.
|
||||
|
||||
## [1.5.3] - 2022-07-07
|
||||
|
||||
- Update `cargo-llvm-cov@latest` to 0.4.9.
|
||||
|
||||
## [1.5.2] - 2022-07-02
|
||||
|
||||
- Update `cross@latest` to 0.2.2.
|
||||
|
||||
## [1.5.1] - 2022-07-02
|
||||
|
||||
- Update `mdbook@latest` to 0.4.19.
|
||||
|
||||
## [1.5.0] - 2022-06-28
|
||||
|
||||
- Enable secure mode for `cargo-binstall`. ([#9](https://github.com/taiki-e/install-action/pull/9), thanks @NobodyXu)
|
||||
- Update `wasmtime@latest` to 0.38.1.
|
||||
|
||||
## [1.4.2] - 2022-06-16
|
||||
|
||||
- Update `cargo-llvm-cov@latest` to 0.4.8.
|
||||
|
||||
## [1.4.1] - 2022-06-13
|
||||
|
||||
- Update `cargo-llvm-cov@latest` to 0.4.7.
|
||||
|
||||
## [1.4.0] - 2022-06-10
|
||||
|
||||
- Support `cargo-binstall`. ([#8](https://github.com/taiki-e/install-action/pull/8), thanks @NobodyXu)
|
||||
- Use `cargo-binstall` as a fallback if the unsupported package is specified. ([#8](https://github.com/taiki-e/install-action/pull/8), thanks @NobodyXu)
|
||||
- Update `shfmt@latest` to 3.5.1.
|
||||
|
||||
## [1.3.13] - 2022-06-02
|
||||
|
||||
- Update `cargo-hack@latest` to 0.5.14.
|
||||
- Update `cargo-llvm-cov@latest` to 0.4.5.
|
||||
- Update `cargo-minimal-versions@latest` to 0.1.4.
|
||||
- Update `parse-changelog@latest` to 0.4.8.
|
||||
|
||||
## [1.3.12] - 2022-05-30
|
||||
|
||||
- Update `cargo-llvm-cov@latest` to 0.4.4.
|
||||
|
||||
## [1.3.11] - 2022-05-29
|
||||
|
||||
- Update `cargo-llvm-cov@latest` to 0.4.3.
|
||||
|
||||
## [1.3.10] - 2022-05-24
|
||||
|
||||
- Update `cargo-llvm-cov@latest` to 0.4.1.
|
||||
|
||||
## [1.3.9] - 2022-05-21
|
||||
|
||||
- Update `wasmtime@latest` to 0.37.0.
|
||||
|
||||
## [1.3.8] - 2022-05-12
|
||||
|
||||
- Update `shfmt@latest` to 3.5.0.
|
||||
|
||||
## [1.3.7] - 2022-05-12
|
||||
|
||||
- Update `cargo-hack@latest` to 0.5.13.
|
||||
- Update `cargo-llvm-cov@latest` to 0.4.0.
|
||||
|
||||
## [1.3.6] - 2022-05-06
|
||||
|
||||
- Update `cargo-llvm-cov@latest` to 0.3.3.
|
||||
|
||||
## [1.3.5] - 2022-05-05
|
||||
|
||||
- Update `cargo-llvm-cov@latest` to 0.3.2.
|
||||
|
||||
## [1.3.4] - 2022-05-01
|
||||
|
||||
- Update `cargo-llvm-cov@latest` to 0.3.1.
|
||||
|
||||
## [1.3.3] - 2022-04-21
|
||||
|
||||
- Update `wasmtime@latest` to 0.36.0.
|
||||
|
||||
## [1.3.2] - 2022-04-16
|
||||
|
||||
- Update `mdbook@latest` to 0.4.18.
|
||||
@@ -95,7 +439,80 @@ Note: In this file, do not use the hard wrap in the middle of a sentence for com
|
||||
|
||||
Initial release
|
||||
|
||||
[Unreleased]: https://github.com/taiki-e/install-action/compare/v1.3.2...HEAD
|
||||
[Unreleased]: https://github.com/taiki-e/install-action/compare/v1.16.0...HEAD
|
||||
[1.16.0]: https://github.com/taiki-e/install-action/compare/v1.15.5...v1.16.0
|
||||
[1.15.5]: https://github.com/taiki-e/install-action/compare/v1.15.4...v1.15.5
|
||||
[1.15.4]: https://github.com/taiki-e/install-action/compare/v1.15.3...v1.15.4
|
||||
[1.15.3]: https://github.com/taiki-e/install-action/compare/v1.15.2...v1.15.3
|
||||
[1.15.2]: https://github.com/taiki-e/install-action/compare/v1.15.1...v1.15.2
|
||||
[1.15.1]: https://github.com/taiki-e/install-action/compare/v1.15.0...v1.15.1
|
||||
[1.15.0]: https://github.com/taiki-e/install-action/compare/v1.14.7...v1.15.0
|
||||
[1.14.7]: https://github.com/taiki-e/install-action/compare/v1.14.6...v1.14.7
|
||||
[1.14.6]: https://github.com/taiki-e/install-action/compare/v1.14.5...v1.14.6
|
||||
[1.14.5]: https://github.com/taiki-e/install-action/compare/v1.14.4...v1.14.5
|
||||
[1.14.4]: https://github.com/taiki-e/install-action/compare/v1.14.3...v1.14.4
|
||||
[1.14.3]: https://github.com/taiki-e/install-action/compare/v1.14.2...v1.14.3
|
||||
[1.14.2]: https://github.com/taiki-e/install-action/compare/v1.14.1...v1.14.2
|
||||
[1.14.1]: https://github.com/taiki-e/install-action/compare/v1.14.0...v1.14.1
|
||||
[1.14.0]: https://github.com/taiki-e/install-action/compare/v1.13.9...v1.14.0
|
||||
[1.13.9]: https://github.com/taiki-e/install-action/compare/v1.13.8...v1.13.9
|
||||
[1.13.8]: https://github.com/taiki-e/install-action/compare/v1.13.7...v1.13.8
|
||||
[1.13.7]: https://github.com/taiki-e/install-action/compare/v1.13.6...v1.13.7
|
||||
[1.13.6]: https://github.com/taiki-e/install-action/compare/v1.13.5...v1.13.6
|
||||
[1.13.5]: https://github.com/taiki-e/install-action/compare/v1.13.4...v1.13.5
|
||||
[1.13.4]: https://github.com/taiki-e/install-action/compare/v1.13.3...v1.13.4
|
||||
[1.13.3]: https://github.com/taiki-e/install-action/compare/v1.13.2...v1.13.3
|
||||
[1.13.2]: https://github.com/taiki-e/install-action/compare/v1.13.1...v1.13.2
|
||||
[1.13.1]: https://github.com/taiki-e/install-action/compare/v1.13.0...v1.13.1
|
||||
[1.13.0]: https://github.com/taiki-e/install-action/compare/v1.12.4...v1.13.0
|
||||
[1.12.4]: https://github.com/taiki-e/install-action/compare/v1.12.3...v1.12.4
|
||||
[1.12.3]: https://github.com/taiki-e/install-action/compare/v1.12.2...v1.12.3
|
||||
[1.12.2]: https://github.com/taiki-e/install-action/compare/v1.12.1...v1.12.2
|
||||
[1.12.1]: https://github.com/taiki-e/install-action/compare/v1.12.0...v1.12.1
|
||||
[1.12.0]: https://github.com/taiki-e/install-action/compare/v1.11.2...v1.12.0
|
||||
[1.11.2]: https://github.com/taiki-e/install-action/compare/v1.11.1...v1.11.2
|
||||
[1.11.1]: https://github.com/taiki-e/install-action/compare/v1.11.0...v1.11.1
|
||||
[1.11.0]: https://github.com/taiki-e/install-action/compare/v1.10.4...v1.11.0
|
||||
[1.10.4]: https://github.com/taiki-e/install-action/compare/v1.10.3...v1.10.4
|
||||
[1.10.3]: https://github.com/taiki-e/install-action/compare/v1.10.2...v1.10.3
|
||||
[1.10.2]: https://github.com/taiki-e/install-action/compare/v1.10.1...v1.10.2
|
||||
[1.10.1]: https://github.com/taiki-e/install-action/compare/v1.10.0...v1.10.1
|
||||
[1.10.0]: https://github.com/taiki-e/install-action/compare/v1.9.0...v1.10.0
|
||||
[1.9.0]: https://github.com/taiki-e/install-action/compare/v1.8.4...v1.9.0
|
||||
[1.8.4]: https://github.com/taiki-e/install-action/compare/v1.8.3...v1.8.4
|
||||
[1.8.3]: https://github.com/taiki-e/install-action/compare/v1.8.2...v1.8.3
|
||||
[1.8.2]: https://github.com/taiki-e/install-action/compare/v1.8.1...v1.8.2
|
||||
[1.8.1]: https://github.com/taiki-e/install-action/compare/v1.8.0...v1.8.1
|
||||
[1.8.0]: https://github.com/taiki-e/install-action/compare/v1.7.0...v1.8.0
|
||||
[1.7.0]: https://github.com/taiki-e/install-action/compare/v1.6.1...v1.7.0
|
||||
[1.6.1]: https://github.com/taiki-e/install-action/compare/v1.6.0...v1.6.1
|
||||
[1.6.0]: https://github.com/taiki-e/install-action/compare/v1.5.11...v1.6.0
|
||||
[1.5.11]: https://github.com/taiki-e/install-action/compare/v1.5.10...v1.5.11
|
||||
[1.5.10]: https://github.com/taiki-e/install-action/compare/v1.5.9...v1.5.10
|
||||
[1.5.9]: https://github.com/taiki-e/install-action/compare/v1.5.8...v1.5.9
|
||||
[1.5.8]: https://github.com/taiki-e/install-action/compare/v1.5.7...v1.5.8
|
||||
[1.5.7]: https://github.com/taiki-e/install-action/compare/v1.5.6...v1.5.7
|
||||
[1.5.6]: https://github.com/taiki-e/install-action/compare/v1.5.5...v1.5.6
|
||||
[1.5.5]: https://github.com/taiki-e/install-action/compare/v1.5.4...v1.5.5
|
||||
[1.5.4]: https://github.com/taiki-e/install-action/compare/v1.5.3...v1.5.4
|
||||
[1.5.3]: https://github.com/taiki-e/install-action/compare/v1.5.2...v1.5.3
|
||||
[1.5.2]: https://github.com/taiki-e/install-action/compare/v1.5.1...v1.5.2
|
||||
[1.5.1]: https://github.com/taiki-e/install-action/compare/v1.5.0...v1.5.1
|
||||
[1.5.0]: https://github.com/taiki-e/install-action/compare/v1.4.2...v1.5.0
|
||||
[1.4.2]: https://github.com/taiki-e/install-action/compare/v1.4.1...v1.4.2
|
||||
[1.4.1]: https://github.com/taiki-e/install-action/compare/v1.4.0...v1.4.1
|
||||
[1.4.0]: https://github.com/taiki-e/install-action/compare/v1.3.13...v1.4.0
|
||||
[1.3.13]: https://github.com/taiki-e/install-action/compare/v1.3.12...v1.3.13
|
||||
[1.3.12]: https://github.com/taiki-e/install-action/compare/v1.3.11...v1.3.12
|
||||
[1.3.11]: https://github.com/taiki-e/install-action/compare/v1.3.10...v1.3.11
|
||||
[1.3.10]: https://github.com/taiki-e/install-action/compare/v1.3.9...v1.3.10
|
||||
[1.3.9]: https://github.com/taiki-e/install-action/compare/v1.3.8...v1.3.9
|
||||
[1.3.8]: https://github.com/taiki-e/install-action/compare/v1.3.7...v1.3.8
|
||||
[1.3.7]: https://github.com/taiki-e/install-action/compare/v1.3.6...v1.3.7
|
||||
[1.3.6]: https://github.com/taiki-e/install-action/compare/v1.3.5...v1.3.6
|
||||
[1.3.5]: https://github.com/taiki-e/install-action/compare/v1.3.4...v1.3.5
|
||||
[1.3.4]: https://github.com/taiki-e/install-action/compare/v1.3.3...v1.3.4
|
||||
[1.3.3]: https://github.com/taiki-e/install-action/compare/v1.3.2...v1.3.3
|
||||
[1.3.2]: https://github.com/taiki-e/install-action/compare/v1.3.1...v1.3.2
|
||||
[1.3.1]: https://github.com/taiki-e/install-action/compare/v1.3.0...v1.3.1
|
||||
[1.3.0]: https://github.com/taiki-e/install-action/compare/v1.2.2...v1.3.0
|
||||
|
||||
48
README.md
48
README.md
@@ -9,6 +9,7 @@ GitHub Action for installing development tools (mainly from GitHub Releases).
|
||||
- [Example workflow](#example-workflow)
|
||||
- [Supported tools](#supported-tools)
|
||||
- [Security](#security)
|
||||
- [Compatibility](#compatibility)
|
||||
- [Related Projects](#related-projects)
|
||||
- [License](#license)
|
||||
|
||||
@@ -39,7 +40,7 @@ To install a specific version, use `@version` syntax:
|
||||
```yaml
|
||||
- uses: taiki-e/install-action@v1
|
||||
with:
|
||||
tool: cargo-hack@0.5.11
|
||||
tool: cargo-hack@0.5.24
|
||||
```
|
||||
|
||||
To install multiple tools:
|
||||
@@ -66,18 +67,30 @@ https://spdx.org/licenses
|
||||
|
||||
| Name | Where binaries will be installed | Where will it be installed from | Supported platform | License |
|
||||
| ---- | -------------------------------- | ------------------------------- | ------------------ | ------- |
|
||||
| [**cargo-hack**](https://github.com/taiki-e/cargo-hack) | `~/.cargo/bin` | [GitHub Releases](https://github.com/taiki-e/cargo-hack/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/taiki-e/cargo-hack/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/cargo-hack/blob/HEAD/LICENSE-MIT) |
|
||||
| [**cargo-llvm-cov**](https://github.com/taiki-e/cargo-llvm-cov) | `~/.cargo/bin` | [GitHub Releases](https://github.com/taiki-e/cargo-llvm-cov/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/taiki-e/cargo-llvm-cov/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/cargo-llvm-cov/blob/HEAD/LICENSE-MIT) |
|
||||
| [**cargo-minimal-versions**](https://github.com/taiki-e/cargo-minimal-versions) | `~/.cargo/bin` | [GitHub Releases](https://github.com/taiki-e/cargo-minimal-versions/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/taiki-e/cargo-minimal-versions/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/cargo-minimal-versions/blob/HEAD/LICENSE-MIT) |
|
||||
| [**parse-changelog**](https://github.com/taiki-e/parse-changelog) | `~/.cargo/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/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/parse-changelog/blob/HEAD/LICENSE-MIT) |
|
||||
| [**cross**](https://github.com/cross-rs/cross) | `~/.cargo/bin` | [GitHub Releases](https://github.com/cross-rs/cross/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/cross-rs/cross/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/cross-rs/cross/blob/HEAD/LICENSE-MIT) |
|
||||
| [**nextest**](https://github.com/nextest-rs/nextest) | `~/.cargo/bin` | [GitHub Releases](https://github.com/nextest-rs/nextest/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/nextest-rs/nextest/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/nextest-rs/nextest/blob/HEAD/LICENSE-MIT) |
|
||||
| [**shellcheck**](https://www.shellcheck.net) | `/usr/local/bin` | [GitHub Releases](https://github.com/koalaman/shellcheck/releases) | Linux, macOS | [GPL-3.0-or-later](https://github.com/koalaman/shellcheck/blob/HEAD/LICENSE) |
|
||||
| [**shfmt**](https://github.com/mvdan/sh) | `/usr/local/bin` | [GitHub Releases](https://github.com/mvdan/sh/releases) | Linux, macOS | [BSD-3-Clause](https://github.com/mvdan/sh/blob/HEAD/LICENSE) |
|
||||
| [**cargo-binstall**][cargo-binstall] | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/cargo-bins/cargo-binstall/releases) | Linux, macOS, Windows | [GPL-3.0](https://github.com/cargo-bins/cargo-binstall/blob/HEAD/crates/bin/LICENSE) |
|
||||
| [**cargo-deny**](https://github.com/EmbarkStudios/cargo-deny) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/EmbarkStudios/cargo-deny/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/EmbarkStudios/cargo-deny/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/EmbarkStudios/cargo-deny/blob/HEAD/LICENSE-MIT) |
|
||||
| [**cargo-hack**](https://github.com/taiki-e/cargo-hack) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/taiki-e/cargo-hack/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/taiki-e/cargo-hack/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/cargo-hack/blob/HEAD/LICENSE-MIT) |
|
||||
| [**cargo-llvm-cov**](https://github.com/taiki-e/cargo-llvm-cov) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/taiki-e/cargo-llvm-cov/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/taiki-e/cargo-llvm-cov/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/cargo-llvm-cov/blob/HEAD/LICENSE-MIT) |
|
||||
| [**cargo-minimal-versions**](https://github.com/taiki-e/cargo-minimal-versions) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/taiki-e/cargo-minimal-versions/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/taiki-e/cargo-minimal-versions/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/cargo-minimal-versions/blob/HEAD/LICENSE-MIT) |
|
||||
| [**cargo-udeps**](https://github.com/est31/cargo-udeps) | `$CARGO_HOME/bin` | [GitHub Release](https://github.com/est31/cargo-udeps/releases) | Linux, macOS, Windows | [Apache-2.0 OR MIT](https://github.com/est31/cargo-udeps/blob/master/LICENSE) |
|
||||
| [**cargo-valgrind**](https://github.com/jfrimmel/cargo-valgrind) | `$CARGO_HOME/bin` | [GitHub Release](https://github.com/jfrimmel/cargo-valgrind/releases) | Linux, macOS, Windows | [MIT](https://github.com/jfrimmel/cargo-valgrind/blob/master/LICENSE-MIT) or [Apache-2.0](https://github.com/jfrimmel/cargo-valgrind/blob/master/LICENSE-APACHE) |
|
||||
| [**cross**](https://github.com/cross-rs/cross) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/cross-rs/cross/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/cross-rs/cross/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/cross-rs/cross/blob/HEAD/LICENSE-MIT) |
|
||||
| [**mdbook-linkcheck**](https://github.com/Michael-F-Bryan/mdbook-linkcheck) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/Michael-F-Bryan/mdbook-linkcheck/releases) | Linux, macOS, Windows | [MIT](https://github.com/Michael-F-Bryan/mdbook-linkcheck/blob/HEAD/LICENSE) |
|
||||
| [**mdbook**](https://github.com/rust-lang/mdBook) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/rust-lang/mdBook/releases) | Linux, macOS, Windows | [MPL-2.0](https://github.com/rust-lang/mdBook/blob/HEAD/LICENSE) |
|
||||
| [**nextest**](https://github.com/nextest-rs/nextest) (alias: `cargo-nextest`) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/nextest-rs/nextest/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/nextest-rs/nextest/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/nextest-rs/nextest/blob/HEAD/LICENSE-MIT) |
|
||||
| [**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/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/taiki-e/parse-changelog/blob/HEAD/LICENSE-MIT) |
|
||||
| [**protoc**](https://github.com/protocolbuffers/protobuf) | `$HOME/.install-action/bin` | [GitHub Releases](https://github.com/protocolbuffers/protobuf/releases) | Linux, macOS, Windows | [BSD-3-Clause](https://github.com/protocolbuffers/protobuf/blob/HEAD/LICENSE) |
|
||||
| [**shellcheck**](https://www.shellcheck.net) | `/usr/local/bin` | [GitHub Releases](https://github.com/koalaman/shellcheck/releases) | Linux, macOS, Windows | [GPL-3.0-or-later](https://github.com/koalaman/shellcheck/blob/HEAD/LICENSE) |
|
||||
| [**shfmt**](https://github.com/mvdan/sh) | `/usr/local/bin` | [GitHub Releases](https://github.com/mvdan/sh/releases) | Linux, macOS, Windows | [BSD-3-Clause](https://github.com/mvdan/sh/blob/HEAD/LICENSE) |
|
||||
| [**valgrind**](https://valgrind.org) | `/snap/bin` | [snap](https://snapcraft.io/install/valgrind/ubuntu) | Linux | [GPL-2.0-or-later](https://valgrind.org/docs/manual/license.gpl.html) |
|
||||
| [**wasm-pack**](https://github.com/rustwasm/wasm-pack) | `~/.cargo/bin` | [GitHub Releases](https://github.com/rustwasm/wasm-pack/releases) | Linux, macOS | [Apache-2.0](https://github.com/rustwasm/wasm-pack/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/rustwasm/wasm-pack/blob/HEAD/LICENSE-MIT) |
|
||||
| [**wasmtime**](https://github.com/bytecodealliance/wasmtime) | `~/.cargo/bin` | [GitHub Releases](https://github.com/bytecodealliance/wasmtime/releases) | Linux, macOS | [Apache-2.0 WITH LLVM-exception](https://github.com/bytecodealliance/wasmtime/blob/HEAD/LICENSE) |
|
||||
| [**mdbook**](https://github.com/rust-lang/mdBook) | `~/.cargo/bin` | [GitHub Releases](https://github.com/rust-lang/mdBook/releases) | Linux, macOS | [MPL-2.0](https://github.com/rust-lang/mdBook/blob/master/LICENSE) |
|
||||
| [**wasm-pack**](https://github.com/rustwasm/wasm-pack) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/rustwasm/wasm-pack/releases) | Linux, macOS, Windows | [Apache-2.0](https://github.com/rustwasm/wasm-pack/blob/HEAD/LICENSE-APACHE) OR [MIT](https://github.com/rustwasm/wasm-pack/blob/HEAD/LICENSE-MIT) |
|
||||
| [**wasmtime**](https://github.com/bytecodealliance/wasmtime) | `$CARGO_HOME/bin` | [GitHub Releases](https://github.com/bytecodealliance/wasmtime/releases) | Linux, macOS, Windows | [Apache-2.0 WITH LLVM-exception](https://github.com/bytecodealliance/wasmtime/blob/HEAD/LICENSE) |
|
||||
|
||||
If `$CARGO_HOME/bin` is not available, Rust-related binaries will be installed to `$HOME/.cargo/bin`.<br>
|
||||
If `$HOME/.cargo/bin` is not available, Rust-related binaries will be installed to `/usr/local/bin`.<br>
|
||||
If `/usr/local/bin` is not available, binaries will be installed to `$HOME/.install-action/bin`.<br>
|
||||
|
||||
If a tool not included in the list above is specified, this action uses [cargo-binstall] as a fallback.
|
||||
|
||||
<!-- TODO:
|
||||
| [**cmake**](https://cmake.org) | | [GitHub Releases](https://github.com/Kitware/CMake/releases) | Linux, macOS, Windows | [BSD-3-Clause](https://github.com/Kitware/CMake/blob/HEAD/Copyright.txt) |
|
||||
@@ -89,12 +102,23 @@ When installing the tool from GitHub Releases, this action will download the too
|
||||
|
||||
If you want a higher level of security, consider working on [#1](https://github.com/taiki-e/install-action/issues/1).
|
||||
|
||||
## Compatibility
|
||||
|
||||
This action has been tested for GitHub-hosted runners (Ubuntu, macOS, Windows) and containers (Ubuntu, Debian, Alpine).
|
||||
To use this action in self-hosted runners or in containers, you will need to install at least the following:
|
||||
|
||||
- bash
|
||||
- cargo (if you install cargo subcommands)
|
||||
|
||||
## Related Projects
|
||||
|
||||
- [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.
|
||||
|
||||
[cargo-binstall]: https://github.com/cargo-bins/cargo-binstall
|
||||
[create-gh-release-action]: https://github.com/taiki-e/create-gh-release-action
|
||||
[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
|
||||
|
||||
532
main.sh
532
main.sh
@@ -30,6 +30,168 @@ warn() {
|
||||
info() {
|
||||
echo "info: $*"
|
||||
}
|
||||
download() {
|
||||
local url="$1"
|
||||
local bin_dir="$2"
|
||||
local bin="$3"
|
||||
if [[ "${bin_dir}" == "/usr/"* ]]; then
|
||||
if [[ ! -d "${bin_dir}" ]]; then
|
||||
bin_dir="${HOME}/.install-action/bin"
|
||||
if [[ ! -d "${bin_dir}" ]]; then
|
||||
mkdir -p "${bin_dir}"
|
||||
echo "${bin_dir}" >>"${GITHUB_PATH}"
|
||||
export PATH="${PATH}:${bin_dir}"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
local tar_args=()
|
||||
case "${url}" in
|
||||
*.tar.gz | *.tgz) tar_args+=("xzf") ;;
|
||||
*.tar.bz2 | *.tbz2)
|
||||
tar_args+=("xjf")
|
||||
if ! type -P bzip2 &>/dev/null; then
|
||||
case "${base_distro}" in
|
||||
debian | alpine) sys_install bzip2 ;;
|
||||
esac
|
||||
fi
|
||||
;;
|
||||
*.tar.xz | *.txz)
|
||||
tar_args+=("xJf")
|
||||
if ! type -P xz &>/dev/null; then
|
||||
case "${base_distro}" in
|
||||
debian) sys_install xz-utils ;;
|
||||
alpine) sys_install xz ;;
|
||||
esac
|
||||
fi
|
||||
;;
|
||||
*.zip)
|
||||
if ! type -P unzip &>/dev/null; then
|
||||
case "${base_distro}" in
|
||||
debian | alpine) sys_install unzip ;;
|
||||
esac
|
||||
fi
|
||||
mkdir -p .install-action-tmp
|
||||
(
|
||||
cd .install-action-tmp
|
||||
info "downloading ${url}"
|
||||
retry curl --proto '=https' --tlsv1.2 -fsSL --retry 10 --retry-connrefused "${url}" -o tmp.zip
|
||||
unzip tmp.zip
|
||||
mv "${bin}" "${bin_dir}/"
|
||||
)
|
||||
rm -rf .install-action-tmp
|
||||
return 0
|
||||
;;
|
||||
*) bail "unrecognized archive format '${url}' for ${tool}" ;;
|
||||
esac
|
||||
tar_args+=("-")
|
||||
local components
|
||||
components=$(tr <<<"${bin}" -cd '/' | wc -c)
|
||||
if [[ "${components}" != "0" ]]; then
|
||||
tar_args+=(--strip-components "${components}")
|
||||
fi
|
||||
info "downloading ${url}"
|
||||
retry curl --proto '=https' --tlsv1.2 -fsSL --retry 10 --retry-connrefused "${url}" \
|
||||
| tar "${tar_args[@]}" -C "${bin_dir}" "${bin}"
|
||||
}
|
||||
host_triple() {
|
||||
if [[ -z "${host:-}" ]]; then
|
||||
host="$(rustc -vV | grep host | cut -c 7-)"
|
||||
fi
|
||||
}
|
||||
install_cargo_binstall() {
|
||||
# https://github.com/cargo-bins/cargo-binstall/releases
|
||||
local binstall_version="0.18.1"
|
||||
local install_binstall='1'
|
||||
if [[ -f "${cargo_bin}/cargo-binstall${exe}" ]]; then
|
||||
if [[ "$(cargo binstall -V)" == "cargo-binstall ${binstall_version}" ]]; then
|
||||
info "cargo-binstall already installed on in ${cargo_bin}/cargo-binstall${exe}"
|
||||
install_binstall=''
|
||||
else
|
||||
info "cargo-binstall already installed on in ${cargo_bin}/cargo-binstall${exe}, but is not compatible version with install-action, upgrading"
|
||||
rm "${cargo_bin}/cargo-binstall${exe}"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -n "${install_binstall}" ]]; then
|
||||
info "installing cargo-binstall"
|
||||
|
||||
host_triple
|
||||
base_url="https://github.com/cargo-bins/cargo-binstall/releases/download/v${binstall_version}/cargo-binstall"
|
||||
case "${host}" in
|
||||
x86_64-*-linux-gnu | x86_64-*-linux-musl) url="${base_url}-x86_64-unknown-linux-musl.tgz" ;;
|
||||
armv7-*-linux-gnueabihf | armv7-*-linux-musleabihf) url="${base_url}-armv7-unknown-linux-musleabihf.tgz" ;;
|
||||
aarch64-*-linux-gnu | aarch64-*-linux-musl) url="${base_url}-aarch64-unknown-linux-musl.tgz" ;;
|
||||
x86_64-pc-windows-gnu) url="${base_url}-x86_64-pc-windows-msvc.zip" ;;
|
||||
x86_64-apple-darwin | aarch64-apple-darwin | x86_64-pc-windows-msvc) url="${base_url}-${host}.zip" ;;
|
||||
*) bail "unsupported target '${host}' for cargo-binstall" ;;
|
||||
esac
|
||||
|
||||
download "${url}" "${cargo_bin}" "cargo-binstall${exe}"
|
||||
info "cargo-binstall installed at $(type -P "cargo-binstall${exe}")"
|
||||
x cargo binstall -V
|
||||
fi
|
||||
}
|
||||
cargo_binstall() {
|
||||
local tool="$1"
|
||||
local version="$2"
|
||||
|
||||
info "install-action does not support ${tool}, fallback to cargo-binstall"
|
||||
|
||||
install_cargo_binstall
|
||||
|
||||
# By default, cargo-binstall enforce downloads over secure transports only.
|
||||
# As a result, http will be disabled, and it will also set
|
||||
# min tls version to be 1.2
|
||||
case "${version}" in
|
||||
latest) cargo binstall --force --no-confirm "${tool}" ;;
|
||||
*) cargo binstall --force --no-confirm --version "${version}" "${tool}" ;;
|
||||
esac
|
||||
}
|
||||
apt_update() {
|
||||
if type -P sudo &>/dev/null; then
|
||||
retry sudo apt-get -o Acquire::Retries=10 -qq update
|
||||
else
|
||||
retry apt-get -o Acquire::Retries=10 -qq update
|
||||
fi
|
||||
apt_updated=1
|
||||
}
|
||||
apt_install() {
|
||||
if [[ -z "${apt_updated:-}" ]]; then
|
||||
apt_update
|
||||
fi
|
||||
if type -P sudo &>/dev/null; then
|
||||
retry sudo apt-get -o Acquire::Retries=10 -qq -o Dpkg::Use-Pty=0 install -y --no-install-recommends "$@"
|
||||
else
|
||||
retry apt-get -o Acquire::Retries=10 -qq -o Dpkg::Use-Pty=0 install -y --no-install-recommends "$@"
|
||||
fi
|
||||
}
|
||||
apt_remove() {
|
||||
if type -P sudo &>/dev/null; then
|
||||
sudo apt-get -qq -o Dpkg::Use-Pty=0 remove -y "$@"
|
||||
else
|
||||
apt-get -qq -o Dpkg::Use-Pty=0 remove -y "$@"
|
||||
fi
|
||||
}
|
||||
snap_install() {
|
||||
if type -P sudo &>/dev/null; then
|
||||
retry sudo snap install "$@"
|
||||
else
|
||||
retry snap install "$@"
|
||||
fi
|
||||
}
|
||||
apk_install() {
|
||||
if type -P doas &>/dev/null; then
|
||||
doas apk add "$@"
|
||||
else
|
||||
apk add "$@"
|
||||
fi
|
||||
}
|
||||
sys_install() {
|
||||
case "${base_distro}" in
|
||||
debian) apt_install "$@" ;;
|
||||
alpine) apk_install "$@" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
if [[ $# -gt 0 ]]; then
|
||||
bail "invalid argument '$1'"
|
||||
@@ -39,52 +201,152 @@ export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
# Inputs
|
||||
tool="${INPUT_TOOL:-}"
|
||||
|
||||
tools=()
|
||||
if [[ -n "${tool}" ]]; then
|
||||
while read -rd,; do tools+=("${REPLY}"); done <<<"${tool},"
|
||||
fi
|
||||
|
||||
base_distro=""
|
||||
exe=""
|
||||
case "${OSTYPE}" in
|
||||
linux*)
|
||||
host_env="gnu"
|
||||
# Refs: https://github.com/rust-lang/rustup/blob/HEAD/rustup-init.sh
|
||||
if (ldd --version 2>&1 || true) | grep -q 'musl'; then
|
||||
host_env="musl"
|
||||
fi
|
||||
if grep -q '^ID_LIKE=' /etc/os-release; then
|
||||
base_distro="$(grep '^ID_LIKE=' /etc/os-release | sed 's/^ID_LIKE=//')"
|
||||
else
|
||||
base_distro="$(grep '^ID=' /etc/os-release | sed 's/^ID=//')"
|
||||
fi
|
||||
;;
|
||||
cygwin* | msys*) exe=".exe" ;;
|
||||
esac
|
||||
|
||||
cargo_bin="${CARGO_HOME:-"${HOME}/.cargo"}/bin"
|
||||
if [[ ! -d "${cargo_bin}" ]]; then
|
||||
cargo_bin=/usr/local/bin
|
||||
fi
|
||||
|
||||
if ! type -P curl &>/dev/null || ! type -P tar &>/dev/null; then
|
||||
case "${base_distro}" in
|
||||
debian | alpine) sys_install ca-certificates curl tar ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
for tool in "${tools[@]}"; do
|
||||
if [[ "${tool}" == *"@"* ]]; then
|
||||
version="${tool#*@}"
|
||||
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"
|
||||
fi
|
||||
else
|
||||
version="latest"
|
||||
fi
|
||||
tool="${tool%@*}"
|
||||
bin="${tool}${exe}"
|
||||
info "installing ${tool}@${version}"
|
||||
case "${tool}" in
|
||||
cargo-hack | cargo-llvm-cov | cargo-minimal-versions | parse-changelog)
|
||||
case "${tool}" in
|
||||
# https://github.com/taiki-e/cargo-hack/releases
|
||||
cargo-hack) latest_version="0.5.12" ;;
|
||||
cargo-hack) latest_version="0.5.24" ;;
|
||||
# https://github.com/taiki-e/cargo-llvm-cov/releases
|
||||
cargo-llvm-cov) latest_version="0.3.0" ;;
|
||||
cargo-llvm-cov) latest_version="0.5.2" ;;
|
||||
# https://github.com/taiki-e/cargo-minimal-versions/releases
|
||||
cargo-minimal-versions) latest_version="0.1.3" ;;
|
||||
cargo-minimal-versions) latest_version="0.1.8" ;;
|
||||
# https://github.com/taiki-e/parse-changelog/releases
|
||||
parse-changelog) latest_version="0.4.7" ;;
|
||||
parse-changelog) latest_version="0.5.2" ;;
|
||||
*) exit 1 ;;
|
||||
esac
|
||||
repo="taiki-e/${tool}"
|
||||
case "${version}" in
|
||||
latest) version="${latest_version}" ;;
|
||||
esac
|
||||
case "${OSTYPE}" in
|
||||
linux*) target="x86_64-unknown-linux-musl" ;;
|
||||
darwin*) target="x86_64-apple-darwin" ;;
|
||||
cygwin* | msys*) target="x86_64-pc-windows-msvc" ;;
|
||||
*) bail "unsupported OSTYPE '${OSTYPE}' for ${tool}" ;;
|
||||
esac
|
||||
url="https://github.com/${repo}/releases/download/v${version}/${tool}-${target}.tar.gz"
|
||||
download "${url}" "${cargo_bin}" "${tool}${exe}"
|
||||
;;
|
||||
cargo-udeps)
|
||||
# https://github.com/est31/cargo-udeps/releases
|
||||
latest_version="0.1.35"
|
||||
repo="est31/${tool}"
|
||||
case "${version}" in
|
||||
latest) version="${latest_version}" ;;
|
||||
esac
|
||||
url="https://github.com/${repo}/releases/download/v${version}/${tool}-${target}.tar.gz"
|
||||
# shellcheck disable=SC2086
|
||||
retry curl --proto '=https' --tlsv1.2 -fsSL --retry 10 --retry-connrefused "${url}" \
|
||||
| tar xzf - -C ${CARGO_HOME:-~/.cargo}/bin
|
||||
base_url="https://github.com/${repo}/releases/download/v${version}/${tool}-v${version}"
|
||||
case "${OSTYPE}" in
|
||||
linux*)
|
||||
target="x86_64-unknown-linux-gnu"
|
||||
url="${base_url}-${target}.tar.gz"
|
||||
;;
|
||||
darwin*)
|
||||
target="x86_64-apple-darwin"
|
||||
url="${base_url}-${target}.tar.gz"
|
||||
;;
|
||||
cygwin* | msys*)
|
||||
target="x86_64-pc-windows-msvc"
|
||||
url="${base_url}-${target}.zip"
|
||||
;;
|
||||
*) bail "unsupported OSTYPE '${OSTYPE}' for ${tool}" ;;
|
||||
esac
|
||||
# leading `./` is required for cargo-udeps to work
|
||||
download "${url}" "${cargo_bin}" "./${tool}-v${version}-${target}/${tool}${exe}"
|
||||
;;
|
||||
cargo-valgrind)
|
||||
# https://github.com/jfrimmel/cargo-valgrind
|
||||
latest_version="2.1.0"
|
||||
repo="jfrimmel/${tool}"
|
||||
case "${version}" in
|
||||
latest) version="${latest_version}" ;;
|
||||
esac
|
||||
base_url="https://github.com/${repo}/releases/download/v${version}/${tool}-${version}"
|
||||
case "${OSTYPE}" in
|
||||
linux*)
|
||||
target="x86_64-unknown-linux-musl"
|
||||
url="${base_url}-${target}.tar.gz"
|
||||
;;
|
||||
darwin*)
|
||||
target="x86_64-apple-darwin"
|
||||
url="${base_url}-${target}.tar.gz"
|
||||
;;
|
||||
cygwin* | msys*)
|
||||
target="x86_64-pc-windows-msvc"
|
||||
url="${base_url}-${target}.zip"
|
||||
;;
|
||||
*) bail "unsupported OSTYPE '${OSTYPE}' for ${tool}" ;;
|
||||
esac
|
||||
download "${url}" "${cargo_bin}" "${tool}${exe}"
|
||||
;;
|
||||
cargo-deny)
|
||||
# https://github.com/EmbarkStudios/cargo-deny/releases
|
||||
latest_version="0.13.5"
|
||||
repo="EmbarkStudios/${tool}"
|
||||
case "${version}" in
|
||||
latest) version="${latest_version}" ;;
|
||||
esac
|
||||
case "${OSTYPE}" in
|
||||
linux*) target="x86_64-unknown-linux-musl" ;;
|
||||
darwin*) target="x86_64-apple-darwin" ;;
|
||||
cygwin* | msys*) target="x86_64-pc-windows-msvc" ;;
|
||||
*) bail "unsupported OSTYPE '${OSTYPE}' for ${tool}" ;;
|
||||
esac
|
||||
url="https://github.com/${repo}/releases/download/${version}/${tool}-${version}-${target}.tar.gz"
|
||||
download "${url}" "${cargo_bin}" "${tool}-${version}-${target}/${tool}${exe}"
|
||||
;;
|
||||
cross)
|
||||
# https://github.com/cross-rs/cross/releases
|
||||
latest_version="0.2.1"
|
||||
repo="cross-rs/cross"
|
||||
latest_version="0.2.4"
|
||||
repo="cross-rs/${tool}"
|
||||
case "${version}" in
|
||||
latest) version="${latest_version}" ;;
|
||||
esac
|
||||
case "${OSTYPE}" in
|
||||
linux*) target="x86_64-unknown-linux-musl" ;;
|
||||
darwin*) target="x86_64-apple-darwin" ;;
|
||||
@@ -92,133 +354,241 @@ for tool in "${tools[@]}"; do
|
||||
*) bail "unsupported OSTYPE '${OSTYPE}' for ${tool}" ;;
|
||||
esac
|
||||
case "${version}" in
|
||||
latest) version="${latest_version}" ;;
|
||||
0.1.* | 0.2.[0-1]) url="https://github.com/${repo}/releases/download/v${version}/${tool}-v${version}-${target}.tar.gz" ;;
|
||||
*) url="https://github.com/${repo}/releases/download/v${version}/${tool}-${target}.tar.gz" ;;
|
||||
esac
|
||||
url="https://github.com/${repo}/releases/download/v${version}/cross-v${version}-${target}.tar.gz"
|
||||
# shellcheck disable=SC2086
|
||||
retry curl --proto '=https' --tlsv1.2 -fsSL --retry 10 --retry-connrefused "${url}" \
|
||||
| tar xzf - -C ${CARGO_HOME:-~/.cargo}/bin
|
||||
download "${url}" "${cargo_bin}" "${tool}${exe}"
|
||||
;;
|
||||
nextest)
|
||||
nextest | cargo-nextest)
|
||||
bin="cargo-nextest"
|
||||
# https://nexte.st/book/pre-built-binaries.html
|
||||
case "${OSTYPE}" in
|
||||
linux*) url="https://get.nexte.st/${version}/linux" ;;
|
||||
linux*)
|
||||
# musl build of nextest is slow, so use glibc build if host_env is gnu.
|
||||
# https://github.com/taiki-e/install-action/issues/13
|
||||
case "${host_env}" in
|
||||
gnu) url="https://get.nexte.st/${version}/linux" ;;
|
||||
*) url="https://get.nexte.st/${version}/linux-musl" ;;
|
||||
esac
|
||||
;;
|
||||
darwin*) url="https://get.nexte.st/${version}/mac" ;;
|
||||
cygwin* | msys*) url="https://get.nexte.st/${version}/windows-tar" ;;
|
||||
*) bail "unsupported OSTYPE '${OSTYPE}' for ${tool}" ;;
|
||||
esac
|
||||
# shellcheck disable=SC2086
|
||||
info "downloading ${url}"
|
||||
retry curl --proto '=https' --tlsv1.2 -fsSL --retry 10 --retry-connrefused "${url}" \
|
||||
| tar xzf - -C ${CARGO_HOME:-~/.cargo}/bin
|
||||
| tar xzf - -C "${cargo_bin}"
|
||||
;;
|
||||
protoc)
|
||||
# https://github.com/protocolbuffers/protobuf/releases
|
||||
latest_version="3.21.11"
|
||||
repo="protocolbuffers/protobuf"
|
||||
case "${version}" in
|
||||
latest) version="${latest_version}" ;;
|
||||
esac
|
||||
miner_patch_version="${version#*.}"
|
||||
base_url="https://github.com/${repo}/releases/download/v${miner_patch_version}/protoc-${miner_patch_version}"
|
||||
# Copying files to /usr/local/include requires sudo, so do not use it.
|
||||
bin_dir="${HOME}/.install-action/bin"
|
||||
include_dir="${HOME}/.install-action/include"
|
||||
if [[ ! -d "${bin_dir}" ]]; then
|
||||
mkdir -p "${bin_dir}"
|
||||
mkdir -p "${include_dir}"
|
||||
echo "${bin_dir}" >>"${GITHUB_PATH}"
|
||||
export PATH="${PATH}:${bin_dir}"
|
||||
fi
|
||||
case "${OSTYPE}" in
|
||||
linux*) url="${base_url}-linux-x86_64.zip" ;;
|
||||
darwin*) url="${base_url}-osx-x86_64.zip" ;;
|
||||
cygwin* | msys*) url="${base_url}-win64.zip" ;;
|
||||
*) bail "unsupported OSTYPE '${OSTYPE}' for ${tool}" ;;
|
||||
esac
|
||||
if ! type -P unzip &>/dev/null; then
|
||||
case "${base_distro}" in
|
||||
debian | alpine) sys_install unzip ;;
|
||||
esac
|
||||
fi
|
||||
mkdir -p .install-action-tmp
|
||||
(
|
||||
cd .install-action-tmp
|
||||
info "downloading ${url}"
|
||||
retry curl --proto '=https' --tlsv1.2 -fsSL --retry 10 --retry-connrefused "${url}" -o tmp.zip
|
||||
unzip tmp.zip
|
||||
mv "bin/protoc${exe}" "${bin_dir}/"
|
||||
mkdir -p "${include_dir}/"
|
||||
cp -r include/. "${include_dir}/"
|
||||
case "${OSTYPE}" in
|
||||
cygwin* | msys*) bin_dir=$(sed <<<"${bin_dir}" 's/^\/c\//C:\\/') ;;
|
||||
esac
|
||||
if [[ -z "${PROTOC:-}" ]]; then
|
||||
info "setting PROTOC environment variable"
|
||||
echo "PROTOC=${bin_dir}/protoc${exe}" >>"${GITHUB_ENV}"
|
||||
fi
|
||||
)
|
||||
rm -rf .install-action-tmp
|
||||
;;
|
||||
shellcheck)
|
||||
# https://github.com/koalaman/shellcheck/releases
|
||||
latest_version="0.8.0"
|
||||
repo="koalaman/shellcheck"
|
||||
latest_version="0.9.0"
|
||||
repo="koalaman/${tool}"
|
||||
case "${version}" in
|
||||
latest) version="${latest_version}" ;;
|
||||
esac
|
||||
base_url="https://github.com/${repo}/releases/download/v${version}/${tool}-v${version}"
|
||||
bin="${tool}-v${version}/${tool}${exe}"
|
||||
case "${OSTYPE}" in
|
||||
linux*)
|
||||
if type -P shellcheck &>/dev/null; then
|
||||
sudo apt-get -qq -o Dpkg::Use-Pty=0 remove -y shellcheck
|
||||
apt_remove shellcheck
|
||||
fi
|
||||
target="linux"
|
||||
url="${base_url}.linux.x86_64.tar.xz"
|
||||
;;
|
||||
darwin*) url="${base_url}.darwin.x86_64.tar.xz" ;;
|
||||
cygwin* | msys*)
|
||||
url="${base_url}.zip"
|
||||
bin="${tool}${exe}"
|
||||
;;
|
||||
darwin*) target="darwin" ;;
|
||||
cygwin* | msys*) bail "${tool} for windows is not supported yet by this action" ;;
|
||||
*) bail "unsupported OSTYPE '${OSTYPE}' for ${tool}" ;;
|
||||
esac
|
||||
case "${version}" in
|
||||
latest) version="${latest_version}" ;;
|
||||
esac
|
||||
url="https://github.com/${repo}/releases/download/v${version}/shellcheck-v${version}.${target}.x86_64.tar.xz"
|
||||
retry curl --proto '=https' --tlsv1.2 -fsSL --retry 10 --retry-connrefused "${url}" \
|
||||
| tar xJf - --strip-components 1 -C /usr/local/bin "shellcheck-v${version}/shellcheck"
|
||||
download "${url}" /usr/local/bin "${bin}"
|
||||
;;
|
||||
shfmt)
|
||||
# https://github.com/mvdan/sh/releases
|
||||
latest_version="3.4.3"
|
||||
latest_version="3.6.0"
|
||||
repo="mvdan/sh"
|
||||
case "${OSTYPE}" in
|
||||
linux*) target="linux_amd64" ;;
|
||||
darwin*) target="darwin_amd64" ;;
|
||||
cygwin* | msys*) bail "${tool} for windows is not supported yet by this action" ;;
|
||||
*) bail "unsupported OSTYPE '${OSTYPE}' for ${tool}" ;;
|
||||
esac
|
||||
case "${version}" in
|
||||
latest) version="${latest_version}" ;;
|
||||
esac
|
||||
url="https://github.com/${repo}/releases/download/v${version}/shfmt_v${version}_${target}"
|
||||
retry curl --proto '=https' --tlsv1.2 -fsSL --retry 10 --retry-connrefused -o /usr/local/bin/shfmt "${url}"
|
||||
chmod +x /usr/local/bin/shfmt
|
||||
bin_dir="/usr/local/bin"
|
||||
case "${OSTYPE}" in
|
||||
linux*) target="linux_amd64" ;;
|
||||
darwin*) target="darwin_amd64" ;;
|
||||
cygwin* | msys*)
|
||||
target="windows_amd64"
|
||||
bin_dir="${HOME}/.install-action/bin"
|
||||
if [[ ! -d "${bin_dir}" ]]; then
|
||||
mkdir -p "${bin_dir}"
|
||||
echo "${bin_dir}" >>"${GITHUB_PATH}"
|
||||
export PATH="${PATH}:${bin_dir}"
|
||||
fi
|
||||
;;
|
||||
*) bail "unsupported OSTYPE '${OSTYPE}' for ${tool}" ;;
|
||||
esac
|
||||
url="https://github.com/${repo}/releases/download/v${version}/${tool}_v${version}_${target}${exe}"
|
||||
info "downloading ${url}"
|
||||
retry curl --proto '=https' --tlsv1.2 -fsSL --retry 10 --retry-connrefused -o "${bin_dir}/${tool}${exe}" "${url}"
|
||||
case "${OSTYPE}" in
|
||||
linux* | darwin*) chmod +x "${bin_dir}/${tool}${exe}" ;;
|
||||
esac
|
||||
;;
|
||||
valgrind)
|
||||
case "${version}" in
|
||||
latest) ;;
|
||||
*) warn "specifying the version of ${tool} is not supported yet by this action" ;;
|
||||
esac
|
||||
case "${OSTYPE}" in
|
||||
linux*) ;;
|
||||
darwin* | cygwin* | msys*) bail "${tool} for non-linux is not supported yet by this action" ;;
|
||||
*) bail "unsupported OSTYPE '${OSTYPE}' for ${tool}" ;;
|
||||
esac
|
||||
case "${version}" in
|
||||
latest) ;;
|
||||
*) warn "specifying the version of ${tool} is not supported yet by this action" ;;
|
||||
esac
|
||||
retry sudo apt-get -o Acquire::Retries=10 -qq update
|
||||
# libc6-dbg is needed to run Valgrind
|
||||
retry sudo apt-get -o Acquire::Retries=10 -qq -o Dpkg::Use-Pty=0 install -y libc6-dbg
|
||||
apt_install libc6-dbg
|
||||
# Use snap to install the latest Valgrind
|
||||
# https://snapcraft.io/install/valgrind/ubuntu
|
||||
retry sudo snap install valgrind --classic
|
||||
snap_install valgrind --classic
|
||||
;;
|
||||
wasm-pack)
|
||||
# https://rustwasm.github.io/wasm-pack/installer
|
||||
# https://github.com/rustwasm/wasm-pack/releases
|
||||
latest_version="0.10.3"
|
||||
repo="rustwasm/${tool}"
|
||||
case "${version}" in
|
||||
latest) version="${latest_version}" ;;
|
||||
esac
|
||||
case "${OSTYPE}" in
|
||||
linux* | darwin*) ;;
|
||||
cygwin* | msys*) bail "${tool} for windows is not supported yet by this action" ;;
|
||||
linux*) target="x86_64-unknown-linux-musl" ;;
|
||||
darwin*) target="x86_64-apple-darwin" ;;
|
||||
cygwin* | msys*) target="x86_64-pc-windows-msvc" ;;
|
||||
*) bail "unsupported OSTYPE '${OSTYPE}' for ${tool}" ;;
|
||||
esac
|
||||
retry curl --proto '=https' --tlsv1.2 -fsSL --retry 10 --retry-connrefused https://rustwasm.github.io/wasm-pack/installer/init.sh | sh
|
||||
url="https://github.com/${repo}/releases/download/v${version}/${tool}-v${version}-${target}.tar.gz"
|
||||
download "${url}" "${cargo_bin}" "${tool}-v${version}-${target}/${tool}${exe}"
|
||||
;;
|
||||
wasmtime)
|
||||
# https://github.com/bytecodealliance/wasmtime/releases
|
||||
latest_version="0.35.3"
|
||||
repo="bytecodealliance/wasmtime"
|
||||
case "${OSTYPE}" in
|
||||
linux*) target="x86_64-linux" ;;
|
||||
darwin*) target="x86_64-macos" ;;
|
||||
cygwin* | msys*) bail "${tool} for windows is not supported yet by this action" ;;
|
||||
*) bail "unsupported OSTYPE '${OSTYPE}' for ${tool}" ;;
|
||||
esac
|
||||
latest_version="3.0.1"
|
||||
repo="bytecodealliance/${tool}"
|
||||
case "${version}" in
|
||||
latest) version="${latest_version}" ;;
|
||||
esac
|
||||
url="https://github.com/bytecodealliance/wasmtime/releases/download/v${version}/wasmtime-v${version}-${target}.tar.xz"
|
||||
# shellcheck disable=SC2086
|
||||
retry curl --proto '=https' --tlsv1.2 -fsSL --retry 10 --retry-connrefused "${url}" \
|
||||
| tar xJf - --strip-components 1 -C ${CARGO_HOME:-~/.cargo}/bin "wasmtime-v${version}-${target}/wasmtime"
|
||||
base_url="https://github.com/${repo}/releases/download/v${version}/${tool}-v${version}"
|
||||
case "${OSTYPE}" in
|
||||
linux*)
|
||||
target="x86_64-linux"
|
||||
url="${base_url}-${target}.tar.xz"
|
||||
;;
|
||||
darwin*)
|
||||
target="x86_64-macos"
|
||||
url="${base_url}-${target}.tar.xz"
|
||||
;;
|
||||
cygwin* | msys*)
|
||||
target="x86_64-windows"
|
||||
url="${base_url}-${target}.zip"
|
||||
;;
|
||||
*) bail "unsupported OSTYPE '${OSTYPE}' for ${tool}" ;;
|
||||
esac
|
||||
download "${url}" "${cargo_bin}" "${tool}-v${version}-${target}/${tool}${exe}"
|
||||
;;
|
||||
mdbook)
|
||||
# https://github.com/rust-lang/mdBook/releases
|
||||
latest_version="0.4.18"
|
||||
latest_version="0.4.22"
|
||||
repo="rust-lang/mdBook"
|
||||
case "${OSTYPE}" in
|
||||
linux*) target="x86_64-unknown-linux-gnu" ;;
|
||||
darwin*) target="x86_64-apple-darwin" ;;
|
||||
# TODO: mdbook has windows binaries, but they use `.zip` and not `.tar.gz`.
|
||||
cygwin* | msys*) bail "${tool} for windows is not supported yet by this action" ;;
|
||||
*) bail "unsupported OSTYPE '${OSTYPE}' for ${tool}" ;;
|
||||
esac
|
||||
case "${version}" in
|
||||
latest) version="${latest_version}" ;;
|
||||
esac
|
||||
url="https://github.com/${repo}/releases/download/v${version}/${tool}-v${version}-${target}.tar.gz"
|
||||
# shellcheck disable=SC2086
|
||||
retry curl --proto '=https' --tlsv1.2 -fsSL --retry 10 --retry-connrefused "${url}" \
|
||||
| tar xzf - -C ${CARGO_HOME:-~/.cargo}/bin
|
||||
base_url="https://github.com/${repo}/releases/download/v${version}/${tool}-v${version}"
|
||||
case "${OSTYPE}" in
|
||||
linux*) url="${base_url}-x86_64-unknown-linux-gnu.tar.gz" ;;
|
||||
darwin*) url="${base_url}-x86_64-apple-darwin.tar.gz" ;;
|
||||
cygwin* | msys*) url="${base_url}-x86_64-pc-windows-msvc.zip" ;;
|
||||
*) bail "unsupported OSTYPE '${OSTYPE}' for ${tool}" ;;
|
||||
esac
|
||||
download "${url}" "${cargo_bin}" "${tool}${exe}"
|
||||
;;
|
||||
mdbook-linkcheck)
|
||||
# https://github.com/Michael-F-Bryan/mdbook-linkcheck/releases
|
||||
latest_version="0.7.7"
|
||||
repo="Michael-F-Bryan/${tool}"
|
||||
case "${version}" in
|
||||
latest) version="${latest_version}" ;;
|
||||
esac
|
||||
case "${OSTYPE}" in
|
||||
linux*) target="x86_64-unknown-linux-gnu" ;;
|
||||
darwin*) target="x86_64-apple-darwin" ;;
|
||||
cygwin* | msys*) target="x86_64-pc-windows-msvc" ;;
|
||||
*) bail "unsupported OSTYPE '${OSTYPE}' for ${tool}" ;;
|
||||
esac
|
||||
url="https://github.com/${repo}/releases/download/v${version}/${tool}.${target}.zip"
|
||||
download "${url}" "${cargo_bin}" "${tool}${exe}"
|
||||
case "${OSTYPE}" in
|
||||
linux* | darwin*) chmod +x "${cargo_bin}/${tool}${exe}" ;;
|
||||
esac
|
||||
;;
|
||||
cargo-binstall)
|
||||
install_cargo_binstall
|
||||
echo
|
||||
continue
|
||||
;;
|
||||
*)
|
||||
cargo_binstall "${tool}" "${version}"
|
||||
continue
|
||||
;;
|
||||
*) bail "unsupported tool '${tool}'" ;;
|
||||
esac
|
||||
|
||||
info "${tool} installed at $(type -P "${tool}")"
|
||||
case "${tool}" in
|
||||
cargo-* | nextest) x cargo "${tool#cargo-}" --version ;;
|
||||
info "${tool} installed at $(type -P "${bin}")"
|
||||
case "${bin}" in
|
||||
"cargo-udeps${exe}") x cargo udeps --help | head -1 ;; # cargo-udeps v0.1.30 does not support --version option
|
||||
"cargo-valgrind${exe}") x cargo valgrind --help ;; # cargo-valgrind v2.1.0 does not support --version option
|
||||
cargo-*) x cargo "${tool#cargo-}" --version ;;
|
||||
*) x "${tool}" --version ;;
|
||||
esac
|
||||
echo
|
||||
|
||||
@@ -3,13 +3,16 @@ set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
cd "$(dirname "$0")"/..
|
||||
|
||||
# shellcheck disable=SC2154
|
||||
trap 's=$?; echo >&2 "$0: Error on line "${LINENO}": ${BASH_COMMAND}"; exit ${s}' ERR
|
||||
|
||||
# Publish a new release.
|
||||
#
|
||||
# USAGE:
|
||||
# ./tools/publish.sh <VERSION>
|
||||
#
|
||||
# Note:
|
||||
# - This script requires parse-changelog <https://github.com/taiki-e/parse-changelog>
|
||||
# Note: This script requires the following tools:
|
||||
# - parse-changelog <https://github.com/taiki-e/parse-changelog>
|
||||
|
||||
bail() {
|
||||
echo >&2 "error: $*"
|
||||
@@ -35,10 +38,14 @@ if gh release view "${tag}" &>/dev/null; then
|
||||
bail "tag '${tag}' has already been created and pushed"
|
||||
fi
|
||||
|
||||
if ! git branch | grep -q '\* main'; then
|
||||
bail "current branch is not 'main'"
|
||||
fi
|
||||
|
||||
tags=$(git --no-pager tag)
|
||||
if [[ -n "${tags}" ]]; then
|
||||
# Make sure the same release does not exist in CHANGELOG.md.
|
||||
release_date=$(date --utc '+%Y-%m-%d')
|
||||
release_date=$(date -u '+%Y-%m-%d')
|
||||
if grep -Eq "^## \\[${version//./\\.}\\] - ${release_date}$" CHANGELOG.md; then
|
||||
bail "release ${version} already exist in CHANGELOG.md"
|
||||
fi
|
||||
@@ -66,10 +73,6 @@ echo "============== CHANGELOG =============="
|
||||
parse-changelog CHANGELOG.md "${version}"
|
||||
echo "======================================="
|
||||
|
||||
if ! git branch | grep -q '\* main'; then
|
||||
bail "current branch is not 'main'"
|
||||
fi
|
||||
|
||||
if [[ -n "${tags}" ]]; then
|
||||
# Create a release commit.
|
||||
git add CHANGELOG.md
|
||||
@@ -77,18 +80,25 @@ if [[ -n "${tags}" ]]; then
|
||||
fi
|
||||
|
||||
tools=(
|
||||
cargo-binstall
|
||||
cargo-deny
|
||||
cargo-hack
|
||||
cargo-llvm-cov
|
||||
cargo-minimal-versions
|
||||
parse-changelog
|
||||
cargo-nextest
|
||||
cargo-udeps
|
||||
cargo-valgrind
|
||||
cross
|
||||
mdbook
|
||||
mdbook-linkcheck
|
||||
nextest
|
||||
parse-changelog
|
||||
protoc
|
||||
shellcheck
|
||||
shfmt
|
||||
valgrind
|
||||
wasm-pack
|
||||
wasmtime
|
||||
mdbook
|
||||
)
|
||||
|
||||
(
|
||||
@@ -98,16 +108,16 @@ tools=(
|
||||
git push origin main
|
||||
git push origin --tags
|
||||
|
||||
version_tag="v${version%%.*}"
|
||||
git checkout -b "${version_tag}"
|
||||
git push origin refs/heads/"${version_tag}"
|
||||
if git --no-pager tag | grep -Eq "^${version_tag}$"; then
|
||||
git tag -d "${version_tag}"
|
||||
git push --delete origin refs/tags/"${version_tag}"
|
||||
major_version_tag="v${version%%.*}"
|
||||
git checkout -b "${major_version_tag}"
|
||||
git push origin refs/heads/"${major_version_tag}"
|
||||
if git --no-pager tag | grep -Eq "^${major_version_tag}$"; then
|
||||
git tag -d "${major_version_tag}"
|
||||
git push --delete origin refs/tags/"${major_version_tag}"
|
||||
fi
|
||||
git tag "${version_tag}"
|
||||
git tag "${major_version_tag}"
|
||||
git checkout main
|
||||
git branch -d "${version_tag}"
|
||||
git branch -d "${major_version_tag}"
|
||||
)
|
||||
|
||||
for tool in "${tools[@]}"; do
|
||||
|
||||
151
tools/tidy.sh
151
tools/tidy.sh
@@ -4,60 +4,165 @@ set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
cd "$(dirname "$0")"/..
|
||||
|
||||
# shellcheck disable=SC2154
|
||||
trap 's=$?; echo >&2 "$0: Error on line "${LINENO}": ${BASH_COMMAND}"; exit ${s}' ERR
|
||||
|
||||
# USAGE:
|
||||
# ./tools/tidy.sh
|
||||
#
|
||||
# Note: This script requires the following tools:
|
||||
# - shfmt
|
||||
# - prettier
|
||||
# - shellcheck
|
||||
# - npm
|
||||
# - jq and yq (if this repository uses bors)
|
||||
# - clang-format (if any of C/C++ exists)
|
||||
#
|
||||
# This script is shared with other repositories, so there may also be
|
||||
# checks for files not included in this repository, but they will be
|
||||
# skipped if the corresponding files do not exist.
|
||||
|
||||
x() {
|
||||
local cmd="$1"
|
||||
shift
|
||||
if [[ -n "${verbose:-}" ]]; then
|
||||
(
|
||||
set -x
|
||||
"${cmd}" "$@"
|
||||
)
|
||||
else
|
||||
(
|
||||
set -x
|
||||
"${cmd}" "$@"
|
||||
)
|
||||
}
|
||||
check_diff() {
|
||||
if [[ -n "${CI:-}" ]]; then
|
||||
if ! git --no-pager diff --exit-code "$@"; then
|
||||
should_fail=1
|
||||
fi
|
||||
else
|
||||
if ! git --no-pager diff --exit-code "$@" &>/dev/null; then
|
||||
should_fail=1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
warn() {
|
||||
echo >&2 "warning: $*"
|
||||
if [[ -n "${GITHUB_ACTIONS:-}" ]]; then
|
||||
echo "::warning::$*"
|
||||
else
|
||||
echo >&2 "warning: $*"
|
||||
fi
|
||||
should_fail=1
|
||||
}
|
||||
|
||||
if [[ "${1:-}" == "-v" ]]; then
|
||||
shift
|
||||
verbose=1
|
||||
fi
|
||||
if [[ $# -gt 0 ]]; then
|
||||
cat <<EOF
|
||||
USAGE:
|
||||
$0 [-v]
|
||||
$0
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
|
||||
prettier=prettier
|
||||
if type -P npm &>/dev/null && type -P "$(npm bin)/prettier" &>/dev/null; then
|
||||
prettier="$(npm bin)/prettier"
|
||||
# C/C++ (if exists)
|
||||
if [[ -n "$(git ls-files '*.c')$(git ls-files '*.cpp')" ]]; then
|
||||
if [[ ! -e .clang-format ]]; then
|
||||
warn "could not fount .clang-format in the repository root"
|
||||
fi
|
||||
if type -P clang-format &>/dev/null; then
|
||||
x clang-format -i $(git ls-files '*.c') $(git ls-files '*.cpp')
|
||||
check_diff $(git ls-files '*.c') $(git ls-files '*.cpp')
|
||||
else
|
||||
warn "'clang-format' is not installed"
|
||||
fi
|
||||
fi
|
||||
|
||||
# YAML/JavaScript/JSON (if exists)
|
||||
if [[ -n "$(git ls-files '*.yml')$(git ls-files '*.js')$(git ls-files '*.json')" ]]; then
|
||||
if type -P npm &>/dev/null; then
|
||||
x npx prettier -l -w $(git ls-files '*.yml') $(git ls-files '*.js') $(git ls-files '*.json')
|
||||
check_diff $(git ls-files '*.yml') $(git ls-files '*.js') $(git ls-files '*.json')
|
||||
else
|
||||
warn "'npm' is not installed"
|
||||
fi
|
||||
if [[ -e .github/workflows/ci.yml ]] && grep -q '# tidy:needs' .github/workflows/ci.yml && ! grep -Eq '# *needs: \[' .github/workflows/ci.yml; then
|
||||
if type -P jq &>/dev/null && type -P yq &>/dev/null; then
|
||||
# shellcheck disable=SC2207
|
||||
jobs_actual=($(yq '.jobs' .github/workflows/ci.yml | jq -r 'keys_unsorted[]'))
|
||||
unset 'jobs_actual[${#jobs_actual[@]}-1]'
|
||||
# shellcheck disable=SC2207
|
||||
jobs_expected=($(yq -r '.jobs."ci-success".needs[]' .github/workflows/ci.yml))
|
||||
if [[ "${jobs_actual[*]}" != "${jobs_expected[*]+"${jobs_expected[*]}"}" ]]; then
|
||||
printf -v jobs '%s, ' "${jobs_actual[@]}"
|
||||
sed -i "s/needs: \[.*\] # tidy:needs/needs: [${jobs%, }] # tidy:needs/" .github/workflows/ci.yml
|
||||
check_diff .github/workflows/ci.yml
|
||||
warn "please update 'needs' section in 'ci-success' job"
|
||||
fi
|
||||
else
|
||||
warn "'jq' or 'yq' is not installed"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if [[ -n "$(git ls-files '*.yaml')" ]]; then
|
||||
warn "please use '.yml' instead of '.yaml' for consistency"
|
||||
git ls-files '*.yaml'
|
||||
fi
|
||||
|
||||
# Shell scripts
|
||||
if type -P shfmt &>/dev/null; then
|
||||
x shfmt -l -w $(git ls-files '*.sh')
|
||||
check_diff $(git ls-files '*.sh')
|
||||
else
|
||||
warn "'shfmt' is not installed"
|
||||
fi
|
||||
if type -P "${prettier}" &>/dev/null; then
|
||||
x "${prettier}" -l -w $(git ls-files '*.yml')
|
||||
x "${prettier}" -l -w $(git ls-files '*.js')
|
||||
else
|
||||
warn "'prettier' is not installed"
|
||||
fi
|
||||
if type -P shellcheck &>/dev/null; then
|
||||
x shellcheck $(git ls-files '*.sh')
|
||||
if ! x shellcheck $(git ls-files '*.sh'); then
|
||||
should_fail=1
|
||||
fi
|
||||
if [[ -n "$(git ls-files '*Dockerfile')" ]]; then
|
||||
# SC2154 doesn't seem to work on dockerfile.
|
||||
if ! x shellcheck -e SC2148,SC2154,SC2250 $(git ls-files '*Dockerfile'); then
|
||||
should_fail=1
|
||||
fi
|
||||
fi
|
||||
else
|
||||
warn "'shellcheck' is not installed"
|
||||
fi
|
||||
|
||||
# Spell check (if config exists)
|
||||
if [[ -f .cspell.json ]]; then
|
||||
if type -P npm &>/dev/null; then
|
||||
if [[ -f Cargo.toml ]]; then
|
||||
metadata=$(cargo metadata --format-version=1 --all-features --no-deps)
|
||||
dependencies=''
|
||||
for id in $(jq <<<"${metadata}" '.workspace_members[]'); do
|
||||
dependencies+=$'\n'
|
||||
dependencies+=$(jq <<<"${metadata}" ".packages[] | select(.id == ${id})" | jq -r '.dependencies[].name')
|
||||
done
|
||||
cat >.github/.cspell/rust-dependencies.txt <<EOF
|
||||
// This file is @generated by $(basename "$0").
|
||||
// It is not intended for manual editing.
|
||||
|
||||
EOF
|
||||
# shellcheck disable=SC2001
|
||||
sed <<<"${dependencies}" 's/[0-9_-]/\n/g' | LC_ALL=C sort -f -u | (grep -E '.{4,}' || true) >>.github/.cspell/rust-dependencies.txt
|
||||
check_diff .github/.cspell/rust-dependencies.txt
|
||||
else
|
||||
touch .github/.cspell/rust-dependencies.txt
|
||||
fi
|
||||
|
||||
x npx cspell --no-progress $(git ls-files)
|
||||
|
||||
for dictionary in .github/.cspell/*.txt; do
|
||||
if [[ "${dictionary}" == .github/.cspell/project-dictionary.txt ]]; then
|
||||
continue
|
||||
fi
|
||||
dup=$(sed '/^$/d' .github/.cspell/project-dictionary.txt "${dictionary}" | LC_ALL=C sort -f | uniq -d -i | (grep -v '//.*' || true))
|
||||
if [[ -n "${dup}" ]]; then
|
||||
warn "duplicated words in dictionaries; please remove the following words from .github/.cspell/project-dictionary.txt"
|
||||
echo "======================================="
|
||||
echo "${dup}"
|
||||
echo "======================================="
|
||||
fi
|
||||
done
|
||||
else
|
||||
warn "'npm' is not installed"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -n "${should_fail:-}" ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user