diff options
author | eudoxia <uplink@distress.network> | 2022-02-04 16:05:22 -0500 |
---|---|---|
committer | eudoxia <uplink@distress.network> | 2022-02-04 16:05:22 -0500 |
commit | 9e59767d4b952cf74804552f7598e167c35cbe61 (patch) | |
tree | 84839e9eac91c8f8824ebd8cfa4340575ad9adbe | |
parent | feea7384f3e197681745c2bfbbf4ae778aa0df43 (diff) |
linting
-rwxr-xr-x | front.sh | 4 | ||||
-rwxr-xr-x | md.sh | 128 | ||||
-rwxr-xr-x | nav.sh | 26 | ||||
-rwxr-xr-x | plain.sh | 16 | ||||
-rwxr-xr-x | reload.sh | 2 | ||||
-rwxr-xr-x | sitemap.sh | 12 |
6 files changed, 94 insertions, 94 deletions
@@ -5,8 +5,8 @@ set -e cat front-header > $1 -cat distress.network/nav.html | sed -e '/^<!--title:/d' -e '/^<a/d' >> $1 +sed -e '/^<!--title:/d' -e '/^<a/d' "distress.network/nav.html" >> $1 -cat md-footer | sed -e '/<\/main>/,/<nav>/d' -e '/<\/div>/p' >> $1 +sed -e '/<\/main>/,/<nav>/d' -e '/<\/div>/p' "md-footer" >> $1 printf "%s \tbuild complete: %s\n" "[->]" "$1" @@ -32,14 +32,14 @@ OUT="$1/index.html" [ "$1" ] || { echo "$usage" ; exit 1 ; } -[ -f $IN ] || { printf "[err] \t%s not found\n" "$IN" ; exit 1 ; } -[ -f md-header ] || { printf "[err] \tmd-header not found\n" ; exit 1 ; } -[ -f md-footer ] || { printf "[err] \tmd-footer not found\n" ; exit 1 ; } -[ -e $(which lowdown) ] || { printf "[err] \tlowdown not found\n" ; exit 1 ; } - -cat md-header > $OUT -lowdown -Thtml --html-no-owasp $IN >> $OUT -cat md-footer >> $OUT +[ -f "$IN" ] || { printf "[err] \t%s not found\n" "$IN" ; exit 1 ; } +[ -f md-header ] || { printf "[err] \tmd-header not found\n" ; exit 1 ; } +[ -f md-footer ] || { printf "[err] \tmd-footer not found\n" ; exit 1 ; } +[ -e "$(which lowdown)" ] || { printf "[err] \tlowdown not found\n" ; exit 1 ; } + +cat md-header > "$OUT" +lowdown -Thtml --html-no-owasp "$IN" >> "$OUT" +cat md-footer >> "$OUT" printf "[ok] \tinitial assembly\n" @@ -52,49 +52,49 @@ unesc() { } -TITLE=$(grep -e '^title: ' -m 1 $IN | cut -f 2- -d ' ' | sedesc) -sed "s/<title>/&${TITLE} \&mdash\; DistressNetwork°/1" -i'' $OUT +TITLE=$(grep -e '^title: ' -m 1 "$IN" | cut -f 2- -d ' ' | sedesc) +sed "s/<title>/&${TITLE} \&mdash\; DistressNetwork°/1" -i'' "$OUT" printf "[ok] \ttitle: %s\n" "$(echo "$TITLE" | unesc)" -BOMBER=$(grep -e '^bomber: ' -m 1 $IN | cut -f 2- -d ' ' | sedesc) -sed "s/<div class=\"bomber\">/&${BOMBER}/1" -i'' $OUT +BOMBER=$(grep -e '^bomber: ' -m 1 "$IN" | cut -f 2- -d ' ' | sedesc) +sed "s/<div class=\"bomber\">/&${BOMBER}/1" -i'' "$OUT" printf "[ok] \tbomber: %s\n" "$(echo "$BOMBER" | unesc)" # format: "yyyy-mm-dd hh:mm:ss±zz:zz" (ISO 8601) -MDATE=$(stat -c '%y' $IN | sed -e 's/\.[0-9]* //' -e 's/\(..\)\(..\)$/\1:\2/') +MDATE=$(stat -c '%y' "$IN" | sed -e 's/\.[0-9]* //' -e 's/\(..\)\(..\)$/\1:\2/') # format: "yymmdd" (for humans) -DATE=$(echo $MDATE | cut -f 1 -d ' ' | sed -e 's/-//g' -e 's/^..//') -sed -e "s;<div class=\"ident\"><time datetime=\";&${MDATE};1" -e "s;</time>;${DATE}&;1" -i'' $OUT -sed "s;<meta http-equiv=\"last-modified\" content=\";&${MDATE};1" -i'' $OUT +DATE=$(echo "$MDATE" | cut -f 1 -d ' ' | sed -e 's/-//g' -e 's/^..//') +sed -e "s;<div class=\"ident\"><time datetime=\";&${MDATE};1" -e "s;</time>;${DATE}&;1" -i'' "$OUT" +sed "s;<meta http-equiv=\"last-modified\" content=\";&${MDATE};1" -i'' "$OUT" printf "[ok] \tdate: %s (%s)\n" "$DATE" "$MDATE" -LEADING=$(grep -e '^leading: ' -m 1 $IN | cut -f 2- -d ' ' | sedesc) -sed "s;<div class=\"leading\">;&${LEADING};1" -i'' $OUT +LEADING=$(grep -e '^leading: ' -m 1 "$IN" | cut -f 2- -d ' ' | sedesc) +sed "s;<div class=\"leading\">;&${LEADING};1" -i'' "$OUT" printf "[ok] \tleading: %s\n" "$(echo "$LEADING" | unesc)" METADESC="\«\;${BOMBER}\»\; \&mdash\; ${LEADING}" -sed "s;<meta name=\"description\" content=\";&${METADESC};1" -i'' $OUT +sed "s;<meta name=\"description\" content=\";&${METADESC};1" -i'' "$OUT" printf "[ok] \tmeta description\n" -if [ -f $(echo $IN | cut -f 1 -d /)/nav.html ] ; then -NAVLINE=$(grep -n '<nav>' $OUT | cut -f 1 -d :) ; -sed "${NAVLINE}r $(echo $OUT | cut -f 1 -d /)/nav.html" -i'' $OUT ; -sed '/^<!--title:/d' -i'' $OUT ; +if [ -f "$(echo $IN | cut -f 1 -d /)/nav.html" ] ; then +NAVLINE=$(grep -n '<nav>' "$OUT" | cut -f 1 -d :) ; +sed "${NAVLINE}r $(echo "$OUT" | cut -f 1 -d /)/nav.html" -i'' "$OUT" ; +sed '/^<!--title:/d' -i'' "$OUT" ; printf "[ok] \tsitemap\n" ; fi -[ "$(grep -n '<p><img' $OUT)" ] && { # skip if no figures found +grep -q '<p><img' "$OUT" && { # skip if no figures found # escaping backslashes with '@', to be unescaped later: -grep -n '<p><img' $OUT | sed 's/\\/@/g' | \ +grep -n '<p><img' "$OUT" | sed 's/\\/@/g' | \ while IFS='' read -r data ; do - LINE=$(echo $data | cut -f 1 -d :) ; # extract line number - FILE=$(echo $data | cut -f 2 -d \") ; # extract file path - CAPT=$(echo $data | cut -f 4 -d \") ; # extract image caption + LINE=$(echo "$data" | cut -f 1 -d :) ; # extract line number + FILE=$(echo "$data" | cut -f 2 -d \") ; # extract file path + CAPT=$(echo "$data" | cut -f 4 -d \") ; # extract image caption if [ "$FILE" = "%tex" ] ; then # for tex figures (to be caught and rendered later) - sed "${LINE}s;.*;<figure><%tex \"${CAPT}\" /></figure>;" -i'' $OUT ; + sed "${LINE}s;.*;<figure><%tex \"${CAPT}\" /></figure>;" -i'' "$OUT" ; else - sed "${LINE}s;.*;<figure><a href=\"${FILE}\"><img src=\"${FILE}\" alt=\"\"></a><figcaption><p>${CAPT}</p></figcaption></figure>;" -i'' $OUT ; + sed "${LINE}s;.*;<figure><a href=\"${FILE}\"><img src=\"${FILE}\" alt=\"\"></a><figcaption><p>${CAPT}</p></figcaption></figure>;" -i'' "$OUT" ; printf "[ok] \timage at line %s\n" "$LINE" ; fi done @@ -106,26 +106,26 @@ toc() { tmp=$(mktemp -p /tmp) # format headers from source as md list -grep -e '^#' $IN | sed -e 's; ;- ;' -e 's;^#;;' -e 's;#; ;g' > $tmp +grep -e '^#' "$IN" | sed -e 's; ;- ;' -e 's;^#;;' -e 's;#; ;g' > "$tmp" # convert to html, write to tempfile (reset) -buffer=$(cat $tmp) ; echo "$buffer" | lowdown -Thtml > $tmp +buffer=$(cat "$tmp") ; echo "$buffer" | lowdown -Thtml > "$tmp" # prepend starting tag, remove empty lines -sed -e '1i <nav class="toc">' -e '/^$/d' -i'' $tmp +sed -e '1i <nav class="toc">' -e '/^$/d' -i'' "$tmp" # get queue of headers from output -HEADERS=$(grep -e "^<h[[:digit:]] id=" $OUT) +HEADERS=$(grep -e "^<h[[:digit:]] id=" "$OUT") # for each toc list item: -cat $tmp | grep -e "^<li>" | while IFS='' read -r data ; do +grep -e "^<li>" "$tmp" | while IFS='' read -r data ; do # get next header in queue, extract id HEADER=$(echo "$HEADERS" | head -n 1) ; ID=$(echo "$HEADER" | cut -f 2 -d \" | sedesc) ; # rewrite toc item as link with id ITEM=$(echo "$data" | sed "s;^<li>\([^</>]*\)\(</li>\)*$;\1;" | sedesc) ; - sed -e "s;^<li>\(${ITEM}\);<li><a href=\"#${ID}\">\1;" -e "s;\([[:alnum:]]\)</li>$;\1</a></li>;" -i'' $tmp ; + sed -e "s;^<li>\(${ITEM}\);<li><a href=\"#${ID}\">\1;" -e "s;\([[:alnum:]]\)</li>$;\1</a></li>;" -i'' "$tmp" ; # remove processed header from queue HEADERS=$(echo "$HEADERS" | sed '1d') ; @@ -134,14 +134,14 @@ cat $tmp | grep -e "^<li>" | while IFS='' read -r data ; do done # close link tags on open lines, append closing tag -sed "s;[[:alnum:]]$;&</a>;" -i'' $tmp -echo '</nav>' >> $tmp +sed "s;[[:alnum:]]$;&</a>;" -i'' "$tmp" +echo '</nav>' >> "$tmp" # get toc line number in output, insert data from tempfile TOCLINE=$(wc -l md-header | cut -f 1 -d ' ') -sed "${TOCLINE}r $tmp" -i'' $OUT +sed "${TOCLINE}r $tmp" -i'' "$OUT" -rm $tmp +rm "$tmp" printf "[ok] \ttable of contents\n" @@ -152,53 +152,53 @@ math() { # [ $(npx katex -V 2>&1 | grep '404 Not Found') ] && { printf "[warn] \tkatex not found, skipping math rendering\n" ; return ; } -sed '/main.css/a <link rel="stylesheet" href="/css/katex.css">' -i'' $OUT +sed '/main.css/a <link rel="stylesheet" href="/css/katex.css">' -i'' "$OUT" # display / "block" style: -grep -n '<figure><%tex' $OUT | \ +grep -n '<figure><%tex' "$OUT" | \ while IFS='' read -r data ; do LINE=$(echo "$data" | cut -f 1 -d :) ; EQNBODY=$(echo "$data" | cut -f 2 -d \" ) ; printf "\trendering tex figure at line %s ... " "$LINE" ; tmp=$(mktemp -p /tmp) ; - echo "<figure>" > $tmp ; - echo "$EQNBODY" | sed 's/@/\\/g' | npx katex -d 2>&1 >> $tmp ; - echo "</figure>" >> $tmp ; - sed ':a;N;$!ba;s/\n//g' -i'' $tmp ; + echo "<figure>" > "$tmp" ; + echo "$EQNBODY" | sed 's/@/\\/g' | npx katex -d >> "$tmp" 2>&1 ; + echo "</figure>" >> "$tmp" ; + sed ':a;N;$!ba;s/\n//g' -i'' "$tmp" ; - if [ $(grep "KaTeX parse error" $tmp) ] ; then + if grep -q "KaTeX parse error" "$tmp" ; then printf "\n[warn] \ttex expression at line %s contained errors, skipping\n" "$LINE" ; else - sed "${LINE}d" -i'' $OUT ; - sed "$(expr $LINE - 1)r $tmp" -i'' $OUT ; + sed "${LINE}d" -i'' "$OUT" ; + sed "$(expr $LINE - 1)r $tmp" -i'' "$OUT" ; printf "complete\n" ; fi ; - rm $tmp ; + rm "$tmp" ; done # inline / "span" style: -sed 's;<img src="%itex" alt=".*" />;\n&\n;g' -i'' $OUT -grep -n '<img src="%itex"' $OUT | sed 's/\\/@/g' | \ +sed 's;<img src="%itex" alt=".*" />;\n&\n;g' -i'' "$OUT" +grep -n '<img src="%itex"' "$OUT" | sed 's/\\/@/g' | \ while IFS='' read -r data ; do LINE=$(echo "$data" | cut -f 1 -d :) ; EQNBODY=$(echo "$data" | cut -f 4 -d \" ) ; printf "\trendering inline tex figure at line %s ... " "$LINE" ; tmp=$(mktemp -p /tmp) ; - echo "$EQNBODY" | sed 's/@/\\/g' | npx katex 2>&1 > $tmp ; - sed ':a;N;$!ba;s/\n//g' -i'' $tmp ; + echo "$EQNBODY" | sed 's/@/\\/g' | npx katex > "$tmp" 2>&1 ; + sed ':a;N;$!ba;s/\n//g' -i'' "$tmp" ; - if [ $(grep "KaTeX parse error" $tmp) ] ; then + if grep -q "KaTeX parse error" "$tmp" ; then printf "\n[warn] \tinline tex expression at line %s contained errors, skipping\n" "$LINE" ; else - sed "${LINE}d" -i'' $OUT ; - sed "$(expr $LINE - 1)r $tmp" -i'' $OUT ; + sed "${LINE}d" -i'' "$OUT" ; + sed "$(expr $LINE - 1)r $tmp" -i'' "$OUT" ; printf "complete\n" ; fi ; - rm $tmp ; + rm "$tmp" ; done printf "[ok] \tmath typesetting\n" @@ -213,17 +213,17 @@ case "$opts" in toc opts=$(echo $opts | sed 's/[Cc]//g') ;; (*[Ff]*) - sed "/^<footer>/,/^<\/footer>/d" -i'' $OUT + sed "/^<footer>/,/^<\/footer>/d" -i'' "$OUT" printf "[ok] \tfooterless\n" - opts=$(echo $opts | sed 's/[Ff]//g') ;; + opts=$(echo "$opts" | sed 's/[Ff]//g') ;; (*[Hh]*) - sed -e "/^<header>/,/^<\/header>/d" -e '/^<meta name="description"/d' -i'' $OUT - sed "/bg.js/d" -i'' $OUT + sed -e "/^<header>/,/^<\/header>/d" -e '/^<meta name="description"/d' -i'' "$OUT" + sed "/bg.js/d" -i'' "$OUT" printf "[ok] \theaderless\n" - opts=$(echo $opts | sed 's/[Hh]//g') ;; + opts=$(echo "$opts" | sed 's/[Hh]//g') ;; (*[Mm]*) math - opts=$(echo $opts | sed 's/[Mm]//g') ;; + opts=$(echo "$opts" | sed 's/[Mm]//g') ;; (*) printf "[warn] \tmetadata: unrecognized option(s) \"%s\"\n" "${opts}" ;; esac @@ -18,38 +18,38 @@ set -e # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -echo '<pre>' > $2 # starting <pre> tag -echo '<!--title: Sitemap — DistressNetwork°-->' >> $2 # util for plain.sh +echo '<pre>' > "$2" # starting <pre> tag +echo '<!--title: Sitemap — DistressNetwork°-->' >> "$2" # util for plain.sh # initial tree generation -tree -dfn --noreport -I 'css|error|favicon|fonts|js|media' $1 >> $2 +tree -dfn --noreport -I 'css|error|favicon|fonts|js|media' "$1" >> "$2" # remove leading path prefix -sed 's;/var/www/distress\.network;;g' -i'' $2 +sed 's;/var/www/distress\.network;;g' -i'' "$2" # link generation loop for each line -grep -n '─ ' $2 | \ +grep -n '─ ' "$2" | \ while IFS='' read -r data ; do - LINE=$(echo $data | cut -f 1 -d :) ; # extract line number - FULL=$(echo $data | cut -f 2- -d /) ; # extract output path - NAME=$(echo $FULL | grep -o '[^/]*$') ; # extract page name (last field of path) + LINE=$(echo "$data" | cut -f 1 -d :) ; # extract line number + FULL=$(echo "$data" | cut -f 2- -d /) ; # extract output path + NAME=$(echo "$FULL" | grep -o '[^/]*$') ; # extract page name (last field of path) # at the line number, replace path with link to page - sed "${LINE}s;─ .*;──<a href=\"/${FULL}\">${NAME}</a>;" -i'' $2 ; + sed "${LINE}s;─ .*;──<a href=\"/${FULL}\">${NAME}</a>;" -i'' "$2" ; done # replace starting blank line with root link -sed '3s;.*;<a href="/" aria-label="root">·</a>;' -i'' $2 +sed '3s;.*;<a href="/" aria-label="root">·</a>;' -i'' "$2" # hide tree characters for screen readers -sed 's;^\(.\+\)<a;<span aria-hidden="true">\1</span><a;1' -i'' $2 +sed 's;^\(.\+\)<a;<span aria-hidden="true">\1</span><a;1' -i'' "$2" -echo '</pre>' >> $2 # closing <pre> tag +echo '</pre>' >> "$2" # closing <pre> tag -cat $2 +cat "$2" @@ -21,17 +21,17 @@ set -e [ "$1" ] || { echo "usage: ./plain.sh <input txt> <output html>" ; exit 1 ; } -[ -f $1 ] || { printf "[err] \tFATAL: %s not found\n" "$1" ; exit 1 ; } +[ -f "$1" ] || { printf "[err] \tFATAL: %s not found\n" "$1" ; exit 1 ; } [ -f plain-header ] || { printf "[err] \tFATAL: plain-header not found\n" ; exit 1 ; } -cat plain-header > $2 -cat $1 >> $2 -printf "</pre>\n</body>\n</html>" >> $2 +cat plain-header > "$2" +cat "$1" >> "$2" +printf "</pre>\n</body>\n</html>" >> "$2" printf "[ok] \tinitial assembly\n" # hack to fix double <pre> when generating from nav.sh -sed -e "/^<pre>$/ {n;/^<pre>$/d}" -e "/^<\/pre>$/ {n;/^<\/pre>$/d}" -i'' $2 +sed -e "/^<pre>$/ {n;/^<pre>$/d}" -e "/^<\/pre>$/ {n;/^<\/pre>$/d}" -i'' "$2" sedesc() { @@ -39,11 +39,11 @@ sedesc() { } TITLE=$(grep -e '^<!--title: ' -m 1 $1 | cut -f 2- -d ' ' | sedesc) -sed -e "/^<!--title:/d" -e "s;<title>#;<title>${TITLE};1" -i'' $2 +sed -e "/^<!--title:/d" -e "s;<title>#;<title>${TITLE};1" -i'' "$2" printf "[ok] \ttitle: %s\n" "$TITLE" -MDATE=$(stat -c '%y' $1 | sed -e 's/\.[0-9]* //' -e 's/\(..\)\(..\)$/\1:\2/') # format: "yyyy-mm-dd hh:mm:ss±zz:zz" (ISO 8601) -sed "s;<meta http-equiv=\"last-modified\" content=\";&${MDATE};1" -i'' $2 +MDATE=$(stat -c '%y' "$1" | sed -e 's/\.[0-9]* //' -e 's/\(..\)\(..\)$/\1:\2/') # format: "yyyy-mm-dd hh:mm:ss±zz:zz" (ISO 8601) +sed "s;<meta http-equiv=\"last-modified\" content=\";&${MDATE};1" -i'' "$2" printf "[ok] \tdate: %s\n" "$MDATE" @@ -4,7 +4,7 @@ set -e rebuild() { find -L distress.network | grep '/src.md' | sed 's;/src.md$;;' | \ while IFS='' read -r data ; do - sh ./md.sh ${data} > /dev/null ; + sh ./md.sh "$data" > /dev/null ; printf "\tbuilt: %s\n" "$data" ; done } @@ -25,15 +25,15 @@ urlencode() ( echo '<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" -xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' > $2 +xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' > "$2" -echo "$(find -L $1 -type d | sort | sed -e 's;^\./;;' -e '\;/\(.git\|css\|error\|favicon\|fonts\|js\|media\);d' -e 's;$;/;')" | \ +find -L "$1" -type d | sort | sed -e 's;^\./;;' -e '\;/\(.git\|css\|error\|favicon\|fonts\|js\|media\);d' -e 's;$;/;' | \ while IFS='' read -r data ; do - DATE=$(grep "last-modified" ${data}/index.html | cut -f 4 -d \" | sed 's/ /T/' ) ; + DATE=$(grep "last-modified" "${data}/index.html" | cut -f 4 -d \" | sed 's/ /T/' ) ; echo "$data" | urlencode | sed -e 's;^;<url><loc>https://;' -e "s;$;</loc><lastmod>${DATE}</lastmod></url>;" ; printf "\n" ; -done >> $2 +done >> "$2" -echo '</urlset>' >> $2 +echo '</urlset>' >> "$2" -cat $2 +cat "$2" |