]> gitweb.fluxo.info Git - keyringer.git/commitdiff
Enhanced 'cd' behavior (#34)
authorSilvio Rhatto <rhatto@riseup.net>
Tue, 10 Dec 2013 15:38:46 +0000 (13:38 -0200)
committerSilvio Rhatto <rhatto@riseup.net>
Tue, 10 Dec 2013 15:38:46 +0000 (13:38 -0200)
lib/keyringer/actions/shell

index d8a0ef7d49939a7e25fe2c3bd5147cbf30e4bc3f..d9a3e074f0243afab5fb6f1dde468d7deee4f063 100755 (executable)
@@ -18,19 +18,27 @@ while read -rep "keyringer:/${KEYRING}${SHELLPATH}> " STDIN; do
 
     # Update current path
     OLDPATH="$SHELLPATH"
-    SHELLPATH="/`echo $STDIN | sed -e 's/^cd//' | cut -d ' ' -f 2`"
+    SHELLPATH="`echo $STDIN | sed -e 's/^cd//' | cut -d ' ' -f 2`"
 
     # Fix current path
-    if [ "$SHELLPATH" == "/" ]; then
+    if [ "$SHELLPATH" == "/" ] || [ "$SHELLPATH" == "" ]; then
       SHELLPATH="/"
-    elif [[ "$SHELLPATH" == "/.."* ]]; then
+    elif [[ "$SHELLPATH" == ".."* ]]; then
       ARGS="$SHELLPATH"
       SHELLPATH="$OLDPATH"
       for colons in `echo $ARGS | sed -e 's|/| |g'`; do
-        SHELLPATH="`dirname $SHELLPATH`"
+        SHELLPATH="`dirname $SHELLPATH | sed -e 's|^\.||'`"
       done
     fi
 
+    # Ensure path is absolute
+    if echo "$SHELLPATH" | grep -v -q -e "^/"; then
+      SHELLPATH="/$OLDPATH/$SHELLPATH"
+    fi
+
+    # Removing multiple slashes
+    SHELLPATH="`echo $SHELLPATH | sed -e 's/\/\+/\//g'`"
+
     # Check if path exists
     if [ ! -d "$KEYDIR/$SHELLPATH" ]; then
       echo "No such folder $SHELLPATH"