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