dot

packages and services management
Log | Files | Refs | README

commit 87b992ad38c1ef4b2f11ae43442bdc25e1fcb1cb
parent b06949b8d82621315b12b5f38ea05d59fafeec71
Author: josuah <mail@josuah.net>
Date:   Sat, 24 Sep 2016 23:48:37 -0400

Updated www

Diffstat:
Mbin/fig | 614++++++++++++++++++++++++++++++++++++++++---------------------------------------
Mbin/www | 64++++++++++++++++++++++++++++++++++++++--------------------------
2 files changed, 346 insertions(+), 332 deletions(-)

diff --git a/bin/fig b/bin/fig @@ -7,319 +7,321 @@ #===========\__,-"============================================================== # Figlet without all the bells and fanciness. -for word in $@ +[ $# = 0 ] && read -r line || for word in $@ do line="$line $word" done +line="$(printf '%s\n' "$line" | tr [A-Z] [a-z])" + IFS=' ' for char in $(printf %s "${line# }" | fold -w 1) do case "$char" in - a) - l1="$l1"' ' - l2="$l2"' _____ ' - l3="$l3"".'__ /" - l4="$l4"'/ /_/ /' - l5="$l5"' \____/' - l6="$l6"' ' - ;; - b) - l1="$l1"'/\ ' - l2="$l2"'/ /_ ' - l3="$l3"'/ __ \ ' - l4="$l4"'/ /_/ /' - l5="$l5"' \____/' - l6="$l6"' ' - ;; - c) - l1="$l1"' ' - l2="$l2"'____ ' - l3="$l3"'/ ___\ ' - l4="$l4"'/ /__ ' - l5="$l5"' \____\' - l6="$l6"' ' - ;; - d) - l1="$l1"' /\ ' - l2="$l2"' ___/ /' - l3="$l3"".'__ /" - l4="$l4"'/ /_/ /' - l5="$l5"' \____/' - l6="$l6"' ' - ;; - e) - l1="$l1"' ' - l2="$l2"' ___ ' - l3="$l3"".'__ \\ " - l4="$l4"'/ ____/' - l5="$l5"' \___\ ' - l6="$l6"' ' - ;; - f) - l1="$l1"' ____ ' - l2="$l2"".' ___\\" - l3="$l3""/ .'_ " - l4="$l4"'/ ___/ ' - l5="$l5"' \/ ' - l6="$l6"' ' - ;; - g) - l1="$l1"' ' - l2="$l2"' _____ ' - l3="$l3"".'__ /" - l4="$l4"'/ /_/ /' - l5="$l5"'_\__ /' - l6="$l6"' \__,-"' - ;; - h) - l1="$l1"'/\ ' - l2="$l2"'/ /_ ' - l3="$l3"'/ __ \ ' - l4="$l4"'/ / / /' - l5="$l5"' \/ \/' - l6="$l6"' ' - ;; - i) - l1="$l1"'__ ' - l2="$l2"' \/ ' - l3="$l3"' /\ ' - l4="$l4"' / /' - l5="$l5"' \/' - l6="$l6"' ' - ;; - j) - l1="$l1"' __ ' - l2="$l2"' \/ ' - l3="$l3"' /\ ' - l4="$l4"' / /' - l5="$l5"'_,-" /' - l6="$l6"' \_,-"' - ;; - k) - l1="$l1"'/\ ' - l2="$l2"'/ / __ ' - l3="$l3""/ /,','" - l4="$l4""/ ,' " - l5="$l5"' \/\_\ ' - l6="$l6"' ' - ;; - l) - l1="$l1"'/\ ' - l2="$l2"'/ /' - l3="$l3"'/ /' - l4="$l4"'/ /' - l5="$l5"' \/' - l6="$l6"' ' - ;; - m) - l1="$l1"' ' - l2="$l2"'________ ' - l3="$l3"'/ __ __ \ ' - l4="$l4"'/ / / / / /' - l5="$l5"' \/ \/ \/' - l6="$l6"' ' - ;; - n) - l1="$l1"' ' - l2="$l2"'____ ' - l3="$l3"'/ __ \ ' - l4="$l4"'/ / / /' - l5="$l5"' \/ \/' - l6="$l6"' ' - ;; - o) - l1="$l1"' ' - l2="$l2"'____ ' - l3="$l3"'/ __ \ ' - l4="$l4"'/ /_/ /' - l5="$l5"' \____/' - l6="$l6"' ' - ;; - p) - l1="$l1"' ' - l2="$l2"'____ ' - l3="$l3"'/ __ \ ' - l4="$l4"'/ /_/ /' - l5="$l5"'/ ____/' - l6="$l6"' \/ ' - ;; - q) - l1="$l1"' ' - l2="$l2"' _____ ' - l3="$l3"".'__ /" - l4="$l4"'/ /_/ /' - l5="$l5"' \__ /' - l6="$l6"' \/' - ;; - r) - l1="$l1"' ' - l2="$l2"'_____ ' - l3="$l3"'/ ____\' - l4="$l4"'/ / ' - l5="$l5"' \/ ' - l6="$l6"' ' - ;; - s) - l1="$l1"' ' - l2="$l2"' ____ ' - l3="$l3"' / __/' - l4="$l4"'__\ \ ' - l5="$l5"' \___/' - l6="$l6"' ' - ;; - t) - l1="$l1"'/\ ' - l2="$l2"'/ /_ ' - l3="$l3"'/ ___\' - l4="$l4"'/ / ' - l5="$l5"' \/ ' - l6="$l6"' ' - ;; - u) - l1="$l1"' ' - l2="$l2"'__ /\ ' - l3="$l3"'/ / / /' - l4="$l4"'/ /_/ /' - l5="$l5"' \____/' - l6="$l6"' ' - ;; - v) - l1="$l1"' ' - l2="$l2"'__ /\ ' - l3="$l3"'/ / / /' - l4="$l4"' \ \/ /' - l5="$l5"" \\_,'" - l6="$l6"' ' - ;; - w) - l1="$l1"' ' - l2="$l2"'__ /\ ' - l3="$l3"'/ /\/ /' - l4="$l4"'/ / / /' - l5="$l5"' \____/' - l6="$l6"' ' - ;; - x) - l1="$l1"' ' - l2="$l2"'__ __ ' - l3="$l3"" \\ \\' /" - l4="$l4"" ,' ,'" - l5="$l5"" /_,\\_\\" - l6="$l6"' ' - ;; - y) - l1="$l1"' ' - l2="$l2"'__ /\ ' - l3="$l3"'/ / / /' - l4="$l4"' \ \/ /' - l5="$l5"' __\ /' - l6="$l6"" \\_,-'" - ;; - z) - l1="$l1"' ' - l2="$l2"'______ ' - l3="$l3"'/__ /' - l4="$l4"",-' _-'" - l5="$l5"'/_____\' - l6="$l6"' ' - ;; - ' ') - l1="$l1"' ' - l2="$l2"' ' - l3="$l3"' ' - l4="$l4"' ' - l5="$l5"' ' - l6="$l6"' ' - ;; - .) - l1="$l1"' ' - l2="$l2"' ' - l3="$l3"' ' - l4="$l4"'__ ' - l5="$l5"' \/' - l6="$l6"' ' - ;; - 0) - l1="$l1"' ___ ' - l2="$l2"".'__ \ " - l3="$l3"'/ / / /' - l4="$l4"'/ /_/ /' - l5="$l5"" \\___,'" - l6="$l6"' ' - ;; - 1) - l1="$l1"' __ ' - l2="$l2"".-' / " - l3="$l3"' / / ' - l4="$l4"' _/ / ' - l5="$l5"' /___/' - l6="$l6"' ' - ;; - 2) - l1="$l1"'____ ' - l2="$l2"'/___ \ ' - l3="$l3"" .-' /" - l4="$l4"".-' _-'" - l5="$l5"'/_____\' - l6="$l6"' ' - ;; - 3) - l1="$l1"'____ ' - l2="$l2"'/___ \ ' - l3="$l3"" .'.-'" - l4="$l4"'___\ \ ' - l5="$l5""/___,-'" - l6="$l6"' ' - ;; - 4) - l1="$l1"'__ ' - l2="$l2"'/ /__ ' - l3="$l3"'/ // / ' - l4="$l4"'/__ _/' - l5="$l5"' /_/ ' - l6="$l6"' ' - ;; - 5) - l1="$l1"'______ ' - l2="$l2"'/ ____/' - l3="$l3"' `-.`. ' - l4="$l4"'____/ /' - l5="$l5""/____,'" - l6="$l6"' ' - ;; - 6) - l1="$l1"' ____ ' - l2="$l2"".'___/ " - l3="$l3"'/ /_ ' - l4="$l4"'/ __ \ ' - l5="$l5"" \\___,'" - l6="$l6"' ' - ;; - 7) - l1="$l1"'______ ' - l2="$l2"'/___ /' - l3="$l3"' / /' - l4="$l4"' / /' - l5="$l5"' /_/' - l6="$l6"' ' - ;; - 8) - l1="$l1"' ___ ' - l2="$l2"".'__ \\ " - l3="$l3"'/ /_/ /' - l4="$l4"'/ /_/ /' - l5="$l5"" \___,'" - l6="$l6"' ' - ;; - 9) - l1="$l1"' ___ ' - l2="$l2"".'__ \\ " - l3="$l3"' \__ /' - l4="$l4"' ___/ /' - l5="$l5"" \\___,'" - l6="$l6"' ' - ;; + a) + l1="$l1"' ' + l2="$l2"' _____ ' + l3="$l3"".'__ /" + l4="$l4"'/ /_/ /' + l5="$l5"' \____/' + l6="$l6"' ' + ;; + b) + l1="$l1"'/\ ' + l2="$l2"'/ /_ ' + l3="$l3"'/ __ \ ' + l4="$l4"'/ /_/ /' + l5="$l5"' \____/' + l6="$l6"' ' + ;; + c) + l1="$l1"' ' + l2="$l2"'____ ' + l3="$l3"'/ ___\ ' + l4="$l4"'/ /__ ' + l5="$l5"' \____\' + l6="$l6"' ' + ;; + d) + l1="$l1"' /\ ' + l2="$l2"' ___/ /' + l3="$l3"".'__ /" + l4="$l4"'/ /_/ /' + l5="$l5"' \____/' + l6="$l6"' ' + ;; + e) + l1="$l1"' ' + l2="$l2"' ___ ' + l3="$l3"".'__ \\ " + l4="$l4"'/ ____/' + l5="$l5"' \___\ ' + l6="$l6"' ' + ;; + f) + l1="$l1"' ____ ' + l2="$l2"".' ___\\" + l3="$l3""/ .'_ " + l4="$l4"'/ ___/ ' + l5="$l5"' \/ ' + l6="$l6"' ' + ;; + g) + l1="$l1"' ' + l2="$l2"' _____ ' + l3="$l3"".'__ /" + l4="$l4"'/ /_/ /' + l5="$l5"'_\__ /' + l6="$l6"" \\__,-'" + ;; + h) + l1="$l1"'/\ ' + l2="$l2"'/ /_ ' + l3="$l3"'/ __ \ ' + l4="$l4"'/ / / /' + l5="$l5"' \/ \/' + l6="$l6"' ' + ;; + i) + l1="$l1"'__ ' + l2="$l2"' \/ ' + l3="$l3"' /\ ' + l4="$l4"' / /' + l5="$l5"' \/' + l6="$l6"' ' + ;; + j) + l1="$l1"' __ ' + l2="$l2"' \/ ' + l3="$l3"' /\ ' + l4="$l4"' / /' + l5="$l5"'_,-" /' + l6="$l6"' \_,-"' + ;; + k) + l1="$l1"'/\ ' + l2="$l2"'/ / __ ' + l3="$l3""/ /,','" + l4="$l4""/ ,' " + l5="$l5"' \/\_\ ' + l6="$l6"' ' + ;; + l) + l1="$l1"'/\ ' + l2="$l2"'/ /' + l3="$l3"'/ /' + l4="$l4"'/ /' + l5="$l5"' \/' + l6="$l6"' ' + ;; + m) + l1="$l1"' ' + l2="$l2"'________ ' + l3="$l3"'/ __ __ \ ' + l4="$l4"'/ / / / / /' + l5="$l5"' \/ \/ \/' + l6="$l6"' ' + ;; + n) + l1="$l1"' ' + l2="$l2"'____ ' + l3="$l3"'/ __ \ ' + l4="$l4"'/ / / /' + l5="$l5"' \/ \/' + l6="$l6"' ' + ;; + o) + l1="$l1"' ' + l2="$l2"'____ ' + l3="$l3"'/ __ \ ' + l4="$l4"'/ /_/ /' + l5="$l5"' \____/' + l6="$l6"' ' + ;; + p) + l1="$l1"' ' + l2="$l2"'____ ' + l3="$l3"'/ __ \ ' + l4="$l4"'/ /_/ /' + l5="$l5"'/ ____/' + l6="$l6"' \/ ' + ;; + q) + l1="$l1"' ' + l2="$l2"' _____ ' + l3="$l3"".'__ /" + l4="$l4"'/ /_/ /' + l5="$l5"' \__ /' + l6="$l6"' \/' + ;; + r) + l1="$l1"' ' + l2="$l2"'_____ ' + l3="$l3"'/ ____\' + l4="$l4"'/ / ' + l5="$l5"' \/ ' + l6="$l6"' ' + ;; + s) + l1="$l1"' ' + l2="$l2"' ____ ' + l3="$l3"' / __/' + l4="$l4"'__\ \ ' + l5="$l5"' \___/' + l6="$l6"' ' + ;; + t) + l1="$l1"'/\ ' + l2="$l2"'/ /_ ' + l3="$l3"'/ ___\' + l4="$l4"'/ / ' + l5="$l5"' \/ ' + l6="$l6"' ' + ;; + u) + l1="$l1"' ' + l2="$l2"'__ /\ ' + l3="$l3"'/ / / /' + l4="$l4"'/ /_/ /' + l5="$l5"' \____/' + l6="$l6"' ' + ;; + v) + l1="$l1"' ' + l2="$l2"'__ /\ ' + l3="$l3"'/ / / /' + l4="$l4"' \ \/ /' + l5="$l5"" \\_,'" + l6="$l6"' ' + ;; + w) + l1="$l1"' ' + l2="$l2"'__ /\ ' + l3="$l3"'/ /\/ /' + l4="$l4"'/ / / /' + l5="$l5"' \____/' + l6="$l6"' ' + ;; + x) + l1="$l1"' ' + l2="$l2"'__ __ ' + l3="$l3"" \\ \\' /" + l4="$l4"" ,' ,'" + l5="$l5"" /_,\\_\\" + l6="$l6"' ' + ;; + y) + l1="$l1"' ' + l2="$l2"'__ /\ ' + l3="$l3"'/ / / /' + l4="$l4"' \ \/ /' + l5="$l5"' __\ /' + l6="$l6"" \\_,-'" + ;; + z) + l1="$l1"' ' + l2="$l2"'______ ' + l3="$l3"'/__ /' + l4="$l4"",-' _-'" + l5="$l5"'/_____\' + l6="$l6"' ' + ;; + ' ') + l1="$l1"' ' + l2="$l2"' ' + l3="$l3"' ' + l4="$l4"' ' + l5="$l5"' ' + l6="$l6"' ' + ;; + .) + l1="$l1"' ' + l2="$l2"' ' + l3="$l3"' ' + l4="$l4"'__ ' + l5="$l5"' \/' + l6="$l6"' ' + ;; + 0) + l1="$l1"' ___ ' + l2="$l2"".'__ \ " + l3="$l3"'/ / / /' + l4="$l4"'/ /_/ /' + l5="$l5"" \\___,'" + l6="$l6"' ' + ;; + 1) + l1="$l1"' __ ' + l2="$l2"".-' / " + l3="$l3"' / / ' + l4="$l4"' _/ / ' + l5="$l5"' /___/' + l6="$l6"' ' + ;; + 2) + l1="$l1"'____ ' + l2="$l2"'/___ \ ' + l3="$l3"" .-' /" + l4="$l4"".-' _-'" + l5="$l5"'/_____\' + l6="$l6"' ' + ;; + 3) + l1="$l1"'____ ' + l2="$l2"'/___ \ ' + l3="$l3"" .'.-'" + l4="$l4"'___\ \ ' + l5="$l5""/___,-'" + l6="$l6"' ' + ;; + 4) + l1="$l1"'__ ' + l2="$l2"'/ /__ ' + l3="$l3"'/ // / ' + l4="$l4"'/__ _/' + l5="$l5"' /_/ ' + l6="$l6"' ' + ;; + 5) + l1="$l1"'______ ' + l2="$l2"'/ ____/' + l3="$l3"' `-.`. ' + l4="$l4"'____/ /' + l5="$l5""/____,'" + l6="$l6"' ' + ;; + 6) + l1="$l1"' ____ ' + l2="$l2"".'___/ " + l3="$l3"'/ /_ ' + l4="$l4"'/ __ \ ' + l5="$l5"" \\___,'" + l6="$l6"' ' + ;; + 7) + l1="$l1"'______ ' + l2="$l2"'/___ /' + l3="$l3"' / /' + l4="$l4"' / /' + l5="$l5"' /_/' + l6="$l6"' ' + ;; + 8) + l1="$l1"' ___ ' + l2="$l2"".'__ \\ " + l3="$l3"'/ /_/ /' + l4="$l4"'/ /_/ /' + l5="$l5"" \___,'" + l6="$l6"' ' + ;; + 9) + l1="$l1"' ___ ' + l2="$l2"".'__ \\ " + l3="$l3"' \__ /' + l4="$l4"' ___/ /' + l5="$l5"" \\___,'" + l6="$l6"' ' + ;; esac done unset IFS @@ -330,5 +332,5 @@ unset IFS printf ' %s\n' "$l3" printf ' %s\n' "$l4" printf ' %s\n' "$l5" - printf '%s\n' "$l6" + printf '%s\n' "$l6" | tr ' ' '=' } | sed 's/ *$//' diff --git a/bin/www b/bin/www @@ -43,7 +43,7 @@ FILE FORMAT parse() { - local item="$1" input="$2" nav="$3" + local item="$1" input="$2" root="$3" # Print the input up to the next keyword, and shift position in input printf %s "${input%%{{*}" @@ -52,22 +52,40 @@ parse() # Execute the keyword and print its output. case "${input%%\}\}*}" in - *content* ) [ -f "$item/README" ] && cat "$item/README" ;; - *list* ) list "$item" ;; - *nav* ) parse "$item" "$nav" ;; - *root* ) printf %s "$item/" | sed 's/[^/]//g; s/\//..\//g; s/$/./' ;; - *title* ) printf %s "$item" | sed 's/\// > /g' ;; + *content* ) [ -f "$item/README"* ] && cat "$item/README"* ;; + *list* ) [ -z "$root" ] && list "$item" ;; + *nav* ) parse "$item" "$(nav)" "$root" ;; + *title* ) printf %s "$item" | sed 's/\// > /g' ;; + *root* ) + if [ -z "$root" ] + then printf %s "$item/" | sed 's/[^/]//g; s/\//..\//g; s/\/$//' + else printf '.' + fi + ;; esac - parse "$item" "${input#*\}\}}" "$nav" + parse "$item" "${input#*\}\}}" "$root" } list() { + printf '<ul>\n' + find "$1" -mindepth 1 -maxdepth 1 ! -name 'README' \ | sort \ | while read -r path - do printf '<a href="%s">%s</a>\n' "${path#$1/}" "${path#$1/}" + do printf '<li><a href="%s">%s</a></li>\n' "${path#$1/}" "${path#$1/}" + done + + printf '</ul>\n' +} + +nav() +{ + find . -mindepth 1 -maxdepth 1 -type d ! -path '*/.*' \ + | sort \ + | while read -r dir + do printf ' | <a href="{{ root }}/%s">%s</a>' "${dir#./}" "${dir#./}" done } @@ -76,24 +94,18 @@ then OUT="$2" else printf '%s\n' "$help" && exit 0 fi -# Generate navigation -IFS="$NL" nav='<a href="..">&lt;&lt;&lt;</a>' -for dir in $(find . -mindepth 1 -maxdepth 1 -type d ! -path '*/.*' | sort) -do nav="$nav$NL<a href=\"{{ root }}/${dir#./}\">${dir#./}</a> |" -done -unset IFS -nav="${nav% |}" +# Remove $OUT's files but not hidden files. +mkdir -p "$OUT" +rm -r "$OUT/"* # Create pages from directory structure, copy static files -mkdir -p "$OUT" -rm -r "$OUT"/* -find . -mindepth 1 ! -path '*/.*' ! -name 'README' | while read path -do path="${path#./}" - if [ -d "$path" ] - then - mkdir -p "$OUT/$path" - parse "$path" "$(cat "$LAYOUT")" "$nav" > "$OUT/$path/index.html" - else - cp "$path" "$OUT/$path" - fi +find . -mindepth 1 ! -path '*/.*' ! -name 'README' -type d | while read -r path +do + mkdir -p "$OUT/$path" + parse "${path#./}" "$(cat "$LAYOUT")" > "$OUT/$path/index.html" done + +find . ! -path '*/.*' ! -name 'README' -type f -exec cp {} "$OUT/{}" \; + +# Create home page +parse '.' "$(cat "$LAYOUT")" root > "$OUT/index.html"