#!/bin/sh # This script can be used to implement syntax highlighting in the cgit # tree-view by referring to this file with the source-filter or repo.source- # filter options in cgitrc. # Depends: cmark highlight # 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 # map less common markdown extensions to .md case "$(printf '%s' "$EXTENSION" | tr '[:upper:]' '[:lower:]')" in markdown|mdown|mkd|mdwn) EXTENSION=md;; esac case "$EXTENSION" in md) exec cmark --safe;; *) exec highlight --force -f -I -O xhtml -S "$EXTENSION" --ordered-list --line-number-ref=n 2>/dev/null;; esac