table

Помоћни програм из командне линије за форматирање и приказ CSV-а
git clone https://git.sr.ht/~strahinja/table
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

makedate (1958B)


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