#!/bin/sh
. "$_EXEC/cgilite/cgilite.sh"
. "$_EXEC/tools.sh"
. "$_EXEC/acl.sh"
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
fi
printf '
\n'
if [ "$REV_PAGES" != true ]; then
printf '
GIT is not available to handle revisioning.
'
fi
if [ "$LIST" = true ]; then
printf '
\n'
IFS=" "
{ git -C "$_DATA" log --date=format:"%a, %x %H:%M" \
--pretty=format:"%h %cd %s" \
-- "pages${page_abs}#page.md"
printf '\n'
} | while read -r hash date message; do
user="${message% @*}"; user="${user##*@ }"
printf '- %s%s%s
\n' \
"$(HTML "${page%/}/[revision]/$hash")" "$(HTML "$hash")" "$(HTML "$date")" "$(HTML "$user")"
done
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'