ufold

Прелама сваки UTF-8 улазни ред да стане у задату дужину
git clone https://git.sr.ht/~strahinja/ufold
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

makeversion (1801B)


      1 #!/bin/sh -x
      2 # vim: set ft=bash:
      3 FALLBACKVER=${FALLBACKVER:-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 	lastcommit=$(got log |
     41 		awk '/^commit/ {print substr($2,1,7); exit}')
     42 	got tag -l |
     43 		awk -v lastcommit="$lastcommit" '
     44 		/^object: commit/ {
     45 			if (!lasttagcom)
     46 			{
     47 				lasttagcom = substr($3,1,7)
     48 			}
     49 			next
     50 		}
     51 		/^tag/ {
     52 			if (!ver)
     53 			{
     54 				sub(/^v/,"",$2)
     55 				ver = $2
     56 			}
     57 			next
     58 		}
     59 		END {
     60 			printf "%s", ver
     61 			if (lastcommit != lasttagcom)
     62 			{
     63 				printf "-g%s", lastcommit
     64 			}
     65 			printf "\n"
     66 		}' >version.new
     67 elif [ -d .git ] && exists git; then
     68 	getent passwd "$(unalias ls >/dev/null 2>&1 || true; \
     69 		command ls -nd . | awk '{print $3}')"
     70 	user=$(printf "%s\n" "$geresult" | awk -F: '{print $1}')
     71 	if [ -z "$user" ]; then
     72 		printf "$0: error: Cannot determine owner of %s" "$(pwd)" >&2
     73 		exit 1
     74 	fi
     75 	e_user=$(id -un)
     76 	if [ "$e_user" = "$user" ]; then
     77 		git describe 2>/dev/null | sed 's/^v//' >version.new
     78 	else
     79 		su "$user" -c 'git describe' 2>/dev/null |
     80 			sed 's/^v//' >version.new
     81 	fi
     82 else
     83 	printf "%s\n" "$FALLBACKVER" >version.new
     84 fi
     85 
     86 if [ -f version ]; then
     87 	if diff version version.new >/dev/null; then
     88 		rm version.new
     89 	else
     90 		mv version.new version
     91 		touch .rebuild
     92 	fi
     93 else
     94 	mv version.new version
     95 	touch .rebuild
     96 fi
     97 if [ "$1" = "-l" ]; then
     98 	printf "VERSION=\"%s\"\n" "$(cat version)"
     99 fi