chiark / gitweb /
jpctb: add --dry-run and --setup-only modes
[jarrg-ian.git] / jpctb
diff --git a/jpctb b/jpctb
index 402553653e18b7ee9305eb7cbe84ab197178d982..54c1f41cda4ffc8ff722a087b930853bed9b0407 100755 (executable)
--- a/jpctb
+++ b/jpctb
@@ -37,11 +37,16 @@ nojre () {
        fail "couldn't find the right jre: $*
  perhaps you should make ypp's java symlink (normally yohoho/java)
  point to your jre, eg to /usr/lib/jvm/java-6-sun"
+}
 
 badusage () {
        fail "bad usage: $*"
 }
 
+check_only=false
+setup_only=false
+setup_only_simulate=''
+
 while [ $# -ge 1 ]; do
        case "$1" in
        -)              shift; break;;
@@ -50,6 +55,15 @@ while [ $# -ge 1 ]; do
                        srcjardir="$1"
                        shift || badusage "--jpctb needs a value"
                        ;;
+       --check-only)
+                       check_only=true
+                       shift
+                       ;;
+       --setup-only)
+                       setup_only=true
+                       setup_only_simulate=echo
+                       shift
+                       ;;
        -*)             badusage "unknown option \`$1'"
                        ;;
        *)
@@ -80,8 +94,8 @@ fi
 yppdir="${yohoho%/*}"
 
 # this replicates the java-searching logic from yohoho/yohoho:
-if [ -x "$yohoho/java/bin/java" ]; then
-       yppjava="$yohoho/java/bin/java"
+if [ -x "$yppdir/java/bin/java" ]; then
+       yppjava="$yppdir/java/bin/java"
 elif [ -x "$JAVA_HOME/bin/java" ]; then
        yppjava="$JAVA_HOME/bin/java"
 else
@@ -94,6 +108,7 @@ cat <<END
 jpctb:
    jpctb tree:  "$jpctbdir"
    yohoho:       "$yohoho"
+   ypp dir:      "$yppdir"
    ypp uses:     "$yppjava"
 END
 
@@ -101,7 +116,7 @@ if ! [ -x "$yppjava" ]; then
        nojre "bad java ypp"
 fi
 
-javadir="${yppjava#/bin/java}"
+javadir="${yppjava%/bin/java}"
 if [ -x "$javadir/jre/bin/java" ]; then
        echo "   java/ points to the jre, good"
 else
@@ -142,7 +157,23 @@ END
 
 #---------- run the control panel ----------
 
-"$javadir/bin/java" -jar "$srcjardir/PCTB-ControlPanel.jar"
+if $check_only; then echo "Check successful."; exit 0; fi
+
+set +e
+$setup_only_simulate "$javadir/bin/java" \
+ -Dcom.tedpearson.ypp.market.controlpanel.exitstatus=12 \
+ -jar "$srcjardir/PCTB-ControlPanel.jar"
+rc=$?
+set -e
+
+if $setup_only; then rc=12; fi
+
+case $rc in
+0)     echo "launcher dialogue closed, quitting"; exit 0 ;;
+12)    ;;
+*)     echo >&2 "control panel failed with exit status $rc"; exit "$rc" ;;
+esac
+
 
 #---------- create the temporary are and link farm ----------
 
@@ -203,4 +234,4 @@ chmod +x -- "$wrapper"
 
 #---------- now run it ----------
 
-exec "$yohoho" -Djava.home="$linkfarm/jre"
+exec $setup_only_simulate "$yohoho" -Djava.home="$linkfarm/jre"