reflow

Преобликује пасусе у редове
git clone https://git.sr.ht/~strahinja/reflow
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

makeversion (1668B)


      1 #!/bin/sh -x
      2 # vim: set ft=bash:
      3 FALLBACKVER=${FALLBACKVER:-unknown}
      4 
      5 getent()
      6 {
      7 	geresult=''
      8 	if geresult=$(command getent "$@" 2>/dev/null); then
      9 		return
     10 	fi
     11 	case "$1" in
     12 	passwd|group)
     13 		if [ -z "$2" ]; then
     14 			geresult=$(cat /etc/"$1")
     15 		else
     16 			geresult=$(awk -F: -vu="$2" '{ if ($3 == u) print }' /etc/"$1")
     17 		fi
     18 		;;
     19 	*)	;;
     20 	esac
     21 }
     22 
     23 if [ -d .got ] && command -v got >/dev/null 2>&1; then
     24 	lastcommit=$(got log |
     25 		awk '/^commit/ {print substr($2,1,7); exit}')
     26 	got tag -l |
     27 		awk -v lastcommit="$lastcommit" '
     28 		/^object: commit/ {
     29 			if (!lasttagcom)
     30 			{
     31 				lasttagcom = substr($3,1,7)
     32 			}
     33 			next
     34 		}
     35 		/^tag/ {
     36 			if (!ver)
     37 			{
     38 				sub(/^v/,"",$2)
     39 				ver = $2
     40 			}
     41 			next
     42 		}
     43 		END {
     44 			printf "%s", ver
     45 			if (lastcommit != lasttagcom)
     46 			{
     47 				printf "-g%s", lastcommit
     48 			}
     49 			printf "\n"
     50 		}' >version.new
     51 elif [ -d .git ] && command -v git >/dev/null 2>&1; then
     52 	LC_ALL=C
     53 	export LC_ALL
     54 	getent passwd "$(unalias ls >/dev/null 2>&1 || true; \
     55 		command ls -nd . | awk '{print $3}')"
     56 	user=$(printf "%s\n" "$geresult" | awk -F: '{print $1}')
     57 	if [ -z "$user" ]; then
     58 		printf "$0: error: Cannot determine owner of %s" "$(pwd)" >&2
     59 		exit 1
     60 	fi
     61 	e_user=$(id -un)
     62 	if [ "$e_user" = "$user" ]; then
     63 		git describe 2>/dev/null | sed 's/^v//' >version.new
     64 	else
     65 		su "$user" -c 'git describe' 2>/dev/null |
     66 			sed 's/^v//' >version.new
     67 	fi
     68 else
     69 	printf "%s\n" "$FALLBACKVER" >version.new
     70 fi
     71 
     72 if [ -f version ]; then
     73 	if diff version version.new >/dev/null; then
     74 		rm version.new
     75 	else
     76 		mv version.new version
     77 		touch .rebuild
     78 	fi
     79 else
     80 	mv version.new version
     81 	touch .rebuild
     82 fi
     83 if [ "$1" = "-l" ]; then
     84 	printf "VERSION=\"%s\"\n" "$(cat version)"
     85 fi