mirror of
https://github.com/taiki-e/install-action.git
synced 2026-04-21 15:10:27 +00:00
Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6ad9974df9 | ||
|
|
002ee123a6 | ||
|
|
e553ccd87e | ||
|
|
6b8c00dfc4 | ||
|
|
8b890a7ae1 | ||
|
|
a94d7ba895 | ||
|
|
1f78543d08 | ||
|
|
372d07651e | ||
|
|
93eca7e386 | ||
|
|
0b6da106fc |
@@ -11,10 +11,10 @@ indent_style = space
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[*.{json,md,yml}]
|
||||
[*.{json,md,rb,yml,yaml}]
|
||||
indent_size = 2
|
||||
|
||||
[*.{js,yml}]
|
||||
[*.{js,yml,yaml}]
|
||||
quote_type = single
|
||||
|
||||
[*.sh]
|
||||
|
||||
10
.markdownlint-cli2.yaml
Normal file
10
.markdownlint-cli2.yaml
Normal file
@@ -0,0 +1,10 @@
|
||||
# https://github.com/DavidAnson/markdownlint#rules--aliases
|
||||
config:
|
||||
line-length: false
|
||||
no-duplicate-heading: false
|
||||
no-inline-html: false
|
||||
no-emphasis-as-heading: false
|
||||
|
||||
# https://github.com/DavidAnson/markdownlint-cli2#markdownlint-cli2jsonc
|
||||
noBanner: true
|
||||
noProgress: true
|
||||
@@ -1,6 +0,0 @@
|
||||
# https://github.com/DavidAnson/markdownlint#rules--aliases
|
||||
|
||||
MD013: false # line-length
|
||||
MD024: false # no-duplicate-heading/no-duplicate-header
|
||||
MD033: false # no-inline-html
|
||||
MD036: false # no-emphasis-as-heading/no-emphasis-as-header
|
||||
22
CHANGELOG.md
22
CHANGELOG.md
@@ -10,6 +10,22 @@ Note: In this file, do not use the hard wrap in the middle of a sentence for com
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [2.33.4] - 2024-04-22
|
||||
|
||||
- Update `biome@latest` to 1.7.1.
|
||||
|
||||
## [2.33.3] - 2024-04-21
|
||||
|
||||
- Update `sccache@latest` to 0.8.0.
|
||||
|
||||
## [2.33.2] - 2024-04-20
|
||||
|
||||
- Update `parse-changelog@latest` to 0.6.8.
|
||||
|
||||
## [2.33.1] - 2024-04-19
|
||||
|
||||
- Update `parse-changelog@latest` to 0.6.7.
|
||||
|
||||
## [2.33.0] - 2024-04-19
|
||||
|
||||
- Support `espup`. ([#456](https://github.com/taiki-e/install-action/pull/456))
|
||||
@@ -2075,7 +2091,11 @@ Note: This release is considered a breaking change because installing on version
|
||||
|
||||
Initial release
|
||||
|
||||
[Unreleased]: https://github.com/taiki-e/install-action/compare/v2.33.0...HEAD
|
||||
[Unreleased]: https://github.com/taiki-e/install-action/compare/v2.33.4...HEAD
|
||||
[2.33.4]: https://github.com/taiki-e/install-action/compare/v2.33.3...v2.33.4
|
||||
[2.33.3]: https://github.com/taiki-e/install-action/compare/v2.33.2...v2.33.3
|
||||
[2.33.2]: https://github.com/taiki-e/install-action/compare/v2.33.1...v2.33.2
|
||||
[2.33.1]: https://github.com/taiki-e/install-action/compare/v2.33.0...v2.33.1
|
||||
[2.33.0]: https://github.com/taiki-e/install-action/compare/v2.32.20...v2.33.0
|
||||
[2.32.20]: https://github.com/taiki-e/install-action/compare/v2.32.19...v2.32.20
|
||||
[2.32.19]: https://github.com/taiki-e/install-action/compare/v2.32.18...v2.32.19
|
||||
|
||||
4
main.sh
4
main.sh
@@ -409,7 +409,7 @@ case "$(uname -s)" in
|
||||
Linux)
|
||||
host_os=linux
|
||||
if grep -q '^ID_LIKE=' /etc/os-release; then
|
||||
base_distro=$(grep '^ID_LIKE=' /etc/os-release | sed 's/^ID_LIKE=//')
|
||||
base_distro=$(grep '^ID_LIKE=' /etc/os-release | cut -d= -f2)
|
||||
case "${base_distro}" in
|
||||
*debian*) base_distro=debian ;;
|
||||
*fedora*) base_distro=fedora ;;
|
||||
@@ -418,7 +418,7 @@ case "$(uname -s)" in
|
||||
*alpine*) base_distro=alpine ;;
|
||||
esac
|
||||
else
|
||||
base_distro=$(grep '^ID=' /etc/os-release | sed 's/^ID=//')
|
||||
base_distro=$(grep '^ID=' /etc/os-release | cut -d= -f2)
|
||||
fi
|
||||
case "${base_distro}" in
|
||||
fedora)
|
||||
|
||||
26
manifests/biome.json
generated
26
manifests/biome.json
generated
@@ -35,13 +35,33 @@
|
||||
}
|
||||
},
|
||||
"latest": {
|
||||
"version": "1.7.0"
|
||||
"version": "1.7.1"
|
||||
},
|
||||
"1": {
|
||||
"version": "1.7.0"
|
||||
"version": "1.7.1"
|
||||
},
|
||||
"1.7": {
|
||||
"version": "1.7.0"
|
||||
"version": "1.7.1"
|
||||
},
|
||||
"1.7.1": {
|
||||
"x86_64_linux_musl": {
|
||||
"checksum": "1b2115fdab03dba4c59cb3d512822e11ceb16f294519343b2e373f9b7aa1a074"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"checksum": "9b25832f3686399aaee8fd3db611178ea5529c4ed3c3a275e05d0cbabe642530"
|
||||
},
|
||||
"x86_64_windows": {
|
||||
"checksum": "6bb7ab5f7b88fd7ae8e66abe6558d5ba7ee27939fc6d27dcd8e950540f0d7760"
|
||||
},
|
||||
"aarch64_linux_musl": {
|
||||
"checksum": "02e41aa2eb4994db7316913f58a38b5c7c7876f7d8320625d0c12ccdbc62d0fa"
|
||||
},
|
||||
"aarch64_macos": {
|
||||
"checksum": "6a5c9f7fcab3dfb4723c23c66ab58ed345e082a66a5406b7d30e1c50d990c89f"
|
||||
},
|
||||
"aarch64_windows": {
|
||||
"checksum": "076c15a8a314ba151118295da7f182630dfab160bde22f50b3c87e482912f337"
|
||||
}
|
||||
},
|
||||
"1.7.0": {
|
||||
"x86_64_linux_musl": {
|
||||
|
||||
56
manifests/parse-changelog.json
generated
56
manifests/parse-changelog.json
generated
@@ -2,10 +2,62 @@
|
||||
"rust_crate": "parse-changelog",
|
||||
"template": null,
|
||||
"latest": {
|
||||
"version": "0.6.6"
|
||||
"version": "0.6.8"
|
||||
},
|
||||
"0.6": {
|
||||
"version": "0.6.6"
|
||||
"version": "0.6.8"
|
||||
},
|
||||
"0.6.8": {
|
||||
"x86_64_linux_musl": {
|
||||
"url": "https://github.com/taiki-e/parse-changelog/releases/download/v0.6.8/parse-changelog-x86_64-unknown-linux-musl.tar.gz",
|
||||
"checksum": "c5d34291892c66cf5e2d45e61f822c420a86c48c54631422863894eeee8d11f1"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"url": "https://github.com/taiki-e/parse-changelog/releases/download/v0.6.8/parse-changelog-x86_64-apple-darwin.tar.gz",
|
||||
"checksum": "37a3fb9b9e1a46c99ca306a2a68a8c317d3011375d7274256389d16986b5c3f4"
|
||||
},
|
||||
"x86_64_windows": {
|
||||
"url": "https://github.com/taiki-e/parse-changelog/releases/download/v0.6.8/parse-changelog-x86_64-pc-windows-msvc.tar.gz",
|
||||
"checksum": "e4f971462c2fb29387af7269634027d57b06c05b644d7412249c8d0c25cfc799"
|
||||
},
|
||||
"aarch64_linux_musl": {
|
||||
"url": "https://github.com/taiki-e/parse-changelog/releases/download/v0.6.8/parse-changelog-aarch64-unknown-linux-musl.tar.gz",
|
||||
"checksum": "a3f1705c925d0b158c0a555a97848baa952d160cc7952dc66e1be1735d787316"
|
||||
},
|
||||
"aarch64_macos": {
|
||||
"url": "https://github.com/taiki-e/parse-changelog/releases/download/v0.6.8/parse-changelog-aarch64-apple-darwin.tar.gz",
|
||||
"checksum": "76314b47a0b6f60b5f635ad9af7577d618ea69759306b954dbe3b0196b32550e"
|
||||
},
|
||||
"aarch64_windows": {
|
||||
"url": "https://github.com/taiki-e/parse-changelog/releases/download/v0.6.8/parse-changelog-aarch64-pc-windows-msvc.tar.gz",
|
||||
"checksum": "c9e7db9dff60ec0adff8658968d0d9430db9a7c77fd1885b21d688a0d82e88ee"
|
||||
}
|
||||
},
|
||||
"0.6.7": {
|
||||
"x86_64_linux_musl": {
|
||||
"url": "https://github.com/taiki-e/parse-changelog/releases/download/v0.6.7/parse-changelog-x86_64-unknown-linux-musl.tar.gz",
|
||||
"checksum": "ca2aa9c8982059327da84bde3bc76df01766d0a2c0e2941fbb88e44d472a3621"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"url": "https://github.com/taiki-e/parse-changelog/releases/download/v0.6.7/parse-changelog-x86_64-apple-darwin.tar.gz",
|
||||
"checksum": "825747ef16033b9b5cf73d0d8b349ffd6a6ad32366b29f6d637d84d4ed4685d5"
|
||||
},
|
||||
"x86_64_windows": {
|
||||
"url": "https://github.com/taiki-e/parse-changelog/releases/download/v0.6.7/parse-changelog-x86_64-pc-windows-msvc.tar.gz",
|
||||
"checksum": "ce1b92ac2aee88572dc09cf7870ff8f75224a14993af8c2c59063caeaf01f78b"
|
||||
},
|
||||
"aarch64_linux_musl": {
|
||||
"url": "https://github.com/taiki-e/parse-changelog/releases/download/v0.6.7/parse-changelog-aarch64-unknown-linux-musl.tar.gz",
|
||||
"checksum": "5f9c3f5673f828b9c2ab0dc70e54abfbf2d731b333667de42816352e85e8a184"
|
||||
},
|
||||
"aarch64_macos": {
|
||||
"url": "https://github.com/taiki-e/parse-changelog/releases/download/v0.6.7/parse-changelog-aarch64-apple-darwin.tar.gz",
|
||||
"checksum": "ff7c1e6d662ad0a89e0af923b6a1a6b63038d26bc18a0b0758b30cc0c740b073"
|
||||
},
|
||||
"aarch64_windows": {
|
||||
"url": "https://github.com/taiki-e/parse-changelog/releases/download/v0.6.7/parse-changelog-aarch64-pc-windows-msvc.tar.gz",
|
||||
"checksum": "543e4df2bc66b767557c64b226d6722fe483a147a6fc7ef203919b2c5c8f2d4a"
|
||||
}
|
||||
},
|
||||
"0.6.6": {
|
||||
"x86_64_linux_musl": {
|
||||
|
||||
22
manifests/sccache.json
generated
22
manifests/sccache.json
generated
@@ -23,7 +23,27 @@
|
||||
}
|
||||
},
|
||||
"latest": {
|
||||
"version": "0.7.7"
|
||||
"version": "0.8.0"
|
||||
},
|
||||
"0.8": {
|
||||
"version": "0.8.0"
|
||||
},
|
||||
"0.8.0": {
|
||||
"x86_64_linux_musl": {
|
||||
"checksum": "2e0e7df61bc7dcf61fd65c1b345d05cd1f832598a15c6f42e7e21f86b8d39b1f"
|
||||
},
|
||||
"x86_64_macos": {
|
||||
"checksum": "d1b871daf7f96f8d01c50746e588d50e2c54559c0de508257db3cb55b7fb8ec0"
|
||||
},
|
||||
"x86_64_windows": {
|
||||
"checksum": "a58bee25f1042477e6a2f9e0e1aae505172d0e85dddedc75b667cccdb3563ed8"
|
||||
},
|
||||
"aarch64_linux_musl": {
|
||||
"checksum": "23d6920bf5a21a2269833ca5ef387e59c8dce69c03770b7aa44be4b130b07511"
|
||||
},
|
||||
"aarch64_macos": {
|
||||
"checksum": "9439be7bd81ee86af6e8d866fd129150aefe24c78d857de9c99d57845187fc7e"
|
||||
}
|
||||
},
|
||||
"0.7": {
|
||||
"version": "0.7.7"
|
||||
|
||||
@@ -15,14 +15,6 @@ trap 's=$?; echo >&2 "$0: error on line "${LINENO}": ${BASH_COMMAND}"; exit ${s}
|
||||
# Note: This script requires the following tools:
|
||||
# - parse-changelog <https://github.com/taiki-e/parse-changelog>
|
||||
|
||||
x() {
|
||||
local cmd="$1"
|
||||
shift
|
||||
(
|
||||
set -x
|
||||
"${cmd}" "$@"
|
||||
)
|
||||
}
|
||||
retry() {
|
||||
for i in {1..10}; do
|
||||
if "$@"; then
|
||||
@@ -106,12 +98,6 @@ echo "============== CHANGELOG =============="
|
||||
echo "${changes}"
|
||||
echo "======================================="
|
||||
|
||||
if [[ -n "${tags}" ]]; then
|
||||
# Create a release commit.
|
||||
x git add "${changelog}"
|
||||
x git commit -m "Release ${version}"
|
||||
fi
|
||||
|
||||
tools=()
|
||||
for tool in tools/codegen/base/*.json; do
|
||||
tools+=("$(basename "${tool%.*}")")
|
||||
@@ -119,44 +105,46 @@ done
|
||||
# Not manifest-based
|
||||
tools+=(valgrind nextest cargo-nextest)
|
||||
|
||||
(
|
||||
set -x
|
||||
|
||||
git tag "${tag}"
|
||||
retry git push origin main
|
||||
retry git push origin --tags
|
||||
|
||||
major_version_tag="v${version%%.*}"
|
||||
git checkout -b "${major_version_tag}"
|
||||
retry 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}"
|
||||
retry git push --delete origin refs/tags/"${major_version_tag}"
|
||||
fi
|
||||
git tag "${major_version_tag}"
|
||||
git checkout main
|
||||
git branch -d "${major_version_tag}"
|
||||
)
|
||||
|
||||
for tool in "${tools[@]}"; do
|
||||
if [[ -n "${tags}" ]]; then
|
||||
# Create a release commit.
|
||||
(
|
||||
set -x
|
||||
git checkout -b "${tool}"
|
||||
sed -i -e "s/required: true/required: false/g" action.yml
|
||||
sed -i -e "s/# default: #publish:tool/default: ${tool}/g" action.yml
|
||||
git add action.yml
|
||||
git commit -m "${tool}"
|
||||
retry git push origin -f refs/heads/"${tool}"
|
||||
if git --no-pager tag | grep -Eq "^${tool}$"; then
|
||||
git tag -d "${tool}"
|
||||
retry git push --delete origin refs/tags/"${tool}"
|
||||
fi
|
||||
git tag "${tool}"
|
||||
git checkout main
|
||||
git branch -D "${tool}"
|
||||
git add "${changelog}"
|
||||
git commit -m "Release ${version}"
|
||||
)
|
||||
done
|
||||
fi
|
||||
|
||||
set -x
|
||||
|
||||
git tag "${tag}"
|
||||
retry git push origin main
|
||||
retry git push origin --tags
|
||||
|
||||
major_version_tag="v${version%%.*}"
|
||||
git checkout -b "${major_version_tag}"
|
||||
retry 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}"
|
||||
retry git push --delete origin refs/tags/"${major_version_tag}"
|
||||
fi
|
||||
git tag "${major_version_tag}"
|
||||
retry git push origin --tags
|
||||
git checkout main
|
||||
git branch -d "${major_version_tag}"
|
||||
|
||||
for tool in "${tools[@]}"; do
|
||||
git checkout -b "${tool}"
|
||||
sed -i -e "s/required: true/required: false/g" action.yml
|
||||
sed -i -e "s/# default: #publish:tool/default: ${tool}/g" action.yml
|
||||
git add action.yml
|
||||
git commit -m "${tool}"
|
||||
retry git push origin -f refs/heads/"${tool}"
|
||||
if git --no-pager tag | grep -Eq "^${tool}$"; then
|
||||
git tag -d "${tool}"
|
||||
retry git push --delete origin refs/tags/"${tool}"
|
||||
fi
|
||||
git tag "${tool}"
|
||||
retry git push origin --tags
|
||||
git checkout main
|
||||
git branch -D "${tool}"
|
||||
done
|
||||
|
||||
105
tools/tidy.sh
105
tools/tidy.sh
@@ -35,17 +35,14 @@ check_diff() {
|
||||
fi
|
||||
fi
|
||||
}
|
||||
check_config() {
|
||||
if [[ ! -e "$1" ]]; then
|
||||
error "could not found $1 in the repository root"
|
||||
fi
|
||||
}
|
||||
info() {
|
||||
echo >&2 "info: $*"
|
||||
}
|
||||
warn() {
|
||||
if [[ -n "${GITHUB_ACTIONS:-}" ]]; then
|
||||
echo "::warning::$*"
|
||||
else
|
||||
echo >&2 "warning: $*"
|
||||
fi
|
||||
should_fail=1
|
||||
}
|
||||
error() {
|
||||
if [[ -n "${GITHUB_ACTIONS:-}" ]]; then
|
||||
echo "::error::$*"
|
||||
@@ -71,14 +68,12 @@ fi
|
||||
# Rust (if exists)
|
||||
if [[ -n "$(git ls-files '*.rs')" ]]; then
|
||||
info "checking Rust code style"
|
||||
if [[ ! -e .rustfmt.toml ]]; then
|
||||
warn "could not found .rustfmt.toml in the repository root"
|
||||
fi
|
||||
check_config .rustfmt.toml
|
||||
if type -P rustup &>/dev/null; then
|
||||
# `cargo fmt` cannot recognize files not included in the current workspace and modules
|
||||
# defined inside macros, so run rustfmt directly.
|
||||
# We need to use nightly rustfmt because we use the unstable formatting options of rustfmt.
|
||||
rustc_version=$(rustc -Vv | grep 'release: ' | sed 's/release: //')
|
||||
rustc_version=$(rustc -vV | grep '^release:' | cut -d' ' -f2)
|
||||
if [[ "${rustc_version}" == *"nightly"* ]] || [[ "${rustc_version}" == *"dev"* ]]; then
|
||||
rustup component add rustfmt &>/dev/null
|
||||
echo "+ rustfmt \$(git ls-files '*.rs')"
|
||||
@@ -90,7 +85,7 @@ if [[ -n "$(git ls-files '*.rs')" ]]; then
|
||||
fi
|
||||
check_diff $(git ls-files '*.rs')
|
||||
else
|
||||
warn "'rustup' is not installed; skipped Rust code style check"
|
||||
error "'rustup' is not installed; skipped Rust code style check"
|
||||
fi
|
||||
cast_without_turbofish=$(grep -n -E '\.cast\(\)' $(git ls-files '*.rs') || true)
|
||||
if [[ -n "${cast_without_turbofish}" ]]; then
|
||||
@@ -132,7 +127,7 @@ if [[ -n "$(git ls-files '*.rs')" ]]; then
|
||||
publish=$(jq <<<"${pkg}" -r '.publish')
|
||||
manifest_path=$(jq <<<"${pkg}" -r '.manifest_path')
|
||||
if ! grep -q '^\[lints\]' "${manifest_path}" && ! grep -q '^\[lints\.rust\]' "${manifest_path}"; then
|
||||
warn "no [lints] table in ${manifest_path} please add '[lints]' with 'workspace = true'"
|
||||
error "no [lints] table in ${manifest_path} please add '[lints]' with 'workspace = true'"
|
||||
fi
|
||||
# Publishing is unrestricted if null, and forbidden if an empty array.
|
||||
if [[ "${publish}" == "[]" ]]; then
|
||||
@@ -149,10 +144,14 @@ if [[ -n "$(git ls-files '*.rs')" ]]; then
|
||||
publish=$(jq <<<"${root_pkg}" -r '.publish')
|
||||
# Publishing is unrestricted if null, and forbidden if an empty array.
|
||||
if [[ "${publish}" != "[]" ]]; then
|
||||
if ! grep -Eq '^exclude = \[.*\.\*.*\]' Cargo.toml; then
|
||||
error "top-level Cargo.toml of real manifest should have exclude field with \"/.*\" and \"/tools\""
|
||||
elif ! grep -Eq '^exclude = \[.*/tools.*\]' Cargo.toml; then
|
||||
error "top-level Cargo.toml of real manifest should have exclude field with \"/.*\" and \"/tools\""
|
||||
if ! grep -Eq '^exclude = \[.*"/\.\*".*\]' Cargo.toml; then
|
||||
error "top-level Cargo.toml of non-virtual workspace should have 'exclude' field with \"/.*\""
|
||||
fi
|
||||
if [[ -e tools ]] && ! grep -Eq '^exclude = \[.*"/tools".*\]' Cargo.toml; then
|
||||
error "top-level Cargo.toml of non-virtual workspace should have 'exclude' field with \"/tools\" if it exists"
|
||||
fi
|
||||
if [[ -e target-specs ]] && ! grep -Eq '^exclude = \[.*"/target-specs".*\]' Cargo.toml; then
|
||||
error "top-level Cargo.toml of non-virtual workspace should have 'exclude' field with \"/target-specs\" if it exists"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
@@ -165,7 +164,7 @@ if [[ -n "$(git ls-files '*.rs')" ]]; then
|
||||
# Top-level hidden files/directories and tools/* are excluded from crates.io (ensured by the above check).
|
||||
# TODO: fully respect exclude field in Cargo.toml.
|
||||
case "${p}" in
|
||||
.* | tools/*) continue ;;
|
||||
.* | tools/* | target-specs/*) continue ;;
|
||||
esac
|
||||
if [[ -x "${p}" ]]; then
|
||||
executables+="${p}"$'\n'
|
||||
@@ -189,35 +188,35 @@ if [[ -n "$(git ls-files '*.rs')" ]]; then
|
||||
echo "======================================="
|
||||
fi
|
||||
fi
|
||||
elif [[ -e .rustfmt.toml ]]; then
|
||||
error ".rustfmt.toml is unused"
|
||||
fi
|
||||
|
||||
# C/C++ (if exists)
|
||||
if [[ -n "$(git ls-files '*.c' '*.h' '*.cpp' '*.hpp')" ]]; then
|
||||
info "checking C/C++ code style"
|
||||
if [[ ! -e .clang-format ]]; then
|
||||
warn "could not found .clang-format in the repository root"
|
||||
fi
|
||||
check_config .clang-format
|
||||
if type -P clang-format &>/dev/null; then
|
||||
echo "+ clang-format -i \$(git ls-files '*.c' '*.h' '*.cpp' '*.hpp')"
|
||||
clang-format -i $(git ls-files '*.c' '*.h' '*.cpp' '*.hpp')
|
||||
check_diff $(git ls-files '*.c' '*.h' '*.cpp' '*.hpp')
|
||||
else
|
||||
warn "'clang-format' is not installed; skipped C/C++ code style check"
|
||||
error "'clang-format' is not installed; skipped C/C++ code style check"
|
||||
fi
|
||||
elif [[ -e .clang-format ]]; then
|
||||
error ".clang-format is unused"
|
||||
fi
|
||||
|
||||
# YAML/JavaScript/JSON (if exists)
|
||||
if [[ -n "$(git ls-files '*.yml' '*.js' '*.json')" ]]; then
|
||||
if [[ -n "$(git ls-files '*.yml' '*.yaml' '*.js' '*.json')" ]]; then
|
||||
info "checking YAML/JavaScript/JSON code style"
|
||||
if [[ ! -e .editorconfig ]]; then
|
||||
warn "could not found .editorconfig in the repository root"
|
||||
fi
|
||||
check_config .editorconfig
|
||||
if type -P npm &>/dev/null; then
|
||||
echo "+ npx -y prettier -l -w \$(git ls-files '*.yml' '*.js' '*.json')"
|
||||
npx -y prettier -l -w $(git ls-files '*.yml' '*.js' '*.json')
|
||||
check_diff $(git ls-files '*.yml' '*.js' '*.json')
|
||||
echo "+ npx -y prettier -l -w \$(git ls-files '*.yml' '*.yaml' '*.js' '*.json')"
|
||||
npx -y prettier -l -w $(git ls-files '*.yml' '*.yaml' '*.js' '*.json')
|
||||
check_diff $(git ls-files '*.yml' '*.yaml' '*.js' '*.json')
|
||||
else
|
||||
warn "'npm' is not installed; skipped YAML/JavaScript/JSON code style check"
|
||||
error "'npm' is not installed; skipped YAML/JavaScript/JSON code style check"
|
||||
fi
|
||||
# Check GitHub workflows.
|
||||
if [[ -d .github/workflows ]]; then
|
||||
@@ -266,45 +265,45 @@ if [[ -n "$(git ls-files '*.yml' '*.js' '*.json')" ]]; then
|
||||
fi
|
||||
done
|
||||
else
|
||||
warn "'python3' is not installed; skipped GitHub workflow check"
|
||||
error "'python3' is not installed; skipped GitHub workflow check"
|
||||
fi
|
||||
else
|
||||
warn "'jq' is not installed; skipped GitHub workflow check"
|
||||
error "'jq' is not installed; skipped GitHub workflow check"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if [[ -n "$(git ls-files '*.yaml')" ]]; then
|
||||
if [[ -n "$(git ls-files '*.yaml' | (grep -v .markdownlint-cli2.yaml || true))" ]]; then
|
||||
error "please use '.yml' instead of '.yaml' for consistency"
|
||||
git ls-files '*.yaml'
|
||||
git ls-files '*.yaml' | (grep -v .markdownlint-cli2.yaml || true)
|
||||
fi
|
||||
|
||||
# TOML (if exists)
|
||||
if [[ -n "$(git ls-files '*.toml')" ]]; then
|
||||
if [[ -n "$(git ls-files '*.toml' | (grep -v .taplo.toml || true))" ]]; then
|
||||
info "checking TOML style"
|
||||
if [[ ! -e .taplo.toml ]]; then
|
||||
warn "could not found .taplo.toml in the repository root"
|
||||
fi
|
||||
check_config .taplo.toml
|
||||
if type -P npm &>/dev/null; then
|
||||
echo "+ npx -y @taplo/cli fmt \$(git ls-files '*.toml')"
|
||||
npx -y @taplo/cli fmt $(git ls-files '*.toml')
|
||||
RUST_LOG=warn npx -y @taplo/cli fmt $(git ls-files '*.toml')
|
||||
check_diff $(git ls-files '*.toml')
|
||||
else
|
||||
warn "'npm' is not installed; skipped TOML style check"
|
||||
error "'npm' is not installed; skipped TOML style check"
|
||||
fi
|
||||
elif [[ -e .taplo.toml ]]; then
|
||||
error ".taplo.toml is unused"
|
||||
fi
|
||||
|
||||
# Markdown (if exists)
|
||||
if [[ -n "$(git ls-files '*.md')" ]]; then
|
||||
info "checking Markdown style"
|
||||
if [[ ! -e .markdownlint.yml ]]; then
|
||||
warn "could not found .markdownlint.yml in the repository root"
|
||||
fi
|
||||
check_config .markdownlint-cli2.yaml
|
||||
if type -P npm &>/dev/null; then
|
||||
echo "+ npx -y markdownlint-cli2 \$(git ls-files '*.md')"
|
||||
npx -y markdownlint-cli2 $(git ls-files '*.md')
|
||||
else
|
||||
warn "'npm' is not installed; skipped Markdown style check"
|
||||
error "'npm' is not installed; skipped Markdown style check"
|
||||
fi
|
||||
elif [[ -e .markdownlint-cli2.yaml ]]; then
|
||||
error ".markdownlint-cli2.yaml is unused"
|
||||
fi
|
||||
if [[ -n "$(git ls-files '*.markdown')" ]]; then
|
||||
error "please use '.md' instead of '.markdown' for consistency"
|
||||
@@ -314,19 +313,15 @@ fi
|
||||
# Shell scripts
|
||||
info "checking Shell scripts"
|
||||
if type -P shfmt &>/dev/null; then
|
||||
if [[ ! -e .editorconfig ]]; then
|
||||
warn "could not found .editorconfig in the repository root"
|
||||
fi
|
||||
check_config .editorconfig
|
||||
echo "+ shfmt -l -w \$(git ls-files '*.sh')"
|
||||
shfmt -l -w $(git ls-files '*.sh')
|
||||
check_diff $(git ls-files '*.sh')
|
||||
else
|
||||
warn "'shfmt' is not installed; skipped Shell scripts style check"
|
||||
error "'shfmt' is not installed; skipped Shell scripts style check"
|
||||
fi
|
||||
if type -P shellcheck &>/dev/null; then
|
||||
if [[ ! -e .shellcheckrc ]]; then
|
||||
warn "could not found .shellcheckrc in the repository root"
|
||||
fi
|
||||
check_config .shellcheckrc
|
||||
echo "+ shellcheck \$(git ls-files '*.sh')"
|
||||
if ! shellcheck $(git ls-files '*.sh'); then
|
||||
should_fail=1
|
||||
@@ -339,7 +334,7 @@ if type -P shellcheck &>/dev/null; then
|
||||
fi
|
||||
fi
|
||||
else
|
||||
warn "'shellcheck' is not installed; skipped Shell scripts style check"
|
||||
error "'shellcheck' is not installed; skipped Shell scripts style check"
|
||||
fi
|
||||
|
||||
# License check
|
||||
@@ -424,7 +419,7 @@ EOF
|
||||
fi
|
||||
check_diff .github/.cspell/rust-dependencies.txt
|
||||
if ! grep -Eq "^\.github/\.cspell/rust-dependencies.txt linguist-generated" .gitattributes; then
|
||||
echo "warning: you may want to mark .github/.cspell/rust-dependencies.txt linguist-generated"
|
||||
error "you may want to mark .github/.cspell/rust-dependencies.txt linguist-generated"
|
||||
fi
|
||||
|
||||
echo "+ npx -y cspell --no-progress --no-summary \$(git ls-files)"
|
||||
@@ -460,7 +455,7 @@ EOF
|
||||
echo "======================================="
|
||||
fi
|
||||
else
|
||||
warn "'npm' is not installed; skipped spell check"
|
||||
error "'npm' is not installed; skipped spell check"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
Reference in New Issue
Block a user