pthbs-namedenv (1358B)
1 #!/bin/sh 2 set -e 3 if test -n "$pthbs_xtrace"; then 4 set -x 5 if test -n "$BB_ASH_VERSION"; then PS4="+${0##*/}"':${FUNCNAME}:${LINENO} '; fi 6 fi 7 if test -z "$pthbs_cache"; then 8 printf '%s\n' >&2 "$0: fatal: pthbs_cache env var undefined or empty" 9 exit 100 10 fi 11 if test $# != 2; then 12 printf '%s\n' >&2 'usage: pthbs-namedenv /path/to/env.hash name' 13 exit 2 14 fi 15 env_installdir=$1 16 env_name=$2 17 shift 18 case $env_name in 19 (*/*) 20 (*:*) 21 printf '%s\n' >&2 "pthbs-namedenv: error: invalid name '$env_name'" 22 exit 2 23 ;; 24 esac 25 case ${env_installdir##*/} in 26 (env.*) ;; 27 (*) 28 printf '%s\n' >&2 "pthbs-namedenv: error: invalid env installdir '$env_installdir'" 29 exit 2 30 ;; 31 esac 32 33 bd_link="$pthbs_cache/namedenv/$env_name" 34 v_link_base="${env_installdir%/*}/namedenv.$env_name" 35 printf "%s => %s\n" "$v_link_base" "${env_installdir##*/}" 36 if test -L "$bd_link"; then 37 unlink "$bd_link" 38 fi 39 busybox ln -sTf "$env_installdir" "$bd_link" 40 if test -L "${v_link_base}" && test x"$(realpath "$bd_link")" = x"$(realpath "$v_link_base")"; then 41 # already present 42 exit 0 43 fi 44 if test -L "${v_link_base}.9"; then 45 unlink "${v_link_base}.9" 46 fi 47 mvl() { 48 if test -L "${v_link_base}$1"; then 49 mv "${v_link_base}$1" "${v_link_base}$2" 50 fi 51 } 52 mvl .8 .9 53 mvl .7 .8 54 mvl .6 .7 55 mvl .5 .6 56 mvl .4 .5 57 mvl .3 .4 58 mvl .2 .3 59 mvl .1 .2 60 mvl "" .1 61 busybox ln -sTf "${env_installdir##*/}" "$v_link_base"