#!/bin/bash # # Formats a Git commit message # # Copyright (C) 2012 Mike Gerwitz # # This file is part of repo2html. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # # HTML replacements (default) lquo='\“' rquo='\”' mdash='\—' # redefines replacements to yield plain text (instead of HTML entities) nohtml() { lquo=\" rquo=\" mdash=--- } while getopts n opt; do case "$opt" in n) nohtml;; esac done # format the commit message, stopping at the diff (if any) awk '/^diff --git/ { exit } { print }' \ | sed ':a;N;$!ba; # escaping s//\>/g; s/\&/\&/g; # quoting (initiated by an indented paragraph and terminated by a new # paragraph) s#\n\n \+\(\([^\n]\+\n\)\+\)#
\1
#g # unfortunately, non-greedy matches make it difficult to exclude punctuation # at the end of a link, so we will not be handling it here (since links # should always be in the footer as references (ideally), this should not # happen s#[fh]ttps\?://[^]\n )]\+#&#g; # reference definitions (footnotes) s#\n\[\([0-9]\+\)\]#

&#g; # references in text s|\[\([^]]\+\)\]\[\([0-9]\+\)\]|\1\[\2\]|g s|\[\([0-9]\+\)\]|&|g # paragraphs s#\n\n#

&

#g; # basic formatting s/---/'"$mdash"'/g; s#``#'"$lquo"'#g; s#'\'\''#'"$rquo"'#g; s#\(\W\)\*\([^\*]\+\)\*\(\W\)#\1\2\3#g; '