aboutsummaryrefslogtreecommitdiffstats
path: root/gitolite-cgit
diff options
context:
space:
mode:
Diffstat (limited to 'gitolite-cgit')
-rw-r--r--gitolite-cgit/Dockerfile2
-rw-r--r--gitolite-cgit/md2html2
-rwxr-xr-xgitolite-cgit/syntax-highlighting.py55
3 files changed, 58 insertions, 1 deletions
diff --git a/gitolite-cgit/Dockerfile b/gitolite-cgit/Dockerfile
index 1b36c73..61a64f2 100644
--- a/gitolite-cgit/Dockerfile
+++ b/gitolite-cgit/Dockerfile
@@ -29,10 +29,12 @@ WORKDIR /var/lib/git
COPY cgit.css /usr/share/webapps/cgit/cgit.css
COPY md2html /usr/lib/cgit/filters/html-converters/md2html
+COPY syntax-highlighting.py /usr/lib/cgit/filters/syntax-highlighting.py
COPY gitolite.rc /var/lib/git/.gitolite.rc
COPY entrypoint.sh /
RUN chmod u+x /usr/lib/cgit/filters/html-converters/md2html
+RUN chmod u+x /usr/lib/cgit/filters/syntax-highlighting.py
RUN chmod u+x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
diff --git a/gitolite-cgit/md2html b/gitolite-cgit/md2html
index 3c507d0..9035517 100644
--- a/gitolite-cgit/md2html
+++ b/gitolite-cgit/md2html
@@ -288,7 +288,7 @@ div#cgit .markdown-body h1 a.toclink, div#cgit .markdown-body h2 a.toclink, div#
border: none;
}
''')
-sys.stdout.write(HtmlFormatter(style='pastie').get_style_defs('.highlight'))
+sys.stdout.write(HtmlFormatter(style='monokai').get_style_defs('.highlight'))
sys.stdout.write('''
</style>
''')
diff --git a/gitolite-cgit/syntax-highlighting.py b/gitolite-cgit/syntax-highlighting.py
new file mode 100755
index 0000000..16f83a3
--- /dev/null
+++ b/gitolite-cgit/syntax-highlighting.py
@@ -0,0 +1,55 @@
+#!/usr/bin/env python3
+
+# This script uses Pygments and Python3. You must have both installed
+# for this to work.
+#
+# http://pygments.org/
+# http://python.org/
+#
+# It may be used with the source-filter or repo.source-filter settings
+# in cgitrc.
+#
+# 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 )
+
+
+import sys
+import io
+from pygments import highlight
+from pygments.util import ClassNotFound
+from pygments.lexers import TextLexer
+from pygments.lexers import guess_lexer
+from pygments.lexers import guess_lexer_for_filename
+from pygments.formatters import HtmlFormatter
+
+
+sys.stdin = io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8', errors='replace')
+sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8', errors='replace')
+data = sys.stdin.read()
+filename = sys.argv[1]
+formatter = HtmlFormatter(style='monokai', nobackground=True)
+
+try:
+ lexer = guess_lexer_for_filename(filename, data)
+except ClassNotFound:
+ # check if there is any shebang
+ if data[0:2] == '#!':
+ lexer = guess_lexer(data)
+ else:
+ lexer = TextLexer()
+except TypeError:
+ lexer = TextLexer()
+
+# highlight! :-)
+# printout pygments' css definitions as well
+sys.stdout.write('<style>')
+sys.stdout.write(formatter.get_style_defs('.highlight'))
+sys.stdout.write('</style>')
+sys.stdout.write(highlight(data, lexer, formatter, outfile=None))