[wiki] [sites] ./make: add missing directory listing || Josuah Demangeon

From: <git_AT_suckless.org>
Date: Thu, 06 Sep 2018 00:47:42 +0200

commit 9aa693f20a928ba8a8f03f6e068ff6bd8ceed9e4
Author: Josuah Demangeon <mail_AT_josuah.net>
Date: Thu Sep 6 00:45:57 2018 +0200

    ./make: add missing directory listing
    
    The previous verision did not handle directories without a index.md
    file in. This version recurse over each directory instead of each
    markdown file so that even empty directories get an "ls page".
    
    Also, a scheme is added in front of the blue nav bar links so that
    they do not get treated as relative links but rather absolute links.

diff --git a/make b/make
index 3b2f03b3..fdba9b73 100755
--- a/make
+++ b/make
_AT_@ -16,9 +16,8 @@ nav() {
         do
                 test -d "$2/$dir" || continue
                 test -z "${1##$2/$dir/*?}" && match=' class="thisPage"' || match=
- printf '<li><a%s href="%s">' "$match" "$2/$dir"
- printf %s "$dir" | tr _- ' '
- printf '/</a>'
+ printf '<li><a%s href="%s">' "$match" "//$2/$dir/"
+ printf '%s/</a>' "$dir" | tr _- ' '
                 if test "$match"
                 then
                         printf '<ul>
'
_AT_@ -29,14 +28,20 @@ nav() {
         done
 }
 
-find * -name '*.md' | while IFS='' read -r page
+find * -type d | while IFS='' read -r page
 do
+ exec >$page/index.html
+ page="$page/index.md"
         this_domain="${page%%/*}"
         printf 'Generating %s
' "$page" 1>&2
- exec >${page%.md}.html
 
         # header
- title=$(sed 's,^#* *,,; q' "$page")
+ if test -f "$page"
+ then
+ title=$(sed 's,^#* *,,; q' "$page")
+ else
+ title=$(basename "$(dirname "$page")")
+ fi
         awk -v title="$title" -v subtitle="$(cat "$this_domain/title")" \
                 '{ gsub("%t", title); gsub("%s", subtitle); print; }' head.html
 
_AT_@ -44,7 +49,7 @@ do
         printf '<div id="menu">
'
         while IFS='' read -r domain
         do
- printf '<a href="%s"' "//${page%.md}.html"
+ printf '<a href="%s"' "//$domain"
                 test "$this_domain" = "$domain" && printf ' class="thisSite"'
                 printf '">%s</a>
' "${domain%%.*}"
         done <domains
_AT_@ -62,7 +67,20 @@ do
 
         # main
         printf '<div id="main">
'
- smu "$page"
+ if test -f "$page"
+ then
+ smu "$page"
+ else
+ printf '<ul>
'
+ ls "${page%/index.md}" | while IFS='' read -r dir
+ do
+ path=${page%/index.md}/$dir/
+ test -d "$path" || continue
+ printf '<li><a href="%s">' "//$path"
+ printf '%s</a></li>
' "$dir" | tr _- ' '
+ done
+ printf '</ul>
'
+ fi
         printf '</div>

'
 
         printf '</div>

' # end of id="content"
Received on Thu Sep 06 2018 - 00:47:42 CEST

This archive was generated by hypermail 2.3.0 : Thu Sep 06 2018 - 00:48:27 CEST