flake-update-20260505
1#!/usr/bin/env bash
2# List denote notes for raffi script filter.
3# Outputs Alfred Script Filter JSON format.
4# Usage: denote-raffi [query]
5set -euo pipefail
6
7query="${1:-}"
8DENOTE_DIR="${HOME}/desktop/org/denotes"
9
10if [[ ! -d "$DENOTE_DIR" ]]; then
11 jq -n '{"items": [{"title": "Denote directory not found", "subtitle": "'"$DENOTE_DIR"'", "arg": ""}]}'
12 exit 0
13fi
14
15items="[]"
16while IFS= read -r f; do
17 [[ -z "$f" ]] && continue
18 name=$(basename "$f")
19 # Extract title from denote filename: YYYYMMDDTHHMMSS--title__keywords.org
20 title=$(echo "$name" | sed -E 's/^[0-9]{8}T[0-9]{6}--//;s/__.*$//;s/\.org$//;s/-/ /g')
21 # Extract keywords
22 keywords=$(echo "$name" | sed -E 's/^.*__//;s/\.org$//;s/_/, /g')
23 if [[ "$keywords" == "$name" ]]; then
24 keywords=""
25 fi
26 subtitle="$keywords"
27 if [[ -n "$query" ]] && ! echo "$title $keywords" | grep -qi "$query"; then
28 continue
29 fi
30 items=$(jq --arg title "$title" --arg sub "$subtitle" --arg arg "$f" \
31 '. + [{"title": $title, "subtitle": $sub, "arg": $arg}]' <<< "$items")
32done < <(find "$DENOTE_DIR" -name '*.org' -type f | sort -r)
33
34if [[ "$items" == "[]" ]]; then
35 jq -n '{"items": [{"title": "No notes found", "subtitle": "No denote notes matching query", "arg": ""}]}'
36 exit 0
37fi
38
39jq -n --argjson items "$items" '{"items": $items}'