aboutsummaryrefslogtreecommitdiffstats
path: root/roles/git/files/cgit/syntax-highlighting.sh
diff options
context:
space:
mode:
Diffstat (limited to 'roles/git/files/cgit/syntax-highlighting.sh')
-rw-r--r--roles/git/files/cgit/syntax-highlighting.sh75
1 files changed, 75 insertions, 0 deletions
diff --git a/roles/git/files/cgit/syntax-highlighting.sh b/roles/git/files/cgit/syntax-highlighting.sh
new file mode 100644
index 0000000..b3ef6c6
--- /dev/null
+++ b/roles/git/files/cgit/syntax-highlighting.sh
@@ -0,0 +1,75 @@
+#!/bin/sh
+#
+# Credit:
+# * ArchWiki - cgit
+# https://wiki.archlinux.org/index.php/Cgit
+#
+# Aaron LI
+# 2017-06-19
+#
+
+#
+# This script can be used to implement syntax highlighting in the cgit
+# tree-view by refering to this file with the source-filter or repo.source-
+# filter options in cgitrc.
+#
+# This script requires a shell supporting the ${var##pattern} syntax.
+# It is supported by at least dash and bash, however busybox environments
+# might have to use an external call to sed instead.
+#
+# Note: the highlight command (http://www.andre-simon.de/) uses css for syntax
+# highlighting, so you'll probably want something like the following included
+# in your css file:
+#
+# Style definition file generated by highlight 3.13, http://www.andre-simon.de/
+#
+# body.hl { background-color:#e0eaee; }
+# pre.hl { color:#000000; background-color:#e0eaee; font-size:10pt; font-family:'Courier New',monospace;}
+# .hl.num { color:#b07e00; }
+# .hl.esc { color:#ff00ff; }
+# .hl.str { color:#bf0303; }
+# .hl.pps { color:#818100; }
+# .hl.slc { color:#838183; font-style:italic; }
+# .hl.com { color:#838183; font-style:italic; }
+# .hl.ppc { color:#008200; }
+# .hl.opt { color:#000000; }
+# .hl.ipl { color:#0057ae; }
+# .hl.lin { color:#555555; }
+# .hl.kwa { color:#000000; font-weight:bold; }
+# .hl.kwb { color:#0057ae; }
+# .hl.kwc { color:#000000; font-weight:bold; }
+# .hl.kwd { color:#010181; }
+#
+#
+# The following environment variables can be used to retrieve the configuration
+# of the repository for which this script is called:
+# CGIT_REPO_URL ( = repo.url setting )
+# CGIT_REPO_NAME ( = repo.name setting )
+# CGIT_REPO_PATH ( = repo.path setting )
+# CGIT_REPO_OWNER ( = repo.owner setting )
+# CGIT_REPO_DEFBRANCH ( = repo.defbranch setting )
+# CGIT_REPO_SECTION ( = section setting )
+# CGIT_REPO_CLONE_URL ( = repo.clone-url setting )
+#
+
+# store filename and extension in local vars
+BASENAME="$1"
+EXTENSION="${BASENAME##*.}"
+
+[ "${BASENAME}" = "${EXTENSION}" ] && EXTENSION=txt
+[ -z "${EXTENSION}" ] && EXTENSION=txt
+
+# map Makefile and Makefile.* to .mk
+[ "${BASENAME%%.*}" = "Makefile" ] && EXTENSION=mk
+
+# WARNING:
+# On DragonFly using Nginx+fcgiwrap, for unknown reason, the `PATH` is set
+# to only `/sbin:/bin:/usr/sbin:/usr/bin`, therefore, the `highlight` cannot
+# be found by default.
+# Explicitly set the `PATH`.
+export PATH="/bin:/usr/bin:/usr/games:/usr/local/bin"
+
+# For version 3
+#exec highlight --force -f -I -O xhtml -S "$EXTENSION" 2>/dev/null
+# Use `--inline-css` to be more colorful without editing cgit's CSS
+exec highlight --force -f -I --inline-css -O xhtml -S "$EXTENSION" 2>/dev/null