homebrew-fonts/CLAUDE.md
Matt Troutman 183268f66e
Update download URLs for trtmn/homebrew-fonts on port 3000
Migrated from old gitea path Fonts/homebrew-fonts:8085 to trtmn/homebrew-fonts:3000.
Updates:
- Cask URL template in .fontfoldercleanup/create_homebrew_formula.py
- tap_config.rb (tap name, homepage, url, class)
- README.md (brew tap command + install --cask)
- CLAUDE.md, PROJECT.md (URL references)
- Regenerated all 200 casks with new URLs
2026-04-22 19:13:45 -05:00

54 lines
2.7 KiB
Markdown

# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## What This Is
A Homebrew tap for custom fonts. Users `brew tap` and then `brew install --cask font-<name>`. The repo contains font assets in `font_files/` and generated Ruby cask files in `Casks/`.
## Commands
```bash
# Add or update a font (cleanup + cask generation + tests + brew audit)
uv run add-font <path_or_name>
uv run add-font <path_or_name> --no-test --no-audit
# Run tests
uv run pytest tests/ -v --tb=short
# Run a single test file
uv run pytest tests/test_font_structure.py -v
# Run tests for a specific font
uv run pytest tests/ -v -k "font-acrylic-hand"
# Regenerate all casks (without the full add-font flow)
python3 .fontfoldercleanup/create_homebrew_formula.py
# Reorganize font folders only
python3 .fontfoldercleanup/cleanup_font_folders.py --path font_files
```
## Architecture
- **`font_files/font-<name>/`** — Each font has exactly 4 subdirs: `ttf/`, `otf/`, `web/`, `other_files/`. No other top-level files allowed.
- **`Casks/font-<name>.rb`** — Generated Ruby cask files. **Never edit by hand.** Edits go in `.fontfoldercleanup/create_homebrew_formula.py`.
- **`tap_cli/main.py`** — The `add-font` CLI entry point. Copies font to `font_files/`, runs cleanup script, runs cask generator, then runs tests and `brew audit`.
- **`.fontfoldercleanup/cleanup_font_folders.py`** — Sorts loose font files into `ttf/`, `otf/`, `web/`, `other_files/` subdirs.
- **`.fontfoldercleanup/create_homebrew_formula.py`** — Scans `font_files/font-*` and writes one cask `.rb` per font in `Casks/`.
- **`tests/`** — Parametrized pytest suite. Tests validate: folder structure, cask existence, cask content (paths, identifier), no orphan casks, no duplicates.
- **`To Sort/`** — Staging area for new downloads not yet processed.
## Cask Naming Convention
Cask files use kebab-case identifiers matching the font folder name: `font-<name>`.
- `font-acrylic-hand``cask "font-acrylic-hand" do`
Fonts are installed to `~/Library/Fonts/` automatically via the `font` artifact.
## Key Constraints
- Python 3, standard library only (pathlib, shutil, argparse, re). pytest is the sole dependency.
- Casks download from `http://clancy.genet-godzilla.ts.net:3000/trtmn/homebrew-fonts/archive/main.tar.gz` and expect the archive to unpack as `homebrew-fonts/`.
- CI runs `uv run pytest` on push/PR to main, plus `brew audit` on macOS (non-blocking).
- `PROJECT.md` is the canonical project description. When updating project rules, update `PROJECT.md` first, then sync `.cursorrules`, `.github/copilot-instructions.md`, and `.claude/skills/project-context/SKILL.md`.