Merge pull request #8 from adamarthurryan/simple-interface
Simple interface
This commit is contained in:
commit
98e5b186f1
@ -1,25 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# Markdown-wdiff -- format diff of Markdown files with decoration
|
|
||||||
# Usage:
|
|
||||||
# wdiff old.md new.md | markdown-format-wdiff
|
|
||||||
# git diff --word-diff origin/master -- README.md docs/tutorial/README.md | markdown-format-wdiff
|
|
||||||
#
|
|
||||||
# Author: Jaeho Shin <netj@cs.stanford.edu>
|
|
||||||
# Created: 2013-11-18
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
# word diff the given unified diff as input, and format it by hunks
|
|
||||||
sed '
|
|
||||||
# format ins/del of words
|
|
||||||
s|\[-|<del class="del">|g; s|-]|</del>|g
|
|
||||||
s|{+|<ins class="ins">|g; s|+}|</ins>|g
|
|
||||||
'
|
|
||||||
|
|
||||||
# attach a small stylesheet
|
|
||||||
#echo '
|
|
||||||
#<style>
|
|
||||||
# .del,.ins{ display: inline-block; margin-left: 0.5ex; }
|
|
||||||
# .del { background-color: #fcc; }
|
|
||||||
# .ins{ background-color: #cfc; }
|
|
||||||
#</style>
|
|
||||||
#'
|
|
@ -1,108 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
# Summarize commit history and diff of Markdown files in the current Git repo
|
|
||||||
# Usage:
|
|
||||||
# markdown-git-changes [COMMIT [MARKDOWN_FILE]...]
|
|
||||||
#
|
|
||||||
# You can specify COMMIT as `--' to automatically see changes of given files
|
|
||||||
# against the upstream branch, HEAD^, or HEAD.
|
|
||||||
#
|
|
||||||
# Author: Jaeho Shin <netj@cs.stanford.edu>
|
|
||||||
# Created: 2013-11-18
|
|
||||||
set -eu
|
|
||||||
|
|
||||||
Here=$(dirname "$0")
|
|
||||||
PATH="$Here:$PATH" # add this directory to PATH for markdown-format-wdiff
|
|
||||||
|
|
||||||
# TODO passthru any diff options
|
|
||||||
|
|
||||||
# how to find markdown files in the current git repo
|
|
||||||
files=()
|
|
||||||
find_markdown_files() {
|
|
||||||
local IFS=$'\n'
|
|
||||||
set -- $(git ls-files | grep '\.\(md\|mkd\|markdn\|markdown\)$')
|
|
||||||
files=("$@")
|
|
||||||
}
|
|
||||||
|
|
||||||
# diff against given commit, or upstream branch, or HEAD^ if no local changes, or HEAD
|
|
||||||
since=--; [ $# -eq 0 ] || { since=$1; shift; }
|
|
||||||
if [ x"$since" = x"--" ]; then
|
|
||||||
find_markdown_files
|
|
||||||
since=`
|
|
||||||
git rev-parse --abbrev-ref HEAD@{upstream} 2>/dev/null ||
|
|
||||||
case $(git status --porcelain --untracked-files=no "${files[@]}" | wc -l) in
|
|
||||||
0) echo 'HEAD^' ;;
|
|
||||||
*) echo 'HEAD'
|
|
||||||
esac
|
|
||||||
`
|
|
||||||
fi
|
|
||||||
# unless list of files are given, find Markdown documents in the Git repo
|
|
||||||
if [ $# -gt 0 ]; then
|
|
||||||
files=("$@")
|
|
||||||
elif [ ${#files[@]} -eq 0 ]; then
|
|
||||||
find_markdown_files
|
|
||||||
fi
|
|
||||||
|
|
||||||
# make sure ${files[@]} isn't empty
|
|
||||||
[ ${#files[@]} -gt 0 ] || files+=(.)
|
|
||||||
|
|
||||||
|
|
||||||
# summarize commit history
|
|
||||||
{
|
|
||||||
echo "\$ git log --oneline "$since"..HEAD $*"
|
|
||||||
git log --oneline "$since"..HEAD "${files[@]}"
|
|
||||||
} |
|
|
||||||
sed 's/^/ /'
|
|
||||||
echo
|
|
||||||
|
|
||||||
# and embed the overall word diff
|
|
||||||
git diff ${GIT_DIFF_OPTS:-} --word-diff --patch-with-stat \
|
|
||||||
--minimal --patience \
|
|
||||||
"$since" -- "${files[@]}" |
|
|
||||||
sed '
|
|
||||||
# format prologue
|
|
||||||
1,/^diff /{
|
|
||||||
/^diff/! s/^/ /
|
|
||||||
}
|
|
||||||
|
|
||||||
# format file headers
|
|
||||||
/^diff /,/^+++ /{
|
|
||||||
/^diff /{
|
|
||||||
s|^diff .* \([^/]/\)\(.*\)|<div class="file-start"><code>\2</code></div>|
|
|
||||||
a\
|
|
||||||
\
|
|
||||||
|
|
||||||
}
|
|
||||||
/^<div class="file-start">/! s/^/ /
|
|
||||||
}
|
|
||||||
|
|
||||||
# format hunks
|
|
||||||
/^@@ -.* +.* @@/{
|
|
||||||
s| @@.*| @@|
|
|
||||||
s|^|<div class="hunk-start"><code>|
|
|
||||||
s|$|</code></div>|
|
|
||||||
}
|
|
||||||
' |
|
|
||||||
markdown-format-wdiff
|
|
||||||
echo '
|
|
||||||
<style>
|
|
||||||
pre:first-of-type { width: 78%; margin-left: auto; margin-right: auto; }
|
|
||||||
.file-start + p + pre,
|
|
||||||
.file-start + pre { margin-left: 61.8%; }
|
|
||||||
.file-start,
|
|
||||||
.hunk-start{ text-align: right; }
|
|
||||||
|
|
||||||
.file-start code{ font-size: inherit; }
|
|
||||||
|
|
||||||
.file-start/*:not(:first-of-type)*/{
|
|
||||||
font-size: 150%;
|
|
||||||
margin-top: 23.6%;
|
|
||||||
border-bottom: 1ex solid #ccc;
|
|
||||||
padding-bottom: 1ex;
|
|
||||||
}
|
|
||||||
.hunk-start{
|
|
||||||
margin-top: 2ex;
|
|
||||||
border-bottom: 1ex dashed #ccc;
|
|
||||||
padding-bottom: 1ex;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
'
|
|
Loading…
Reference in New Issue
Block a user