From 98712eadc99781315881a8a478ddf28020b849ba Mon Sep 17 00:00:00 2001 From: Hayden Hamilton Date: Sat, 13 Jun 2026 09:17:50 +0100 Subject: Breadcrumb links for stagit repos --- README | 5 +++-- repo/hooks/post-receive | 3 +-- www/generate/breadcrumb | 24 ++++++++++++---------- www/generate/src/all | 9 ++++++++ www/generate/src/stagit-breadcrumb | 42 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 68 insertions(+), 15 deletions(-) create mode 100755 www/generate/src/all create mode 100755 www/generate/src/stagit-breadcrumb diff --git a/README b/README index eb4aba2..f1d05c4 100644 --- a/README +++ b/README @@ -31,8 +31,9 @@ www/chroot: www/generate/src: These scripts generate content in /var/www/htdocs/src.hhvn.uk - - gomod: generates go.mod glue code - - stagit: calls stagit + - gomod: generates go.mod glue code + - stagit: calls stagit + - stagit-breadcrumb: rewrites all stagit files to use www/generate/breadcrumb repo: These scrips manage /var/git diff --git a/repo/hooks/post-receive b/repo/hooks/post-receive index e52c668..858ae4e 100755 --- a/repo/hooks/post-receive +++ b/repo/hooks/post-receive @@ -1,4 +1,3 @@ #!/bin/rc -www/generate/src/stagit -www/generate/src/gomod +www/generate/src/all diff --git a/www/generate/breadcrumb b/www/generate/breadcrumb index 6b9f821..0f7e1f8 100755 --- a/www/generate/breadcrumb +++ b/www/generate/breadcrumb @@ -27,18 +27,20 @@ if (! ~ $subdomain ()) { curi = '' for (e in $elems) { - # special case for stagit - if (~ $subdomain src && ~ $e log.html) { - exit 0 - } + if (!~ $e '.') { + # special case for stagit + if (~ $subdomain src && ~ $e log.html) { + exit 0 + } - # we're done - if (~ $e index.html) { - exit 0 - } + # we're done + if (~ $e index.html) { + exit 0 + } - curi = $curi ^ '/' ^ $e + curi = $curi ^ '/' ^ $e - text ' > ' - plink $curi `$nl{echo $e | sed 's/\.html$//'} + text ' > ' + plink $curi `$nl{echo $e | sed 's/\.html$//'} + } } diff --git a/www/generate/src/all b/www/generate/src/all new file mode 100755 index 0000000..595b3f5 --- /dev/null +++ b/www/generate/src/all @@ -0,0 +1,9 @@ +#!/bin/rc + +wwwdir = /var/www/htdocs/src.hhvn.uk +newer = $wwwdir/.newer + +touch $newer +www/generate/src/stagit +www/generate/src/stagit-breadcrumb $newer +www/generate/src/gomod diff --git a/www/generate/src/stagit-breadcrumb b/www/generate/src/stagit-breadcrumb new file mode 100755 index 0000000..8dabc2d --- /dev/null +++ b/www/generate/src/stagit-breadcrumb @@ -0,0 +1,42 @@ +#!/bin/rc +# +# This script is very slow. +# Hence the option to use find's -newer. +# A file can be created before stagit runs, +# and this script will only modify files created after. +# +# stagit will not modify files in the commit/ dir once created +# It does however recreate everything at HEAD. +# This isn't ideal. +# +# Most of the time taken in this script is most likely NOT cpu time. +# It may be a good idea to run the main loop portion of this script in parallel. + +wwwdir = /var/www/htdocs/src.hhvn.uk +newer = $1 +cd $wwwdir + +if (!~ $newer ()) { + fargs = (-newer $1) +} + +fn breadcrumb { + printf %s '

' + www/generate/breadcrumb $* | sed 's~&~\\\\\&~g' + printf %s '

' +} + +files = `$nl{find . $fargs -type f -name '*.html'} +estatus = 0 +for (f in $files) { + printf %s 'BREADCRUMB ' ^ $f ^ '... ' + breadcrumb = `''{breadcrumb $f hhvn.uk src} + awk -v breadcrumb=$breadcrumb '{ sub(/

.*<\/h1>/, breadcrumb); sub(/Repositories<\/span>/, breadcrumb) }1' < $f > $f.awk + if (~ $status 0) { + echo success + mv $f.awk $f + } else { + rm $f.awk + estatus = $status + } +} -- cgit v1.2.3