twitch-bot-rules/ci/lint.sh
Knut Ahlers 1b58f13dc1
Initial repo setup
Signed-off-by: Knut Ahlers <knut@ahlers.me>
2022-10-08 02:14:36 +02:00

45 lines
823 B
Bash

set -euo pipefail
exit_code=0
function error() {
log E "$@"
exit_code=1
}
function info() {
log I "$@"
}
function log() {
local level=$1
shift
echo "[$(date +%H:%M:%S)][$level] $@" >&2
}
required_tags=(
author
minBotVersion
version
)
for rule_file in rules/*.yml; do
info "Linting rules file ${rule_file}"
info "+++ Checking with YAMLlint..."
yamllint -c ci/yamllint.yml ${rule_file}
info "+++ Checking required tags..."
for tag in "${required_tags[@]}"; do
grep -Eq "^# @${tag} .+$" ${rule_file} || error "Missing required tag: ${tag}"
done
info "+++ Checking subscription URL..."
exp_url="${RULE_BASE}${rule_file}"
sub_url="$(yq -r '.subscribe_from' ${rule_file})"
[[ $sub_url == $exp_url ]] || error "Wrong subscription URL: expected ${exp_url}"
done
exit $exit_code