install.sh 1.1 KB

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