66 lines
1.6 KiB
Bash
Executable file
66 lines
1.6 KiB
Bash
Executable file
#!/usr/bin/env sh
|
|
|
|
exclusions='^(index-user-controls|subpage-user-controls|title|taxon-title)$'
|
|
|
|
set -eu
|
|
git_root=$(git rev-parse --show-toplevel)
|
|
style="$git_root/static/assets/css/style.css"
|
|
|
|
diff_classes() {
|
|
template_classes=$(mktemp -u)
|
|
mkfifo "$template_classes"
|
|
|
|
# TODO support multiple classes in the same class= key
|
|
grep -Eoh 'class="[a-zA-Z0-9-]+"' "$git_root/templates/"* |
|
|
sed -E 's/class=|"//g' |
|
|
grep -Ev "${exclusions:-f481b6cd58e}" |
|
|
sort | uniq \
|
|
> "$template_classes" &
|
|
|
|
css_classes=$(mktemp -u)
|
|
mkfifo "$css_classes"
|
|
|
|
grep -Eo '\.[a-zA-Z-]+[0-9-]*' "$style" |
|
|
sed 's/\.//g' |
|
|
grep -v '^ttf$' |
|
|
grep -Ev "${exclusions:-f481b6cd58e}" |
|
|
sort | uniq \
|
|
> "$css_classes" &
|
|
|
|
echo "Classes diff:"
|
|
if ! diff "$template_classes" "$css_classes" > /dev/null; then
|
|
echo '< html | css >'
|
|
diff --color=auto "$template_classes" "$css_classes"
|
|
fi
|
|
[ -z "$exclusions" ] || echo "Exclusions: $exclusions"
|
|
|
|
rm -f "$template_classes"
|
|
rm -f "$css_classes"
|
|
|
|
}
|
|
|
|
purge_css() {
|
|
|
|
purged_css=$(
|
|
purgecss \
|
|
--content "$git_root/templates/*.html" \
|
|
--css "$style" \
|
|
--rejected |
|
|
jq '.[0].rejected'
|
|
)
|
|
|
|
purged_css_count=$(printf '%s' "$purged_css" | jq '. | length')
|
|
|
|
if [ "$purged_css_count" -gt 0 ]; then
|
|
printf '\n%s\n' purgecss:
|
|
printf '%s' "$purged_css" | jq '.'
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
diff_classes
|
|
|
|
printf '\n%s\n' csskit:
|
|
csskit check "$git_root/scripts/lint.cks" "$style"
|
|
|
|
purge_css
|