X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;f=macros%2Frevisions;h=75440d60609fcb070d79dd2a23aaa3278eaf5925;hb=bd4a2145a0a65745ab8074c3d986b1f032c148f0;hp=c6fb8fa2cb59b7d239b81f372515a5ed96ed3a55;hpb=a6ae272ce0af6b93cabddf4aa4a3cebc7350f5a0;p=shellwiki diff --git a/macros/revisions b/macros/revisions index c6fb8fa..75440d6 100755 --- a/macros/revisions +++ b/macros/revisions @@ -4,23 +4,74 @@ . "$_EXEC/tools.sh" . "$_EXEC/acl.sh" -page="$1" +LIST=true DIFF= +while [ $# -gt 0 ]; do case $1 in + --list) + LIST=true + shift 1 + ;; + --no-list) + LIST= + shift 1 + ;; + --diff) + DIFF=true + shift 1 + ;; + --no-diff) + DIFF= + shift 1 + ;; + *)page="$1" + shift 1 + ;; +esac; done + page_abs="$(page_abs "$page")" +page_default="${page_abs%:*/}" if ! acl_read "$page_abs"; then return 0 -elif [ ! "$(which git)" ]; then - printf '
GIT is not available to handle revisioning.
' fi -printf '\n' +fi + +if [ "$DIFF" = true -a "$LANGUAGE_DEFAULT" -a "$page_default" != "$page_abs" ]; then + commit="$(git -C "$_DATA" log --pretty=format:%H -- "pages${page_abs}#page.md" |head -n1)" + printf '

Latest changes to original language page

' + git -C "$_DATA" diff -U3 "$commit" -- "pages${page_default}#page.md" |tail -n+5 \ + | while read -r diff; do case $diff in + @@\ *\ @@*) + line="${diff#@@ * @@}" + num="${diff%"${line}"}" + printf '%s\n' "$(HTML "$num")" + printf '%s\n' "$(HTML "$line")" + ;; + -*) printf '%s\n' "$(HTML "$diff")";; + +*) printf '%s\n' "$(HTML "$diff")";; + \ *) printf '%s\n' "$(HTML "$diff")";; + \\\ *) printf '%s\n' "$(HTML "$diff")";; + esac; done + printf '
' +fi + +printf '\n'