mirror of
https://github.com/ben-grande/qusal.git
synced 2025-03-02 03:39:27 -05:00
ci: check if RPM Specs are up to date
This commit is contained in:
parent
85635f305d
commit
0e150382e1
@ -69,25 +69,26 @@ repos:
|
|||||||
pass_filenames: false
|
pass_filenames: false
|
||||||
description: Check if .qubesbuilder is up to date
|
description: Check if .qubesbuilder is up to date
|
||||||
|
|
||||||
# TODO: generate temporary spec and compare against staged one.
|
- id: spec-gen
|
||||||
# - id: spec-gen
|
name: spec-gen
|
||||||
# name: spec-gen
|
language: script
|
||||||
# language: script
|
entry: scripts/spec-gen.sh
|
||||||
# entry: scripts/spec-gen.sh test
|
args: [test]
|
||||||
# args: [test]
|
pass_filenames: true
|
||||||
# # pass_filenames: true
|
# yamllint disable rule:line-length
|
||||||
# description: Check if RPM SPEC files are up to date
|
files: ^(rpm_spec/template/template.spec|salt/.*|scripts/spec-(get|gen)\.sh)$
|
||||||
|
description: Check if RPM SPEC files are up to date
|
||||||
|
|
||||||
- id: reuse-lint
|
- id: license-lint
|
||||||
name: reuse-lint
|
name: license-lint
|
||||||
entry: reuse
|
entry: reuse
|
||||||
args: [lint]
|
args: [lint]
|
||||||
language: python
|
language: python
|
||||||
pass_filenames: false
|
pass_filenames: false
|
||||||
description: Lint files to comply with the REUSE Specification
|
description: Lint files to comply with the REUSE Specification
|
||||||
|
|
||||||
- id: git-lint
|
- id: commit-lint
|
||||||
name: git-lint
|
name: commit-lint
|
||||||
language: python
|
language: python
|
||||||
entry: gitlint
|
entry: gitlint
|
||||||
args: [--staged, --msg-filename]
|
args: [--staged, --msg-filename]
|
||||||
|
@ -42,7 +42,11 @@ get_spec(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
gen_spec(){
|
gen_spec(){
|
||||||
project="${1}"
|
project="$(echo "${1}" | sed "s|salt/||;s|/.*||")"
|
||||||
|
if echo "${projects_seen}" | grep -qF " ${project} "; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
projects_seen="${projects_seen} ${project} "
|
||||||
|
|
||||||
if echo "${unwanted}" | grep -q "^${project}$"; then
|
if echo "${unwanted}" | grep -q "^${project}$"; then
|
||||||
echo "warn: skipping spec generation of untracked formula: ${project}" >&2
|
echo "warn: skipping spec generation of untracked formula: ${project}" >&2
|
||||||
@ -66,8 +70,9 @@ gen_spec(){
|
|||||||
|
|
||||||
project_name="$(get_spec project)"
|
project_name="$(get_spec project)"
|
||||||
version="$(get_spec version)"
|
version="$(get_spec version)"
|
||||||
license="$(get_spec license)"
|
|
||||||
license_csv="$(get_spec license_csv)"
|
license_csv="$(get_spec license_csv)"
|
||||||
|
## Ideally we would query the license, but it is a heavy call.
|
||||||
|
license="$(echo "${license_csv}" | sed "s/,/ AND /g")"
|
||||||
vendor="$(get_spec vendor)"
|
vendor="$(get_spec vendor)"
|
||||||
packager="$(get_spec packager)"
|
packager="$(get_spec packager)"
|
||||||
url="$(get_spec url)"
|
url="$(get_spec url)"
|
||||||
@ -121,9 +126,12 @@ gen_spec(){
|
|||||||
|
|
||||||
if test "${2-}" = "test"; then
|
if test "${2-}" = "test"; then
|
||||||
if ! cmp -s "${target}" "${intended_target}"; then
|
if ! cmp -s "${target}" "${intended_target}"; then
|
||||||
echo "${0##*/}: error: File ${intended_target} is not up to date" >&2
|
echo "error: ${intended_target} is not up to date" >&2
|
||||||
echo "${0##*/}: error: Update the spec with: ${0##/*} ${project}" >&2
|
fail=1
|
||||||
exit 1
|
else
|
||||||
|
if test -n "$(git diff --name-only "${intended_target}")"; then
|
||||||
|
echo "warn: ${intended_target} is up to date but it is not staged" >&2
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@ -142,16 +150,25 @@ untracked="$(git ls-files --exclude-standard --others salt/)"
|
|||||||
unwanted="$(printf %s"${ignored}\n${untracked}\n" \
|
unwanted="$(printf %s"${ignored}\n${untracked}\n" \
|
||||||
| grep "^salt/\S\+/README.md" | cut -d "/" -f2 | sort -u)"
|
| grep "^salt/\S\+/README.md" | cut -d "/" -f2 | sort -u)"
|
||||||
|
|
||||||
if test "${2-}" = "test"; then
|
fail=""
|
||||||
gen_spec "${1}" test
|
gen_mode=""
|
||||||
exit
|
|
||||||
|
if test "${1-}" = "test"; then
|
||||||
|
gen_mode="test"
|
||||||
|
shift
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test -z "${1-}"; then
|
if echo "${@}" | grep -qE "(^scripts/| scripts/|/template.spec)" || test -z "${1-}"; then
|
||||||
# shellcheck disable=SC2046
|
# shellcheck disable=SC2046
|
||||||
set -- $(find salt/ -mindepth 1 -maxdepth 1 -type d -printf '%f\n' \
|
set -- $(find salt/ -mindepth 1 -maxdepth 1 -type d -printf '%f\n' \
|
||||||
| sort -d | tr "\n" " ")
|
| sort -d | tr "\n" " ")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
projects_seen=""
|
||||||
for p in "$@"; do
|
for p in "$@"; do
|
||||||
gen_spec "${p}"
|
gen_spec "${p}" ${gen_mode}
|
||||||
done
|
done
|
||||||
|
|
||||||
|
if test "${fail}" = "1" && test "${gen_mode}" = "test"; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
Loading…
x
Reference in New Issue
Block a user