mvdir.sh 747 B

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