From 9a269628c4ce18597d24f007563a9e41f8008556 Mon Sep 17 00:00:00 2001 From: Jonathan Hodgson Date: Wed, 30 Dec 2020 19:15:33 +0000 Subject: [PATCH] Adds the ability to select a file by any substring of filename or title Close #18 --- kb | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/kb b/kb index d005303..309925b 100755 --- a/kb +++ b/kb @@ -171,8 +171,11 @@ findFile(){ vecho "findFile $*" cd "$dataDir" || return local filename + local options + local count if [ "$#" -eq 1 ] && isInt "$1"; then + # if it's an integer, try to find an entry with that id filename="$(echo "SELECT filename FROM items WHERE id = '$(safeSQL "$1")'" | sqlite3 "${sqliteFile}")" @@ -190,8 +193,21 @@ findFile(){ echo "$filename.md" exit 0 else - die "No such file or ID '$filename'" - exit 1 + # If we get here, try to find it in the db + options="$( echo "SELECT filename from items + WHERE title LIKE '%$(safeSQL $filename)%' + UNION SELECT filename from items + WHERE filename LIKE '%$(safeSQL $filename)%'" | + sqlite3 "${sqliteFile}" )" + count="$(echo "$options" | wc -l)" + if [ "$count" -eq 0 ]; then + die "No such file or ID '$filename'" + elif [ "$count" -eq 1 ]; then + echo -n "$options" + else + die "Not a unique substring\n\n${NC}Could have been any of: +$options" + fi fi fi }