bool

Програм за тестирање логичких израза
git clone https://git.sr.ht/~strahinja/bool
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

makedate (1823B)


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