TakeAction 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. case $# in
  2. 0) PAR=install ; CMD=Action ;;
  3. 1) PAR="$1" ; CMD=Action ;;
  4. 2) PAR="$1" ; CMD="$2" ;;
  5. *) echo Syntax: "$0" [param [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='make $PAR'
  25. DIR=.
  26. FAIL='Failed for $SYS, see $DIR/Out'
  27. SUCC='$SYS -- done'
  28. ATYPE=
  29. FATAL=no
  30. DOIT=yes
  31. ;;
  32. xfatal) FATAL=yes ;;
  33. xaction|xindir) case x$ATYPE in
  34. x) ACTION=$2 ; ATYPE=$1 ;;
  35. *) echo Already specified an $ATYPE for this name
  36. RETC=-1 ;;
  37. esac ;;
  38. xfailure) FAIL="$2" ;;
  39. xsuccess) SUCC="$2" ;;
  40. xdir) DIR="$2" ;;
  41. xsystem) case `ack_sys` in
  42. $2) ;;
  43. *) echo "Sorry, $SYS can only be made on $2 systems"
  44. DOIT=no
  45. ;;
  46. esac ;;
  47. xend) case $DOIT in
  48. no) continue ;;
  49. esac
  50. case x$SYS in
  51. x) echo Missing name line; RETC=-1 ;;
  52. *) if test -d $DIR
  53. then (
  54. cd $DIR
  55. X=
  56. case $ATYPE in
  57. indir)
  58. if sh $THISFILE $PAR $ACTION
  59. then eval echo $SUCC
  60. else RETC=2 ; eval echo $FAIL
  61. fi ;;
  62. *)
  63. if eval "$ACTION >Out 2>&1 </dev/null"
  64. then eval echo $SUCC
  65. else RETC=1 ; X=: ; eval echo $FAIL
  66. fi
  67. ;;
  68. esac
  69. (echo ------- `pwd`
  70. cat Out
  71. $X rm -f Out
  72. ) 2>/dev/null 1>&- 1>&3
  73. exit $RETC
  74. )
  75. case $? in
  76. 0) ;;
  77. *) case $RETC in
  78. 0) RETC=$? ;;
  79. esac ;;
  80. esac
  81. else
  82. echo Directory $DIR for $SYS is inaccessible
  83. RETC=-2
  84. fi ;;
  85. esac
  86. case $FATAL$RETC in
  87. yes0) ;;
  88. yes*) echo Fatal error, installation stopped.
  89. exit $RETC ;;
  90. esac
  91. SYS=
  92. ;;
  93. *) echo Unknown keyword "$1"
  94. RETC=-3 ;;
  95. esac
  96. done
  97. } <$CMD
  98. RETX=$?
  99. case $RETX in
  100. 0) exit $RETC ;;
  101. *) exit $RETX ;;
  102. esac