makedate (1525B)
1 #!/bin/sh -x 2 # vim: set ft=bash: 3 FALLBACKDATE=${FALLBACKDATE:-unknown} 4 LC_ALL=C 5 export LC_ALL 6 7 if [ -d .got ] && command -v got >/dev/null 2>&1; then 8 got log | 9 awk ' 10 /^date: / { 11 sub(/^date: /,"",$0) 12 # Convert to proper form for `mandoc -Tlint` 13 month_names["Jan"] = "January" 14 month_names["Feb"] = "February" 15 month_names["Mar"] = "March" 16 month_names["Apr"] = "April" 17 month_names["May"] = "May" 18 month_names["Jun"] = "June" 19 month_names["Jul"] = "July" 20 month_names["Aug"] = "August" 21 month_names["Sep"] = "September" 22 month_names["Oct"] = "October" 23 month_names["Nov"] = "November" 24 month_names["Dec"] = "December" 25 print month_names[$2] " " $3 ", " $5 26 exit 27 }' >date.new 28 elif [ -d .git ] && command -v git >/dev/null 2>&1; then 29 user=$(getent passwd "$(unalias ls >/dev/null 2>&1 || true; \ 30 command ls -lnd . | awk '{print $3}')" | awk -F: '{print $1}') 31 if [ -z "$user" ]; then 32 printf "$0: error: Cannot determine owner of %s" "$(pwd)" >&2 33 exit 1 34 fi 35 e_user=$(id -un) 36 if [ "$e_user" = "$user" ]; then 37 git log --format=format:%cd \ 38 --date=format:"%B %d, %Y" -1 @ >date.new 39 else 40 su "${user}" -c 'env LC_ALL=C git log --format=format:%cd \ 41 --date=format:"%B %d, %Y" -1 @' >date.new 42 fi 43 echo >>date.new 44 else 45 printf "%s\n" "$FALLBACKDATE" >date.new 46 fi 47 48 if [ -f date ]; then 49 if diff date date.new >/dev/null; then 50 rm date.new 51 else 52 mv date.new date 53 touch .rebuild 54 fi 55 else 56 mv date.new date 57 touch .rebuild 58 fi 59 if [ "$1" = "-l" ]; then 60 printf "DATE=\"%s\"\n" "$(cat date)" 61 fi