Add linting of PKGBUILDs
Signed-off-by: Knut Ahlers <knut@ahlers.me>
This commit is contained in:
parent
77de640cc8
commit
26653a0e01
1 changed files with 62 additions and 0 deletions
62
.config/sanity.d/pkgbuild-lint.sh
Normal file
62
.config/sanity.d/pkgbuild-lint.sh
Normal file
|
@ -0,0 +1,62 @@
|
|||
function sanity_lint_pkgbuild() {
|
||||
[[ -f PKGBUILD ]] || {
|
||||
report debug "No PKGBUILD file found, skipping check"
|
||||
return 0
|
||||
}
|
||||
|
||||
command -v namcap 2>&1 >/dev/null || {
|
||||
report warn "PKGBUILD found but 'namcap' utility not available"
|
||||
return 0
|
||||
}
|
||||
|
||||
local output=$(namcap -i PKGBUILD)
|
||||
local errors=$(echo "${output}" | grep -c " E: ")
|
||||
local warns=$(echo "${output}" | grep -c " W: ")
|
||||
|
||||
[ $errors -eq 0 ] || {
|
||||
report error "'namcap PKGBUILD' found $errors errors and $warns warnings"
|
||||
return 1
|
||||
}
|
||||
|
||||
[ $warns -eq 0 ] || {
|
||||
report warn "'namcap PKGBUILD' found $warns warnings"
|
||||
return 0
|
||||
}
|
||||
|
||||
report success "'namcap PKGBUILD' found no errors or warnings"
|
||||
}
|
||||
|
||||
function sanity_lint_pkgbuild_result() {
|
||||
[[ -f PKGBUILD ]] || {
|
||||
report debug "No PKGBUILD file found, skipping check"
|
||||
return 0
|
||||
}
|
||||
|
||||
local packages=($(find . -name '*.pkg.tar.xz' -or -name '*.pkg.tar.zst'))
|
||||
[ ${#packages[@]} -gt 0 ] || {
|
||||
report warn "PKGBUILD but no *.pkg.tar.xz or *.pkg.tar.zst found, skipping check"
|
||||
return 0
|
||||
}
|
||||
|
||||
local retcode=0
|
||||
local nosuccess=0
|
||||
for pkg in "${packages[@]}"; do
|
||||
local output=$(namcap -i "${pkg}")
|
||||
local errors=$(echo "${output}" | grep -c " E: ")
|
||||
local warns=$(echo "${output}" | grep -c " W: ")
|
||||
|
||||
[ $errors -eq 0 ] || {
|
||||
report error "'namcap ${pkg}' found $errors errors and $warns warnings"
|
||||
nosuccess=1
|
||||
retcode=1
|
||||
}
|
||||
|
||||
[ $warns -eq 0 ] || {
|
||||
report warn "'namcap ${pkg}' found $warns warnings"
|
||||
nosuccess=1
|
||||
}
|
||||
done
|
||||
|
||||
[ $nosuccess -eq 1 ] || report success "No errors or warnings found in built packages"
|
||||
return $retcode
|
||||
}
|
Loading…
Reference in a new issue