mvdir.sh 754 B

12345678910111213141516171819202122232425262728293031323334
  1. #!/bin/sh
  2. set -e
  3. if [ -n "$PLUGIN_SOURCE" -a -n "$PLUGIN_TARGET" ]; then
  4. set "$PLUGIN_SOURCE" "$PLUGIN_TARGET"
  5. fi
  6. if [ ! -d "$1" ]; then
  7. echo "$1" must be a directory >&2
  8. exit 1
  9. fi
  10. SOURCE_TMP=`realpath "$1"`
  11. SOURCE_DIR=`dirname "$SOURCE_TMP"`
  12. SOURCE_BASE=`basename "$SOURCE_TMP"`
  13. if [ -f "$2" -a ! -L "$2" ]; then
  14. echo "$2" must not exist or be a symlink >&2
  15. exit 2
  16. fi
  17. TARGET_DIR_TMP=`dirname "$2"`
  18. TARGET_DIR=`realpath "$TARGET_DIR_TMP"`
  19. TARGET_BASE=`basename "$2"`
  20. cd "$TARGET_DIR"
  21. DIR=`mktemp -d -p . "$TARGET_BASE".XXXXXX`
  22. mv "$SOURCE_DIR/$SOURCE_BASE" "$DIR"
  23. chmod a+rx "$DIR"
  24. ln -s "$DIR/$SOURCE_BASE" "$DIR.link"
  25. mv -T "$DIR.link" "$TARGET_BASE"
  26. for OTHER in "$TARGET_BASE".*; do
  27. test "$OTHER" -ef "$DIR" || rm -rf "$OTHER"
  28. done