Refactor and cleanup CSS classes
This commit is contained in:
parent
01607ff10f
commit
1f718887ca
9 changed files with 129 additions and 46 deletions
66
scripts/analyze-css.sh
Executable file
66
scripts/analyze-css.sh
Executable file
|
|
@ -0,0 +1,66 @@
|
|||
#!/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
|
||||
31
scripts/lint.cks
Normal file
31
scripts/lint.cks
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
:prefixed {
|
||||
Level: error;
|
||||
diagnostic: "Avoid prefixed properties";
|
||||
}
|
||||
|
||||
style-value[name="color"]:not(:computed) {
|
||||
level: error;
|
||||
diagnostic: "Avoid color literals";
|
||||
}
|
||||
|
||||
declaration:important {
|
||||
level: error;
|
||||
diagnostic: "Avoid !important";
|
||||
}
|
||||
|
||||
declaration:unknown {
|
||||
level: error;
|
||||
diagnostic: "Unknown property";
|
||||
}
|
||||
|
||||
declaration:empty {
|
||||
level: error;
|
||||
diagnostic: "Empty ruleset";
|
||||
}
|
||||
|
||||
@stat --total-size { type: bytes; }
|
||||
:root { collect: --total-size; }
|
||||
|
||||
/*
|
||||
vi: ft=css
|
||||
*/
|
||||
Loading…
Add table
Add a link
Reference in a new issue