Skip to content

feat(v0.6): Homebrew formula for brew install llmwiki (#41) #63

feat(v0.6): Homebrew formula for brew install llmwiki (#41)

feat(v0.6): Homebrew formula for brew install llmwiki (#41) #63

Workflow file for this run

name: CI
on:
push:
branches: [master, main]
pull_request:
branches: [master, main]
permissions:
contents: read
jobs:
lint-and-test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.9", "3.12"]
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install required deps
run: |
python -m pip install --upgrade pip
python -m pip install markdown
python -m pip install ruff pytest
- name: Ruff lint
run: |
ruff check llmwiki tests || true
# Don't fail the build on warnings in v0.1
- name: CLI smoke tests
run: |
python -m llmwiki --version
python -m llmwiki adapters
python -m llmwiki init
- name: Build smoke test with fixtures
run: |
python -m llmwiki build --out ./ci-site || true
test -f ./ci-site/style.css || echo "build produced no output (no fixtures yet — this is ok in v0.1)"
- name: Run pytest
run: |
if [ -d tests ] && [ -n "$(find tests -name 'test_*.py' 2>/dev/null)" ]; then
python -m pytest tests/ -q
else
echo "no tests yet — skipping"
fi
- name: Privacy grep (should return zero hits)
run: |
# Never commit the real username; the test fixtures use USER as placeholder
if grep -rn "deepshikhasingh" --include="*.md" --include="*.py" --exclude-dir=".temp" --exclude-dir=".framework" --exclude-dir=".git" .; then
echo "ERROR: real username leaked into committed files" >&2
exit 1
fi
performance-budget:
runs-on: ubuntu-latest
needs: lint-and-test
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install deps
run: python -m pip install markdown
- name: Build against fixtures (when present)
run: |
python -m llmwiki init
if [ -d tests/fixtures/demo ]; then
# Stage demo fixtures as if they'd been produced by `llmwiki sync`.
cp -a tests/fixtures/demo/. raw/sessions/
time python -m llmwiki build --out ./perf-site
if [ ! -d ./perf-site ]; then
echo "ERROR: build produced no output directory" >&2
exit 1
fi
# Budget: build under 15 seconds, site under 50 MB
SIZE=$(du -sb ./perf-site | cut -f1)
MB=$((SIZE / 1024 / 1024))
echo "site size: ${MB} MB"
if [ "$MB" -gt 50 ]; then
echo "ERROR: site size ${MB} MB exceeds 50 MB budget" >&2
exit 1
fi
else
echo "no demo fixtures yet — skipping perf budget check"
fi