43 lines
1.2 KiB
Bash
Executable File
43 lines
1.2 KiB
Bash
Executable File
#!/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
|