Browse Source

Make mount idempotent

R. Alex Matevish 3 years ago
parent
commit
27664e4fc2
1 changed files with 20 additions and 13 deletions
  1. 20 13
      run.sh

+ 20 - 13
run.sh

@@ -40,6 +40,21 @@ function mk_ramdisk() {
   fi
 }
 
+function rm_ramdisk() {
+  if [ ! -f "$RAMDISK_FILE" ]; then
+      echo "Can't remove ramdisk - $RAMDISK_FILE not found";
+      exit 1;
+  fi
+
+  echo "Unmounting ramdisk...";
+  if [ "$(uname)" == "Darwin" ]; then
+    hdiutil detach -force $(cat $RAMDISK_FILE) || true;
+    rm $RAMDISK_FILE $STASH_DIR;
+  elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
+    sudo umount $LINUX_STASH_LOCATION;
+    rm $RAMDISK_FILE $STASH_DIR;
+  fi
+}
 
 
 while getopts "miedr" opt; do
@@ -69,24 +84,16 @@ while getopts "miedr" opt; do
       tar --exclude=".*" -zcv $STASH_DIR/* | gpg --encrypt -r $ME - > "$STASH_FILE";
       ;;
     d)
+      if [ -f "$RAMDISK_FILE" ]; then
+        rm_ramdisk;
+      fi
+
       mk_ramdisk;
       echo "Decrypting...";
       gpg --decrypt "$STASH_FILE" | tar -zxvf - -C $STASH_DIR --strip-components=1;
       ;;
     r)
-      if [ ! -f "$RAMDISK_FILE" ]; then
-          echo "Can't remove ramdisk - $RAMDISK_FILE not found";
-          exit 1;
-      fi
-
-      echo "Unmounting ramdisk...";
-      if [ "$(uname)" == "Darwin" ]; then
-        hdiutil detach -force $(cat $RAMDISK_FILE) || true;
-        rm $RAMDISK_FILE $STASH_DIR;
-      elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
-        sudo umount $LINUX_STASH_LOCATION;
-        rm $RAMDISK_FILE $STASH_DIR;
-      fi
+      rm_ramdisk;
       ;;
     \?)
       echo "Invalid option: -$OPTARG" >&2