diff packaging/linux-installer.inc.in @ 705:ff2efc1cb8fa

Use config from old installation for sensible default prefix.
author Sascha Wilde <wilde@intevation.de>
date Wed, 02 Jul 2014 11:56:56 +0200
parents 480bc550d2ad
children 37899f717fa5
line wrap: on
line diff
--- a/packaging/linux-installer.inc.in	Wed Jul 02 10:59:31 2014 +0200
+++ b/packaging/linux-installer.inc.in	Wed Jul 02 11:56:56 2014 +0200
@@ -5,14 +5,20 @@
 CFGPATH="${XDG_DATA_HOME:-$HOME/.local/share}/BSI/TrustBridge"
 SYSCFGPATH="/etc/TrustBridge"
 INSTCFGNAME="installation.cfg"
+FORCE=0
 
 instcfg_file="${CFGPATH}/${INSTCFGNAME}"
-declare -A instcfg
+declare -A instcfg oldinstcfg
 instcfg=(
   [TIMESTMP]=`date -u +%Y%m%d%H%M%S`
   [VERSION]='@PROJECT_VERSION@'
   [PREFIX]=''
 )
+oldinstcfg=(
+  [TIMESTMP]=''
+  [VERSION]=''
+  [PREFIX]=''
+)
 
 version()
 {
@@ -44,6 +50,8 @@
 
 Options:
   -p, --prefix=PATH  install files in PATH
+  -f, --force        install to given prefix, even when a current 
+                     installation with different prefix exists.
       --help         display this help and exit
       --version      output version information and exit
 EOF
@@ -53,8 +61,8 @@
 parse_args()
 {
   OPTS=`getopt \
-      -l help,prefix:,version \
-      -o p: -n "$ME" -- "$@"`
+      -l force,help,prefix:,version \
+      -o f,p: -n "$ME" -- "$@"`
   [ $? -eq 0 ] || usage 23
 
   eval set -- "$OPTS"
@@ -65,6 +73,10 @@
         instcfg[PREFIX]="$2"
         shift 2
         ;;
+      --force|-f)
+        FORCE=1
+        shift 1
+        ;;
       --help)
         usage 0
         ;;
@@ -88,10 +100,21 @@
   done
 }
 
+read_oldinstcfg()
+{
+  if [ -r "$instcfg_file" ] ; then
+      echo "Reading '$instcfg_file' ..."
+      for key in "${!oldinstcfg[@]}" ; do
+        oldinstcfg[$key]=`sed -n "/$key/s/[^=]*=\(.*\)/\1/p" "$instcfg_file"`
+      done
+  fi      
+}
+
 #======================================================================
 # main()
 
 parse_args "$@"
+read_oldinstcfg
 
 cat <<EOF
 ------------------------------------------------------------------------
@@ -103,10 +126,25 @@
 EOF
 
 if [ -z "${instcfg[PREFIX]}" ] ; then
+
+    if [ "${oldinstcfg[PREFIX]}" ] ; then
+        DEFAULT_PREFIX="${oldinstcfg[PREFIX]}"
+        echo "An existing installation (v${oldinstcfg[VERSION]}) was detected!"
+        echo "It is HIGHLY RECOMMENDED to accept the default prefix"
+        echo "to update the current installation."
+        echo "For a new prefix you should deinstall first!"
+    fi
     echo -n "Select installation prefix for TrustBridge [${DEFAULT_PREFIX}]: "
     read -e instcfg[PREFIX]
 
     [ -z "${instcfg[PREFIX]}" ] && instcfg[PREFIX]="${DEFAULT_PREFIX}"
+else
+  # Prefix was given on invocation:
+  if [ "${oldinstcfg[PREFIX]}" -a \
+       "${instcfg[PREFIX]}" != "${oldinstcfg[PREFIX]}" -a \
+       $FORCE -ne 1 ] ; then
+      fatal "Prefix differs from current installation (${oldinstcfg[PREFIX]}).  Aborting!"
+  fi
 fi
 
 echo "Installing to '${instcfg[PREFIX]}':"

http://wald.intevation.org/projects/trustbridge/