#!/bin/sh # Copyright 2023 Paul Hänsch # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted, provided that the above # copyright notice and this permission notice appear in all copies. # # THE SOFTWARE IS PROVIDED “AS IS” AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY # SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR # IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. . "$_EXEC/cgilite/cgilite.sh" . "$_EXEC/tools.sh" . "$_EXEC/acl.sh" _(){ printf %s\\n "$*"; } [ "${LANGUAGE}" -a -r "${_EXEC}/l10n/${LANGUAGE}.sh" ] && . "${_EXEC}/l10n/${LANGUAGE}.sh" LANGUAGES='' glob="/" depth=-1 set -- "$@" -- while [ $# -gt 0 ]; do case $1 in --system) glob_system_pages=true; shift 1;; :*) LANGUAGES="${LANGUAGES}${LANGUAGES:+ }${1#:}"; shift 1;; --depth) depth="$2"; shift 2;; --) shift 1; break;; *) set -- "$@" "$1"; shift 1;; esac; done [ "$*" ] || set -- / page='' page_abs='' ostamp='' odate='' lstamp='' ldate='' row='' rowstate='' printf '\n' for l in $LANGUAGES; do printf '' "$l"; done printf '\n\n' for glob in "$@"; do page_glob "$glob" "$depth" done \ | sort -u \ | while read page; do page_abs="$(page_abs "$page")" acl_read "${page_abs}" || continue mdfile "${page_abs}" >&- || continue read ostamp odate <<-EOF $([ "$REV_PAGES" = true ] \ && git -C "$_DATA" log --pretty="format:%at %ai" -- "pages${page_abs}#page.md" \ || stat -c "%Y %y" -- "$_DATA/pages${page_abs}#page.md" 2>&- \ || printf "0 %s\n" "$(_ "(never edited)")" ) EOF row="" rowstate='' for l in $LANGUAGES; do if [ -f "${_DATA}/pages/${page}:${l}/#page.md" ]; then read lstamp ldate <<-EOF $([ "$REV_PAGES" = true ] \ && git -C "$_DATA" log --pretty="format:%at %ai" -- "pages$(page_abs "${page_abs}:${l}")/#page.md" \ || stat -c "%Y %y" -- "$_DATA/pages$(page_abs "${page_abs}:${l}")/#page.md" ) EOF if [ $lstamp -lt $ostamp ] 2>&-; then row="${row}" [ "$rowstate" = "${rowstate%*outdated*}" ] && rowstate="${rowstate}${rowstate:+ }outdated" else row="${row}" [ "$rowstate" = "${rowstate%*current*}" ] && rowstate="${rowstate}${rowstate:+ }current" fi else row="${row}" [ "$rowstate" = "${rowstate%*missing*}" ] && rowstate="${rowstate}${rowstate:+ }missing" fi done printf '%s\n' "$rowstate" "$row" done printf '
Page%s
$(HTML "$page")${odate%%[+.]*}$(_ outdated)${ldate%%[+.]*}$(_ current)${ldate%%[+.]*}$(_ missing)
'