Something went wrong. Try again.
Paper Mario atproto mod hosting site starhaven.dev
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748#!/usr/bin/env bashset -euo pipefail
css_files=(assets/*.css)
css_classes=$(sed -E 's/url\([^)]*\)//g; s/format\([^)]*\)//g' "${css_files[@]}" \ | grep -ohE '\.[a-zA-Z_][a-zA-Z0-9_-]*' \ | sed 's/^\.//' \ | sort -u)
source_classes=$( # Maud dot syntax (hyphenated only, outside quotes) sed -E 's/"[^"]*"//g' src/*.rs 2>/dev/null \ | grep -ohE '\.[a-zA-Z][a-zA-Z0-9]*(-[a-zA-Z0-9]+)+' \ | sed 's/^\.//'
# class="..." attributes grep -ohE 'class="[^"]*"' src/*.rs assets/*.js 2>/dev/null \ | sed 's/class="//;s/"$//' \ | tr ' ' '\n' \ | grep -E '^[a-zA-Z]'
# JS classList methods grep -ohE 'classList\.(add|remove|toggle|contains)\("[^"]*"\)' assets/*.js 2>/dev/null \ | grep -ohE '"[^"]*"' \ | tr -d '"')
source_classes=$(echo "$source_classes" | sort -u)
exit_code=0
for class in $css_classes; do if ! grep -rql --include='*.rs' --include='*.js' "$class" src/ assets/ > /dev/null 2>&1; then echo "CSS class .$class unused" exit_code=1 fidone
for class in $source_classes; do if ! echo "$css_classes" | grep -qxF "$class"; then echo "CSS class .$class used but not defined" exit_code=1 fidone
exit $exit_code