Files starting with _ that are AppleDouble metadata (not real fonts)
were being included in casks, causing Font Book issues. Deleted 57
such files from font_files/ and added detection to the cleanup script
to prevent them in the future.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Homebrew moves the extracted archive directory into the Caskroom
without stripping the top-level name, so font artifact paths need
the homebrew-fonts/ prefix.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Formulae can't install to ~/Library/Fonts/ due to Homebrew sandboxing.
Casks have a built-in `font` artifact that handles this automatically.
- Replace Formula/ with Casks/ directory
- Rewrite generator to produce cask files instead of formulae
- Add .ttc (TrueType Collection) support
- Update all tests for cask format
- Update CLI and documentation
- Fonts with no installable files (TTF/OTF/TTC) are skipped
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Homebrew sandboxes post_install, so cp fails with EPERM.
Symlinks work around this and also ensure brew uninstall
can cleanly remove fonts.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Ruby's cp raises EPERM if the target file already exists.
Using system "cp", "-f" overwrites gracefully.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fonts now appear in Font Book automatically after brew install.
The post_install hook copies TTF and OTF files to ~/Library/Fonts/.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Homebrew sets CWD inside the extracted archive directory, so
Dir.glob paths should start at font_files/, not homebrew-fonts/font_files/.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Gitea archives unpack as homebrew-fonts/, not homebrew-fonts-main/.
Updated formula generator, tests, and docs to match.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Homebrew formulae don't support sha256 :no_check (that's a cask feature).
For a self-hosted rolling-branch archive, omitting sha256 entirely lets
Homebrew download without checksum verification.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The archive includes the formulae themselves, so the sha256 changes on
every push — making a fixed hash impossible. Use :no_check which is
standard for self-hosted taps serving from a rolling branch.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
All formulae were failing to download because the archive URL pointed to
the old Gitea port (3002). Updated to port 8085 and computed the correct
sha256 hash for the archive.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>