Commit Diff


commit - b084f13e9acf971b9c1336617825d5a42497acd4
commit + 5cde236501e1894e0ee08cbfd211a08fee7b6691
blob - 4fc21ce0e5798d87f88459f89e7dc43aed8e89bc
blob + c8604deec3a65def085a7ebc6690b305e6170c54
--- rover.c
+++ rover.c
@@ -759,8 +759,9 @@ main(int argc, char *argv[])
     const char *key;
     DIR *d;
     EditStat edit_stat;
+    const char *save_cwd_file = NULL;
 
-    if (argc == 2) {
+    if (argc >= 2) {
         if (!strcmp(argv[1], "-v") || !strcmp(argv[1], "--version")) {
             printf("rover %s\n", RV_VERSION);
             return 0;
@@ -776,6 +777,10 @@ main(int argc, char *argv[])
                 "Rover homepage: <https://github.com/lecram/rover>.\n"
             );
             return 0;
+        } else if (argc > 2 && !strcmp(argv[1], "--save-cwd")) {
+            --argc; ++argv;
+            save_cwd_file = argv[1];
+            --argc; ++argv;
         }
     }
     init_term();
@@ -1097,5 +1102,10 @@ main(int argc, char *argv[])
         free_rows(&rover.rows, rover.nfiles);
     free_marks(&rover.marks);
     delwin(rover.window);
+    if (save_cwd_file != NULL) {
+        FILE *fd = fopen(save_cwd_file, "w");
+        fputs(rover.cwd[rover.tab], fd);
+        fclose(fd);
+    }
     return 0;
 }
blob - /dev/null
blob + 33b4107fc6cf5c50dbb20b86f65566d4f5fe77f6 (mode 755)
--- /dev/null
+++ rover.sh
@@ -0,0 +1,17 @@
+#!/bin/sh
+
+# Based on ranger launcher.
+#
+# Usage: ". ./rover.sh [/path/to/rover]"
+
+tempfile="$(mktemp)"
+rover="${1:-rover}"
+test -z "$1" || shift
+"$rover" --save-cwd "$tempfile" "${@:-$(pwd)}"
+returnvalue=$?
+test -f "$tempfile" &&
+if [ "$(cat -- "$tempfile")" != "$(echo -n `pwd`)" ]; then
+    cd "$(cat "$tempfile")"
+fi
+rm -f -- "$tempfile"
+return $returnvalue