diff --git a/kb b/kb index b21647f..6ea3460 100755 --- a/kb +++ b/kb @@ -234,11 +234,25 @@ listEntries(){ vecho "listEntries $*" cd "$dataDir" || return local header="--header" - [ "$1" = "--noheader" ] && header="" + local typeorlist="" + while [ "$#" -gt 0 ]; do + case "$1" in + --noheader) header="" ;; + --normal) typeorlist+=" OR items.type = 'normal'" ;; + --assets) typeorlist+=" OR items.type = 'assets'" ;; + --links) typeorlist+=" OR items.type = 'links'" ;; + *) die "invalid list option: '$1'." ;; + esac + shift + done + typeorlist="$(echo "$typeorlist" | sed 's/^ OR //')" + [ -z "$typeorlist" ] && typeorlist="items.type = 'normal'" + echo "SELECT items.id,items.filename,items.title,items.type, GROUP_CONCAT(tags.name,',') tags FROM items LEFT JOIN links ON items.id = links.itemID LEFT JOIN tags ON links.tagID = tags.id + WHERE $typeorlist GROUP BY items.id;" | sqlite3 --column $header "${sqliteFile}" }