mirror of
https://github.com/ben-grande/qusal.git
synced 2025-01-22 21:31:19 -05:00
perf: make pre-commit hooks pass file extensions
- shell-lint: faster evaluation of shell scripts, hook 40% faster; - *-lint: unify method to find the "find" utility; and - pre-commit: pass file extensions to lint tools.
This commit is contained in:
parent
00a0b0f264
commit
35fa43dadf
@ -14,19 +14,19 @@ repos:
|
||||
pass_filenames: true
|
||||
description: Prohibit Unicode
|
||||
|
||||
- id: reuse-lint
|
||||
name: reuse-lint
|
||||
entry: reuse
|
||||
args: [lint]
|
||||
language: python
|
||||
pass_filenames: false
|
||||
description: Lint files to comply with the REUSE Specification
|
||||
- id: shell-lint
|
||||
name: shell-lint
|
||||
entry: scripts/shell-lint.sh
|
||||
language: script
|
||||
pass_filenames: true
|
||||
description: Lint Shellscripts
|
||||
|
||||
- id: markdown-lint
|
||||
name: markdown-lint
|
||||
entry: scripts/markdown-lint.sh
|
||||
language: script
|
||||
pass_filenames: true
|
||||
files: \.md$
|
||||
description: Lint markdown files
|
||||
|
||||
- id: python-lint
|
||||
@ -34,6 +34,7 @@ repos:
|
||||
entry: scripts/python-lint.sh
|
||||
language: script
|
||||
pass_filenames: true
|
||||
files: \.py$
|
||||
description: Lint python files
|
||||
|
||||
- id: salt-lint
|
||||
@ -41,15 +42,9 @@ repos:
|
||||
entry: scripts/salt-lint.sh
|
||||
language: script
|
||||
pass_filenames: true
|
||||
files: \.(sls|top)$
|
||||
description: Lint Salt files
|
||||
|
||||
- id: shell-lint
|
||||
name: shell-lint
|
||||
entry: scripts/shell-lint.sh
|
||||
language: script
|
||||
pass_filenames: true
|
||||
description: Lint Shellscripts
|
||||
|
||||
- id: qubesbuilder-gen
|
||||
name: qubesbuilder-gen
|
||||
entry: scripts/qubesbuilder-gen.sh
|
||||
@ -67,6 +62,14 @@ repos:
|
||||
# # pass_filenames: true
|
||||
# description: Check if RPM SPEC files are up to date
|
||||
|
||||
- id: reuse-lint
|
||||
name: reuse-lint
|
||||
entry: reuse
|
||||
args: [lint]
|
||||
language: python
|
||||
pass_filenames: false
|
||||
description: Lint files to comply with the REUSE Specification
|
||||
|
||||
- id: git-lint
|
||||
name: git-lint
|
||||
language: python
|
||||
|
18
scripts/best-program.sh
Executable file
18
scripts/best-program.sh
Executable file
@ -0,0 +1,18 @@
|
||||
#!/bin/sh
|
||||
|
||||
## SPDX-FileCopyrightText: 2024 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||
##
|
||||
## SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
# shellcheck disable=SC2086
|
||||
set -eu
|
||||
|
||||
command -v git >/dev/null || { echo "Missing program: git" >&2; exit 1; }
|
||||
cd "$(git rev-parse --show-toplevel)" || exit 1
|
||||
|
||||
for tool in "${@}"; do
|
||||
if ./scripts/requires-program.sh "${tool}" >/dev/null 2>&1; then
|
||||
echo "${tool}"
|
||||
break
|
||||
fi
|
||||
done
|
@ -7,19 +7,12 @@
|
||||
# shellcheck disable=SC2086
|
||||
set -eu
|
||||
|
||||
command -v git >/dev/null ||
|
||||
{ printf "Missing program: git\n" >&2; exit 1; }
|
||||
command -v git >/dev/null || { echo "Missing program: git" >&2; exit 1; }
|
||||
cd "$(git rev-parse --show-toplevel)" || exit 1
|
||||
./scripts/requires-program.sh mdl
|
||||
|
||||
extra_files_rules="~MD002,~MD012,~MD022,~MD032,~MD041"
|
||||
|
||||
find_tool="find"
|
||||
if command -v fd; then
|
||||
find_tool="fd"
|
||||
elif command -v fdfind >/dev/null; then
|
||||
find_tool="fdfind"
|
||||
fi
|
||||
find_tool="$(./scripts/best-program.sh fd fdfind find)"
|
||||
|
||||
if test -n "${1-}"; then
|
||||
files=""
|
||||
|
@ -7,17 +7,11 @@
|
||||
# shellcheck disable=SC2086
|
||||
set -eu
|
||||
|
||||
command -v git >/dev/null ||
|
||||
{ printf "Missing program: git\n" >&2; exit 1; }
|
||||
command -v git >/dev/null || { echo "Missing program: git" >&2; exit 1; }
|
||||
cd "$(git rev-parse --show-toplevel)" || exit 1
|
||||
./scripts/requires-program.sh pylint
|
||||
|
||||
find_tool="find"
|
||||
if command -v fd; then
|
||||
find_tool="fd"
|
||||
elif command -v fdfind >/dev/null; then
|
||||
find_tool="fdfind"
|
||||
fi
|
||||
find_tool="$(./scripts/best-program.sh fd fdfind find)"
|
||||
|
||||
if test -n "${1-}"; then
|
||||
files=""
|
||||
|
@ -15,6 +15,7 @@ intended_target="${target}"
|
||||
if test "${1-}" = "test"; then
|
||||
tmpdir="$(mktemp -d)"
|
||||
target="${tmpdir}/.qubesbuilder"
|
||||
# shellcheck disable=SC2154
|
||||
trap 'ec="$?"; rm -rf -- "${tmpdir}"; exit "$ec"' EXIT INT HUP QUIT ABRT
|
||||
fi
|
||||
ignored="$(git ls-files --exclude-standard --others --ignored salt/)"
|
||||
|
@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
|
||||
## SPDX-FileCopyrightText: 2013-2018 Will Thames will@thames.id.au
|
||||
## SPDX-FileCopyrightText: 2013 - 2018 Will Thames will@thames.id.au
|
||||
## SPDX-FileCopyrightText: 2018 Ansible by Red Hat
|
||||
## SPDX-FileCopyrightText: 2020 - 2023 Warpnet B.V.
|
||||
## SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||
@ -12,16 +12,10 @@
|
||||
# shellcheck disable=SC2086
|
||||
set -eu
|
||||
|
||||
command -v git >/dev/null ||
|
||||
{ printf "Missing program: git\n" >&2; exit 1; }
|
||||
command -v git >/dev/null || { echo "Missing program: git" >&2; exit 1; }
|
||||
cd "$(git rev-parse --show-toplevel)" || exit 1
|
||||
|
||||
find_tool="find"
|
||||
if command -v fd; then
|
||||
find_tool="fd"
|
||||
elif command -v fdfind >/dev/null; then
|
||||
find_tool="fdfind"
|
||||
fi
|
||||
find_tool="$(./scripts/best-program.sh fd fdfind find)"
|
||||
|
||||
case "${find_tool}" in
|
||||
fd|fdfind) files="$(${find_tool} . minion.d/ --extension=conf) $(${find_tool} . salt/ --max-depth=2 --type=f --extension=sls)";;
|
||||
|
@ -7,22 +7,15 @@
|
||||
# shellcheck disable=SC2086
|
||||
set -eu
|
||||
|
||||
command -v git >/dev/null ||
|
||||
{ printf "Missing program: git\n" >&2; exit 1; }
|
||||
command -v git >/dev/null || { echo "Missing program: git" >&2; exit 1; }
|
||||
cd "$(git rev-parse --show-toplevel)" || exit 1
|
||||
./scripts/requires-program.sh salt-lint
|
||||
|
||||
find_tool="$(./scripts/best-program.sh fd fdfind find)"
|
||||
possible_conf="${PWD}/.salt-lint"
|
||||
conf=""
|
||||
test -f "${possible_conf}" && conf="-c ${possible_conf}"
|
||||
|
||||
find_tool="find"
|
||||
if command -v fd; then
|
||||
find_tool="fd"
|
||||
elif command -v fdfind >/dev/null; then
|
||||
find_tool="fdfind"
|
||||
fi
|
||||
|
||||
if test -n "${1-}"; then
|
||||
files=""
|
||||
for f in "$@"; do
|
||||
|
@ -1,7 +1,6 @@
|
||||
#!/bin/sh
|
||||
|
||||
## SPDX-FileCopyrightText: 2018 Andreas Kusalananda <https://github.com/kusalaananda>
|
||||
## SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||
## SPDX-FileCopyrightText: 2023 - 2024 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||
##
|
||||
## SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@ -10,34 +9,27 @@
|
||||
# shellcheck disable=SC2086
|
||||
set -eu
|
||||
|
||||
command -v shellcheck >/dev/null ||
|
||||
{ printf >&2 "Missing program: shellcheck\n"; exit 1; }
|
||||
command -v file >/dev/null ||
|
||||
{ printf >&2 "Missing program: file\n"; exit 1; }
|
||||
command -v git >/dev/null ||
|
||||
{ printf "Missing program: git\n" >&2; exit 1; }
|
||||
command -v git >/dev/null || { echo "Missing program: git" >&2; exit 1; }
|
||||
cd "$(git rev-parse --show-toplevel)" || exit 1
|
||||
./scripts/requires-program.sh shellcheck file
|
||||
|
||||
if command -v fd; then
|
||||
find_tool="fd"
|
||||
elif command -v fdfind >/dev/null; then
|
||||
find_tool="fdfind"
|
||||
fi
|
||||
find_tool="$(./scripts/best-program.sh fd fdfind find)"
|
||||
|
||||
if test -n "${1-}"; then
|
||||
files=""
|
||||
sh_files=""
|
||||
for f in "$@"; do
|
||||
test -f "$f" || continue
|
||||
if test "${f##*/}" = "rc.local"; then
|
||||
sh_files="$sh_files $f"
|
||||
continue
|
||||
fi
|
||||
case $( file -bi "$f" ) in
|
||||
(*/x-shellscript*) files="$files $f";;
|
||||
case "${f}" in
|
||||
*/zsh/*) continue;;
|
||||
*.yml|*.yaml|*.vim|*.sls|*.top|*.toml|*.timer|*.service|*.socket| \
|
||||
*.spec|*/config|*.txt|*/version|*.sources|*.asc|*.repo) continue;;
|
||||
*/rc.local) sh_files="$sh_files $f"; continue;;
|
||||
*) files="$files $f"
|
||||
esac
|
||||
done
|
||||
if test -n "$files" || test -n "$sh_files"; then
|
||||
files="$(file $files | awk -F ":" '/ shell script,/{ print $1 }')"
|
||||
if test -z "$files" && test -z "$sh_files"; then
|
||||
exit 0
|
||||
fi
|
||||
test -z "$files" || shellcheck ${files}
|
||||
@ -49,16 +41,13 @@ case "${find_tool}" in
|
||||
fd|fdfind)
|
||||
# shellcheck disable=2016,2215
|
||||
files="$(${find_tool} . scripts/ salt/ --hidden --exclude=zsh --type=f \
|
||||
--exec sh -c '
|
||||
case $( file -bi "$1" ) in (*/x-shellscript*)
|
||||
printf "%s\n" "$1";; esac' sh)"
|
||||
--exec-batch file | awk -F ":" '/ shell script,/{ print $1 }')"
|
||||
## No Shebang
|
||||
sh_files="$(${find_tool} rc.local salt/ --type=f)"
|
||||
;;
|
||||
find)
|
||||
files="$(find scripts/ salt/ -not \( -path "*/zsh" -prune \) -type f -exec sh -c '
|
||||
case $( file -bi "$1" ) in (*/x-shellscript*) exit 0;; esac
|
||||
exit 1' sh {} \; -print)"
|
||||
files="$(find scripts/ salt/ -not \( -path "*/zsh" -prune \) -type f \
|
||||
-exec file {} \+ | awk -F ":" '/ shell script,/{ print $1 }')"
|
||||
## No Shebang
|
||||
sh_files="$(find salt/ -type f -name "rc.local")"
|
||||
;;
|
||||
@ -66,5 +55,5 @@ esac
|
||||
|
||||
files="$(echo "$files" | sort -u)"
|
||||
sh_files="$(echo "$sh_files" | sort -u)"
|
||||
shellcheck ${files}
|
||||
shellcheck -s sh ${sh_files}
|
||||
test -z "${files}" || shellcheck ${files}
|
||||
test -z "${sh_files}" || shellcheck -s sh ${sh_files}
|
||||
|
@ -16,7 +16,6 @@ build_rpm(){
|
||||
project="${1}"
|
||||
group="$(${spec_get} "${project}" group)"
|
||||
version="$(${spec_get} "${project}" version)"
|
||||
license_csv="$(${spec_get} "${project}" license_csv)"
|
||||
spec="rpm_spec/${group}-${project}.spec"
|
||||
|
||||
"${spec_gen}" "${project}"
|
||||
@ -52,7 +51,7 @@ build_rpm(){
|
||||
tmp_file="${dbpath}/${key_id}.asc"
|
||||
"${gpg}" --export --armor "${key_id}" | tee "${tmp_file}" >/dev/null
|
||||
rpmkeys --dbpath="${dbpath}" --import "${tmp_file}"
|
||||
## TODO: target only the latest relase
|
||||
## TODO: target only the latest release
|
||||
rpmkeys --dbpath="${dbpath}" --checksig --verbose \
|
||||
-- "${rpm_basename}"*"${rpm_suffix}"
|
||||
fi
|
||||
|
@ -41,7 +41,7 @@ case "${1-}" in
|
||||
*) key="${1}"; shift;;
|
||||
esac
|
||||
if test -z "${key##* }"; then
|
||||
echo "Key is emtpy: ${key}" >&2
|
||||
echo "Key is empty: ${key}" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
@ -8,8 +8,7 @@
|
||||
|
||||
set -eu
|
||||
|
||||
command -v git >/dev/null ||
|
||||
{ printf "Missing program: git\n" >&2; exit 1; }
|
||||
command -v git >/dev/null || { echo "Missing program: git" >&2; exit 1; }
|
||||
cd "$(git rev-parse --show-toplevel)" || exit 1
|
||||
|
||||
files=""
|
||||
|
Loading…
Reference in New Issue
Block a user