Files
simbarag/Makefile
T
ryan 6a03f3f9f0 Add Tauri desktop shell spike
desktop/ is a thin Tauri v2 app: a bundled connect page probes
SIMBA_URL/api/health and hands the window to the deployed web app.
Adds a menu-bar icon (Show / New Chat / Reconnect / Quit), Alt+Space
toggle, close-to-hide, single-instance and Dock reopen. The remote
origin gets no IPC. Rust 1.90 is pinned via rust-toolchain.toml.
New make targets: desktop-dev, desktop.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 17:40:50 -04:00

84 lines
2.4 KiB
Makefile

.PHONY: deploy redeploy build up down restart logs migrate migrate-new migrate-history frontend desktop desktop-dev test test-cov reindex reindex-obsidian
# Blue-green: detect the running color (default blue when nothing is running)
ACTIVE_COLOR := $(shell docker compose ps --status running --services 2>/dev/null | grep -oE 'raggr-(blue|green)' | head -1 | cut -d- -f2)
ifeq ($(ACTIVE_COLOR),)
ACTIVE_COLOR := blue
endif
RAGGR := raggr-$(ACTIVE_COLOR)
# Both profiles enabled for commands that only touch existing containers
# (never use this with `up`, which would start both colors)
COMPOSE := docker compose --profile blue --profile green
# Build and deploy
deploy: build up
# Zero-downtime blue-green swap (see scripts/deploy.sh)
redeploy:
git pull && ./scripts/deploy.sh
build:
docker compose --profile $(ACTIVE_COLOR) build $(RAGGR)
up:
docker compose --profile $(ACTIVE_COLOR) up -d
down:
$(COMPOSE) down
restart:
$(COMPOSE) restart $(RAGGR)
logs:
$(COMPOSE) logs -f $(RAGGR)
# Vector store reindexing
reindex:
$(COMPOSE) exec $(RAGGR) python -c "\
import asyncio; \
from blueprints.rag.logic import delete_all_documents, index_documents, index_obsidian_documents; \
delete_all_documents(); \
asyncio.run(index_documents()); \
asyncio.run(index_obsidian_documents()); \
print('Reindex complete')"
reindex-obsidian:
$(COMPOSE) exec $(RAGGR) python -c "\
import asyncio; \
from blueprints.rag.logic import delete_documents_by_metadata, index_obsidian_documents; \
delete_documents_by_metadata('source', 'obsidian'); \
asyncio.run(index_obsidian_documents()); \
print('Obsidian reindex complete')"
# Database migrations
migrate:
$(COMPOSE) exec $(RAGGR) aerich upgrade
migrate-new:
@./scripts/migrate-new.sh
migrate-history:
$(COMPOSE) exec $(RAGGR) aerich history
# Tests
test:
pytest tests/ -v
test-cov:
pytest tests/ -v --cov
# Frontend
frontend:
cd raggr-frontend && yarn install && yarn build
# Desktop app (Tauri). Point it at the server with SIMBA_URL, e.g.
# make desktop-dev SIMBA_URL=https://simba.example.com
# SIMBA_URL is read at runtime and baked in at build time as the default.
desktop-dev:
cd desktop && npm install && SIMBA_URL=$(SIMBA_URL) npx tauri dev
desktop:
cd desktop && npm install && SIMBA_URL=$(SIMBA_URL) npx tauri build --bundles app
rm -rf /Applications/Simba.app
cp -R desktop/src-tauri/target/release/bundle/macos/Simba.app /Applications/