2022-11-25 20:38:44 +01:00
#!/bin/sh
2022-09-08 16:31:00 +02:00
# speedwm-help
2022-08-21 11:53:18 +02:00
# Documentation generator/list for speedwm.
2022-11-25 20:38:44 +01:00
# Licensed under the GNU LGPLv3 free software license.
2022-08-21 11:53:18 +02:00
2022-11-25 20:38:44 +01:00
[ -z "${DOCDIR}" ] && DOCDIR=/usr/share/speedwm
[ -z "$PREFIX" ] && PREFIX=""
[ -z "$2" ] && VIEWER=less || VIEWER="$2"
2022-12-11 16:57:10 +01:00
[ -e "../options.mk" ] && [ -z "$VERSION" ] && VERSION="$(grep "VERSION" ../options.mk | head -n 1 | awk '{ print $3 }')"
2022-11-25 20:38:44 +01:00
[ "$VIEWER" = "-o" ] && VIEWER="cat"
2022-08-21 11:53:18 +02:00
2022-12-19 23:27:53 +01:00
[ -e "${DOCDIR}/${PREFIX}example.Xresources" ] && sed 's|\(!*\)!.*|\1|' ${DOCDIR}/${PREFIX}example.Xresources | grep -vE "!|/[*]" | grep "speedwm" > "/tmp/example.Xresources" && \
2022-11-25 20:38:44 +01:00
sed "s/speedwm[.]/- speedwm./g" /tmp/example.Xresources > /tmp/example.Xresources.tmp && \
mv /tmp/example.Xresources.tmp /tmp/example.Xresources
2022-09-08 16:19:17 +02:00
2022-11-25 20:38:44 +01:00
# full list of arguments
HELP() {
2022-12-01 19:00:08 +01:00
printf "speedwm help\n"
printf "This small shell script works with pandoc to write and display documentation for speedwm.\n"
2022-12-11 16:57:10 +01:00
printf "All displayed documentation is Markdown, and can be parsed however you want. This allows it to be really portable.\n\n\n"
2022-12-01 19:00:08 +01:00
printf "%s-h View this list of arguments.\n"
printf "%s-a View everything.\n"
printf "%s-1 What is speedwm?\n"
printf "%s-2 List of all keybinds\n"
printf "%s-3 List of all dependencies\n"
printf "%s-4 .Xresources/Pywal information.\n"
printf "%s-5 Signals information\n"
printf "%s-6 Status bar information.\n"
printf "%s-7 Installation\n"
printf "%s-8 Layouts\n"
printf "%s-9 Important details.\n"
printf "%s-10 Additional note on autostart.\n"
2023-01-24 22:07:39 +01:00
printf "%s-11 Configuring the bar.\n"
2023-01-25 16:29:53 +01:00
printf "%s-12 Keybinds.\n"
printf "%s-13 Credits.\n"
2022-12-01 19:00:08 +01:00
printf "%sNo arguments View this list of arguments.\n"
2022-11-25 20:38:44 +01:00
printf "\n"
printf "%s--generate-markdown Write documentation (Markdown)\n"
printf "%s--generate-html Write documentation (HTML) using markdown-to-html. Requires --generate-markdown previously.\n"
printf "%s--generate-man Write documentation (man) using pandoc. Requires --generate-markdown previously.\n"
printf "%s--generate-page Combine template 1, output of --generate-html and template 2 (from docs/) to create a full HTML document.\n\n"
printf "If second argument is -o, the requested output will be sent to stdout.\n-o can be replaced with a text editor or reader of your choice (such as less, vim, emacs, etc.)\n"; exit 0
}
2022-09-08 16:21:50 +02:00
2022-11-25 20:38:44 +01:00
# format man page properly
FORMATMANPAGE() {
command -v pandoc > /dev/null || exit 1
test ../README.md || exit 1
2022-08-21 11:53:18 +02:00
2022-11-25 20:38:44 +01:00
mv ../README.md ../README.md.orig
printf "%% speedwm(1) $VERSION | speedie's window manager.\n" > ../README.md
2022-12-11 16:57:10 +01:00
grep -v "docs/preview" ../README.md.orig >> ../README.md
2022-12-19 23:27:53 +01:00
2022-11-25 20:38:44 +01:00
pandoc --standalone --to man ../README.md -o ../speedwm.1
2022-08-21 11:53:18 +02:00
2022-11-25 20:38:44 +01:00
printf "Man page generated at ../speedwm.1.\n"
2022-08-21 11:53:18 +02:00
2022-12-01 19:00:08 +01:00
mv ../README.md.orig ../README.md && exit 0
exit 1
}
# format html page properly
FORMATHTMLPAGE() {
command -v pandoc > /dev/null || exit 1
test ../README.md || exit 1
mv ../README.md ../README.md.orig
2022-12-11 16:57:10 +01:00
grep -v "docs/preview" ../README.md.orig > ../README.md
2022-12-01 19:00:08 +01:00
rm -f ../README.md.orig
pandoc -f markdown -t html5 -o ../readme.html "../README.md" && exit 0
exit 1
}
# format page properly
FORMATPAGE() {
2022-12-11 16:57:10 +01:00
test ../readme.html && cat ../docs/speedwm.html.template.1 ../readme.html ../docs/speedwm.html.template.2 >> ../readme.temp.html && exit 0 || printf "You need to %s --generate-html first." "$0"
2022-12-01 19:00:08 +01:00
exit 1
}
# format markdown properly
FORMATMD() {
2022-12-11 16:57:10 +01:00
mv "/tmp/${PREFIX}doc" ../README.md && exit 0
2022-12-01 19:00:08 +01:00
exit 1
2022-11-25 20:38:44 +01:00
}
2022-10-24 17:49:30 +02:00
2022-11-25 20:38:44 +01:00
# write docs
2023-01-25 16:29:53 +01:00
cat "${DOCDIR}/${PREFIX}doc-01.md" \
"${DOCDIR}/${PREFIX}doc-02.md" \
"${DOCDIR}/${PREFIX}doc-03.md" \
"${DOCDIR}/${PREFIX}doc-04.md" \
2022-12-11 16:57:10 +01:00
"${DOCDIR}/${PREFIX}keybinds" \
2023-01-25 16:29:53 +01:00
"${DOCDIR}/${PREFIX}dependencies.md" \
"${DOCDIR}/${PREFIX}doc-05.md" \
"${DOCDIR}/${PREFIX}doc-06.md" \
2022-12-11 16:57:10 +01:00
"/tmp/example.Xresources" \
2023-01-25 16:29:53 +01:00
"${DOCDIR}/${PREFIX}doc-07.md" \
2022-12-11 16:57:10 +01:00
"${DOCDIR}/${PREFIX}example.signal" \
2023-01-25 16:29:53 +01:00
"${DOCDIR}/${PREFIX}doc-08.md" \
"${DOCDIR}/${PREFIX}doc-09.md" \
"${DOCDIR}/${PREFIX}doc-10.md" \
"${DOCDIR}/${PREFIX}doc-11.md" \
"${DOCDIR}/${PREFIX}credits.md" | \
2022-12-11 16:57:10 +01:00
grep -v "!!" > "/tmp/${PREFIX}doc"
2022-08-21 11:53:18 +02:00
2022-11-25 20:38:44 +01:00
# check arguments and perform actions based on it
case "$1" in
2022-12-01 19:00:08 +01:00
"--generate-markdown") FORMATMD ;;
"--generate-html") FORMATHTMLPAGE ;;
"--generate-page") FORMATPAGE ;;
"--generate-man") FORMATMANPAGE ;;
2022-08-21 11:53:18 +02:00
"") $0 -h && exit 0 ;;
2022-11-25 20:38:44 +01:00
"-h") HELP && exit 0 ;;
"--help") HELP && exit 0 ;;
2023-01-25 16:29:53 +01:00
"-1") tail -n +4 "${DOCDIR}/${PREFIX}doc-01.md" > /tmp/stdout ; $VIEWER /tmp/stdout ; exit 0 ;;
"-2") cat "${DOCDIR}/${PREFIX}doc-04.md" "${DOCDIR}/${PREFIX}keybinds" > "/tmp/stdout" ; $VIEWER "/tmp/stdout" ; exit 0 ;;
"-3") cat "${DOCDIR}/${PREFIX}dependencies.md" > /tmp/stdout ; $VIEWER /tmp/stdout ; exit 0 ;;
"-4") cat "${DOCDIR}/${PREFIX}doc-06.md" "/tmp/example.Xresources" > /tmp/stdout ; $VIEWER /tmp/stdout ; exit 0 ;;
"-5") cat "${DOCDIR}/${PREFIX}doc-07.md" "${DOCDIR}/${PREFIX}example.signal" > /tmp/stdout ; $VIEWER /tmp/stdout ; exit 0 ;;
"-6") cat "${DOCDIR}/${PREFIX}doc-08.md" > /tmp/stdout ; $VIEWER /tmp/stdout ; exit 0 ;;
"-7") cat "${DOCDIR}/${PREFIX}doc-02.md" > /tmp/stdout ; $VIEWER /tmp/stdout ; exit 0 ;;
"-8") cat "${DOCDIR}/${PREFIX}doc-03.md" > /tmp/stdout ; $VIEWER /tmp/stdout ; exit 0 ;;
"-9") cat "${DOCDIR}/${PREFIX}doc-05.md" > /tmp/stdout ; $VIEWER /tmp/stdout ; exit 0 ;;
"-10") cat "${DOCDIR}/${PREFIX}doc-09.md" > /tmp/stdout ; $VIEWER /tmp/stdout ; exit 0 ;;
"-11") cat "${DOCDIR}/${PREFIX}doc-10.md" > /tmp/stdout ; $VIEWER /tmp/stdout ; exit 0 ;;
"-12") cat "${DOCDIR}/${PREFIX}doc-11.md" > /tmp/stdout ; $VIEWER /tmp/stdout ; exit 0 ;;
"-13") cat "${DOCDIR}/${PREFIX}credits.md" > /tmp/stdout ; $VIEWER /tmp/stdout ; exit 0 ;;
2022-12-11 16:57:10 +01:00
"-a") cat "/tmp/${PREFIX}doc" > /tmp/stdout ; $VIEWER /tmp/stdout ; exit 0 ;;
2022-08-21 11:53:18 +02:00
esac
2022-11-25 20:38:44 +01:00
2022-12-11 16:57:10 +01:00
printf "Unknown argument: '%s'.\n" "$1"
2022-11-25 20:38:44 +01:00
exit 1