From 26a501b6dd1a8638bff75f03d748ee7d5e2fd879 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20W=C3=A4rme?= Date: Sat, 14 Feb 2026 23:44:46 +0100 Subject: [PATCH] docs: add doc indexing script (rg/json + sqlite FTS) --- scripts/build-doc-index.sh | 42 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100755 scripts/build-doc-index.sh diff --git a/scripts/build-doc-index.sh b/scripts/build-doc-index.sh new file mode 100755 index 0000000..a662eae --- /dev/null +++ b/scripts/build-doc-index.sh @@ -0,0 +1,42 @@ +#!/usr/bin/env bash +set -euo pipefail +# Build a simple ripgrep JSON index of docs and a sqlite FTS index (if sqlite3 available) +OUT_JSON=workspace/docs-index.json +mkdir -p workspace + +if command -v rg >/dev/null 2>&1; then + rg --no-ignore -n --hidden --glob '!node_modules' --json "" docs | jq -s '.' > "$OUT_JSON" + echo "Wrote $OUT_JSON" +else + echo "ripgrep (rg) not found. Please run scripts/install-cli-tools.sh" + exit 2 +fi + +if command -v sqlite3 >/dev/null 2>&1; then + SQL_DB=workspace/docs-index.db + echo "Creating sqlite FTS db at $SQL_DB" + sqlite3 "$SQL_DB" <<'SQL' + CREATE VIRTUAL TABLE IF NOT EXISTS docs USING fts5(path,content); +SQL + # Populate: for each file in docs, insert path and content + python3 - <<'PY' +import os,sqlite3 +db='workspace/docs-index.db' +conn=sqlite3.connect(db) +c=conn.cursor() +for root,_,files in os.walk('docs'): + for f in files: + p=os.path.join(root,f) + try: + with open(p,'r',encoding='utf-8') as fh: + content=fh.read() + except Exception: + continue + c.execute('INSERT INTO docs(path,content) VALUES (?,?)',(p,content)) +conn.commit(); conn.close() +print('Inserted docs') +PY + echo "SQLite FTS built" +else + echo "sqlite3 not found; skipping sqlite FTS build" +fi