mirror of
https://git.sr.ht/~seirdy/seirdy.one
synced 2024-11-10 00:12:09 +00:00
Internal: improve scripts
- I forgot to compress xhtml files. fix that. - Stylistic change: remove unnecessary brace expansions - Don't repeatedly append to a file; run commands in a different scope and write all at once. Move Nu HTML validator filtering into a shell script: - Return a bad exit code if validation errors are found after filtering - Remove null-ish values from the JSON output; the final output *should* be an empty string, since nothing should be reported.
This commit is contained in:
parent
b02a619260
commit
cb26956bca
5 changed files with 33 additions and 16 deletions
8
Makefile
8
Makefile
|
@ -40,9 +40,9 @@ lint-css: $(CSS_DIR)/*.css
|
||||||
pnpm -s dlx stylelint --config linter-configs/stylelintrc.json --di --rd --rdd $(CSS_DIR)/*.css
|
pnpm -s dlx stylelint --config linter-configs/stylelintrc.json --di --rd --rdd $(CSS_DIR)/*.css
|
||||||
@#csslint --quiet $(CSS_DIR)
|
@#csslint --quiet $(CSS_DIR)
|
||||||
|
|
||||||
.PHONY: lint-html
|
.PHONY: validate-markup
|
||||||
lint-html:
|
validate-markup:
|
||||||
$(VNU) --stdout --format json --skip-non-html --also-check-svg $(OUTPUT_DIR) | jq --from-file linter-configs/vnu_filter.jq
|
$(VNU) --stdout --format json --skip-non-html --also-check-svg $(OUTPUT_DIR) | sh scripts/filter-vnu.sh
|
||||||
|
|
||||||
.PHONY: hint
|
.PHONY: hint
|
||||||
hint: hugo .hintrc-local
|
hint: hugo .hintrc-local
|
||||||
|
@ -50,7 +50,7 @@ hint: hugo .hintrc-local
|
||||||
rm .hintrc-local
|
rm .hintrc-local
|
||||||
|
|
||||||
.PHONY: lint-local
|
.PHONY: lint-local
|
||||||
lint-local: lint-css lint-html
|
lint-local: lint-css validate-markup
|
||||||
|
|
||||||
# dev server, includes future and draft posts
|
# dev server, includes future and draft posts
|
||||||
.PHONY: serve
|
.PHONY: serve
|
||||||
|
|
|
@ -15,4 +15,4 @@
|
||||||
)
|
)
|
||||||
) | not
|
) | not
|
||||||
)
|
)
|
||||||
)
|
) | del(..|select(. == [])) | del(..|select(. == {})) | select(. != null)
|
||||||
|
|
|
@ -10,7 +10,7 @@ set -e -u
|
||||||
output_dir="$1"
|
output_dir="$1"
|
||||||
format="$2"
|
format="$2"
|
||||||
|
|
||||||
alias find_compressible='find "$output_dir" -type f \( -name "*.html" -o -name "*.xml" -o -name "*.webmanifest" -o -name "*.*.svg" \)'
|
alias find_compressible='find "$output_dir" -type f \( -name "*.html" -o -name "*.xhtml" -o -name "*.xml" -o -name "*.webmanifest" -o -name "*.*.svg" \)'
|
||||||
|
|
||||||
if [ "$format" = "gzip" ]; then
|
if [ "$format" = "gzip" ]; then
|
||||||
compress_level="$3"
|
compress_level="$3"
|
||||||
|
|
13
scripts/filter-vnu.sh
Normal file
13
scripts/filter-vnu.sh
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
#!/bin/sh
|
||||||
|
# filters the Nu HTML Validator's JSON output. Operates on stdin.
|
||||||
|
set -e -u
|
||||||
|
|
||||||
|
root_dir="$(dirname "$0")/.."
|
||||||
|
vnu_output="$(jq --from-file "$root_dir/linter-configs/vnu_filter.jq")"
|
||||||
|
if [ "$vnu_output" = '' ]; then
|
||||||
|
echo "All markup is valid"
|
||||||
|
else
|
||||||
|
echo "Markup errors found!" 1>&2
|
||||||
|
echo "$vnu_output"
|
||||||
|
exit 1
|
||||||
|
fi
|
|
@ -15,7 +15,7 @@
|
||||||
set -e -u
|
set -e -u
|
||||||
|
|
||||||
export html_file="$1"
|
export html_file="$1"
|
||||||
export tmp_file="${html_file}.tmp"
|
export tmp_file="$html_file.tmp"
|
||||||
export xhtml_file=${html_file%*.html}.xhtml
|
export xhtml_file=${html_file%*.html}.xhtml
|
||||||
|
|
||||||
cleanup() {
|
cleanup() {
|
||||||
|
@ -25,13 +25,17 @@ trap cleanup EXIT
|
||||||
|
|
||||||
trap cleanup EXIT
|
trap cleanup EXIT
|
||||||
sed 7d "$html_file" | xmllint --format --encode UTF-8 --noent - -o "$tmp_file"
|
sed 7d "$html_file" | xmllint --format --encode UTF-8 --noent - -o "$tmp_file"
|
||||||
head -n7 "$tmp_file" >> "$xhtml_file"
|
{
|
||||||
cat tmp.css >>"$xhtml_file"
|
head -n7 "$tmp_file"
|
||||||
tail -n +8 "$tmp_file" \
|
cat tmp.css
|
||||||
| sd '<pre(?: tabindex="0")?>\n\t*<code ' '<pre tabindex="0"><code ' \
|
tail -n +8 "$tmp_file" \
|
||||||
| sd '(?:\n)?</code>\n(?:[\t\s]*)?</pre>' '</code></pre>' >>"$xhtml_file"
|
| sd '<pre(?: tabindex="0")?>\n\t*<code ' '<pre tabindex="0"><code ' \
|
||||||
tail -n +2 "$xhtml_file" > "$html_file"
|
| sd '(?:\n)?</code>\n(?:[\t\s]*)?</pre>' '</code></pre>'
|
||||||
sed -i 5d "$xhtml_file" # busybox sed supports "-i"
|
} >>"$xhtml_file"
|
||||||
|
|
||||||
# the "sed 5d" deletes the now-redundant meta charset; it's the first
|
# replace the html file with the formatted xhtml5 file, excluding the xml declaration
|
||||||
# thing in the <head>.
|
tail -n +2 "$xhtml_file" > "$html_file"
|
||||||
|
|
||||||
|
# remove the redundant charset declaration from the xhtml file. It's the
|
||||||
|
# first thing in the <head>
|
||||||
|
sed -i 5d "$xhtml_file" # busybox sed supports "-i"
|
||||||
|
|
Loading…
Reference in a new issue