diff options
Diffstat (limited to 'roles/git/files/cgit/syntax-highlighting.sh')
-rw-r--r-- | roles/git/files/cgit/syntax-highlighting.sh | 75 |
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 |