summary refs log tree commit diff
path: root/www/git.causal.agency/source-filter.sh
diff options
context:
space:
mode:
Diffstat (limited to 'www/git.causal.agency/source-filter.sh')
-rw-r--r--www/git.causal.agency/source-filter.sh25
1 files changed, 25 insertions, 0 deletions
diff --git a/www/git.causal.agency/source-filter.sh b/www/git.causal.agency/source-filter.sh
new file mode 100644
index 00000000..514272db
--- /dev/null
+++ b/www/git.causal.agency/source-filter.sh
@@ -0,0 +1,25 @@
+#!/bin/sh
+set -eu
+
+ctags=/usr/bin/ctags
+mtags=/usr/local/libexec/mtags
+hilex=/usr/local/libexec/hilex
+htagml=/usr/local/libexec/htagml
+
+case "$1" in
+	(*.[chlmy]|Makefile|*.mk|*.[1-9]|.profile|.shrc|*.sh)
+		tmp=$(mktemp -d -t source-filter)
+		trap 'rm -fr "${tmp}"' EXIT
+		cd "${tmp}"
+		cat >"$1"
+		touch tags
+		case "$1" in
+			(*.[chlmy]) $ctags -w "$1";;
+			(*) $mtags "$1";;
+		esac
+		$hilex -f html "$1" | $htagml -i "$1"
+		;;
+	(*)
+		exec $hilex -t -n "$1" -f html
+		;;
+esac