linije

Клон игре Color lines
git clone https://git.sr.ht/~strahinja/linije
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

makeversion (1370B)


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