TakeAction 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. case $# in
  2. 0) PAR='make install && make clean' ; CMD=Action ;;
  3. 1) PAR="$1" ; CMD=Action ;;
  4. 2) PAR="$1" ; CMD="$2" ;;
  5. *) echo Syntax: "$0" [command [file]] ; exit 1 ;;
  6. esac
  7. if test -r "$CMD"
  8. then :
  9. else
  10. case "$CMD" in
  11. Action) echo No Action file present ;;
  12. *) echo No Action file "($CMD)" present ;;
  13. esac
  14. fi
  15. THISFILE=`pwd`/$0
  16. SYS=
  17. RETC=0
  18. { while read LINE
  19. do
  20. eval set $LINE
  21. case x"$1" in
  22. x!*) ;;
  23. xname) SYS="$2"
  24. ACTION='$PAR'
  25. DIR=.
  26. FM=no
  27. FAIL='Failed for $SYS, see $DIR/Out'
  28. SUCC='$SYS -- done'
  29. ATYPE=
  30. FATAL=no
  31. DOIT=yes
  32. ;;
  33. xfatal) FATAL=yes ;;
  34. xaction|xindir) case x$ATYPE in
  35. x) ACTION=$2 ; ATYPE=$1
  36. case $ATYPE$FM in
  37. indirno) FAIL='Failed for $SYS' ;;
  38. esac
  39. ;;
  40. *) echo Already specified an $ATYPE for this name
  41. RETC=65 ;;
  42. esac ;;
  43. xfailure) FM=yes
  44. FAIL="$2" ;;
  45. xsuccess) SUCC="$2" ;;
  46. xdir) DIR="$2" ;;
  47. xsystem) PAT="$2"
  48. oIFS=$IFS
  49. IFS="|"
  50. eval set $2
  51. case x`ack_sys` in
  52. x$1|x$2|x$3|x$4|x$5|x$6|x$7) ;;
  53. *) echo "Sorry, $SYS can only be made on $PAT systems"
  54. DOIT=no
  55. ;;
  56. esac
  57. IFS=$oIFS
  58. ;;
  59. xend) case $DOIT in
  60. no) continue ;;
  61. esac
  62. case x$SYS in
  63. x) echo Missing name line; RETC=65 ;;
  64. *) if test -d $DIR
  65. then (
  66. cd $DIR
  67. X=
  68. case $ATYPE in
  69. indir)
  70. if sh $THISFILE "$PAR" $ACTION
  71. then eval echo $SUCC
  72. else RETC=2 ; eval echo $FAIL
  73. fi ;;
  74. *)
  75. case "$ACTION" in
  76. '$PAR') ACTION="$PAR"
  77. ;;
  78. *) ;;
  79. esac
  80. if eval "{ $ACTION ; } >Out 2>&1 </dev/null"
  81. then eval echo $SUCC
  82. else RETC=1 ; X=: ; eval echo $FAIL
  83. fi
  84. ;;
  85. esac
  86. (echo ------- `pwd`
  87. cat Out
  88. $X rm -f Out
  89. ) 2>/dev/null 1>&- 1>&3
  90. exit $RETC
  91. )
  92. case $? in
  93. 0) ;;
  94. *) case $RETC in
  95. 0) RETC=$? ;;
  96. esac ;;
  97. esac
  98. else
  99. echo Directory $DIR for $SYS is inaccessible
  100. RETC=66
  101. fi ;;
  102. esac
  103. case $FATAL$RETC in
  104. yes0) ;;
  105. yes*) echo Fatal error, installation stopped.
  106. exit $RETC ;;
  107. esac
  108. SYS=
  109. ;;
  110. *) echo Unknown keyword "$1"
  111. RETC=67 ;;
  112. esac
  113. done
  114. exit $RETC
  115. } <$CMD
  116. RETX=$?
  117. case $RETX in
  118. 0) exit $RETC ;;
  119. *) exit $RETX ;;
  120. esac