Permitting file as argument
[iomenu.git] / io-files
blob141006519f1b6af11f435accd50456c7089f3f1c
1 # Prompt a file to open in PAGER, with an history.  In less(1), 'v' to edit.
4 CACHE="${XDG_CACHE_HOME:-$HOME/.cache}"
7 get_path()
9         {
10                 printf '#\n# Recent files\n'
11                 [ -f "$CACHE/iomenu/files" ] && tac "$CACHE/iomenu/files"
13                 printf '#\n# Current directory\n'
14                 find "$PWD" -maxdepth 1 -type f
16                 printf '#\n# All files\n'
17                 find "$HOME" -type f ! -path '*/.cache/*' ! -path '*/.git/*'
19         } | sed "s|$HOME|~|" | iomenu -l 256 -s '#' | sed "s|~|$HOME|" |
20                 tee -a "$CACHE/iomenu/files"
24 update_history()
26         sort "$CACHE/iomenu/files" | uniq -d | while IFS='' read -r f
27         do
28                 printf '%s\n' "$(grep -Fxv "$f" "$CACHE/iomenu/files")" "$f" \
29                         > "$CACHE/iomenu/files"
30         done
32         printf '%s\n' "$(tail "$CACHE/iomenu/files")" > "$CACHE/iomenu/files"
36 main()
38         mkdir -p "$CACHE/iomenu"
40         file="${1:-$(get_path)"}"
42         update_history
44         [ "$file" ] && [ -d "${file%/*}" ] && exec $EDITOR "$file"
48 main "$@"