Home | History | Annotate | Download | only in bin
      1 #!/bin/bash
      2 #
      3 # install.sh [--uninstall] sourcefile targetfile [install options]
      4 #
      5 
      6 
      7 # Check for uninstall option
      8 if test "x$1" == "x--uninstall" ; then
      9   UNINSTALL=true
     10   SOURCE=$2
     11   TARGET=$3
     12   shift 3
     13 else
     14   UNINSTALL=false
     15   SOURCE=$1
     16   TARGET=$2
     17   shift 2
     18 fi
     19 
     20 # Check usage
     21 if test -z "$SOURCE" || test -z "$TARGET" ; then
     22   echo Usage: install.sh [--uninstall] source target [install options] >&2
     23   exit 1
     24 fi
     25 
     26 
     27 #
     28 # do_install(SOURCE_FILE, TARGET_FILE)
     29 #
     30 
     31 do_install()
     32 {
     33   local SOURCE=$1
     34   local TARGET=$2
     35   local PARAMS=$3
     36 
     37   install -p -D $PARAMS $SOURCE $TARGET
     38 }
     39 
     40 
     41 #
     42 # do_uninstall(SOURCE_FILE, TARGET_FILE)
     43 #
     44 
     45 do_uninstall()
     46 {
     47   local SOURCE=$1
     48   local TARGET=$2
     49 
     50   # Does target exist?
     51   if test -r $TARGET ; then
     52     # Is target of the same version as this package?
     53     if diff $SOURCE $TARGET >/dev/null; then
     54       rm -f $TARGET
     55     else
     56       echo WARNING: Skipping uninstall for $TARGET - versions differ! >&2
     57     fi
     58   else
     59     echo WARNING: Skipping uninstall for $TARGET - not installed! >&2
     60   fi
     61 }
     62 
     63 
     64 # Call sub routine
     65 if $UNINSTALL ; then
     66   do_uninstall $SOURCE $TARGET
     67 else
     68   do_install $SOURCE $TARGET "$*"
     69 fi
     70 
     71 exit 0
     72