lav-sdl

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

makeversion (1755B)


      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 	if exists getent; then
     21 		command getent "$@" 2>/dev/null
     22 		return
     23 	fi
     24 	case "$1" in
     25 	passwd|group)
     26 		if [ -z "$2" ]; then
     27 			cat /etc/"$1"
     28 		else
     29 			awk -F: -vu="$2" '{ if ($3 == u) print }' /etc/"$1"
     30 		fi
     31 		;;
     32 	*)	;;
     33 	esac
     34 }
     35 
     36 exists diff || die "The build script $0 requires diff(1), none found"
     37 
     38 if [ -d .got ] && exists got; then
     39 	lastcommit=$(got log |
     40 		awk '/^commit/ {print substr($2,1,7); exit}')
     41 	got tag -l |
     42 		awk -v lastcommit="$lastcommit" '
     43 		/^object: commit/ {
     44 			if (!lasttagcom)
     45 			{
     46 				lasttagcom = substr($3,1,7)
     47 			}
     48 			next
     49 		}
     50 		/^tag/ {
     51 			if (!ver)
     52 			{
     53 				sub(/^v/,"",$2)
     54 				ver = $2
     55 			}
     56 			next
     57 		}
     58 		END {
     59 			printf "%s", ver
     60 			if (lastcommit != lasttagcom)
     61 			{
     62 				printf "-g%s", lastcommit
     63 			}
     64 			printf "\n"
     65 		}' >version.new
     66 elif [ -d .git ] && exists git; then
     67 	
     68 	user=$(printf "%s\n" "$(_getent passwd \
     69 		"$(unalias ls >/dev/null 2>&1 || true; \
     70 		command ls -nd . | awk '{print $3}')")" |
     71 			awk -F: '{print $1}')
     72 	if [ -z "$user" ]; then
     73 		printf "$0: error: Cannot determine owner of %s" "$(pwd)" >&2
     74 		exit 1
     75 	fi
     76 	e_user=$(id -un)
     77 	if [ "$e_user" = "$user" ]; then
     78 		git describe 2>/dev/null | sed 's/^v//' >version.new
     79 	else
     80 		su "$user" -c 'git describe' 2>/dev/null |
     81 			sed 's/^v//' >version.new
     82 	fi
     83 else
     84 	printf "%s\n" "$FALLBACKVER" >version.new
     85 fi
     86 
     87 if [ -f version ]; then
     88 	if diff version version.new >/dev/null; then
     89 		rm version.new
     90 	else
     91 		mv version.new version
     92 		touch .rebuild
     93 	fi
     94 else
     95 	mv version.new version
     96 	touch .rebuild
     97 fi
     98 if [ "$1" = "-l" ]; then
     99 	printf "VERSION=\"%s\"\n" "$(cat version)"
    100 fi