update the cache while a directory is selected - iomenu - interactive terminal-based selection menu
(HTM) git clone git://bitreich.org/iomenu git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/iomenu
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) Tags
(DIR) README
(DIR) LICENSE
---
(DIR) commit 9c174ec5092e0424e3459de569543eb457778c05
(DIR) parent 043e751461d877739b5a895d453992ea5d5f5b3c
(HTM) Author: Josuah Demangeon <mail@josuah.net>
Date: Fri, 22 Jun 2018 14:02:27 +0200
update the cache while a directory is selected
Diffstat:
M bin/io-xdg-open | 30 +++++++++++++++++++++++-------
1 file changed, 23 insertions(+), 7 deletions(-)
---
(DIR) diff --git a/bin/io-xdg-open b/bin/io-xdg-open
@@ -1,14 +1,30 @@
-#!/bin/sh -e
+#!/bin/sh -ex
# pick a file to open with xdg-open with iomenu with caching
+#
+# The cache is updated when a directory is selected.
LC_COLLATE=C
-mkdir -p "$HOME/.cache"
+if test -f "$HOME/.cache/find" && test $# = 0
+then exec "$0" "$HOME"
+elif test $# = 0
+then exec xdg-open "$(iomenu <$HOME/.cache/find)"
+fi
-test "$1" = -c || ! test -f "$HOME/.cache/find" &&
- find "$HOME" '(' -name .git -o -name CVS ')' -prune -o \
+mkdir -p "$HOME/.cache"
+{
+ find "$1" '(' -name .git -o -name CVS ')' -prune -o \
-type d -exec printf '%s/\n' '{}' + -o \
- -type f -exec printf '%s\n' '{}' + |
- sort -o $HOME/.cache/find
+ -type f -exec printf '%s\n' '{}' + | tee "$HOME/.cache/$$"
+ grep -vF "$1" $HOME/.cache/find
+} | sort -o "$HOME/.cache/find"
+
+s=$(iomenu <$HOME/.cache/$$)
+
+rm "$HOME/.cache/$$"
-exec xdg-open "$(iomenu <$HOME/.cache/find)"
+case $s in
+('') exit 1 ;;
+(*/) exec "$0" "$(cd "$s" && pwd)" ;;
+(*) exec xdg-open ;;
+esac