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