mix proto_rune.gen.lexicons (proto_rune v0.3.0)

Copy Markdown

Generates Peri schema modules from ATProto lexicon JSON files.

This task reads lexicon definitions from priv/atproto/lexicons and generates corresponding Elixir modules with Peri schemas in lib/proto_rune/lexicon/.

Usage

$ mix proto_rune.gen.lexicons

Options

  • --lexicons-dir - Directory containing lexicon JSON files (default: priv/atproto/lexicons)
  • --output-dir - Directory where generated modules will be written (default: lib/proto_rune/lexicon/)
  • --recursive - Recursively search for lexicon files in subdirectories (default: true)
  • --force - Force regeneration even if output files exist (default: false)

Examples

# Generate all lexicons with default settings
$ mix proto_rune.gen.lexicons

# Specify custom directories
$ mix proto_rune.gen.lexicons --lexicons-dir custom/lexicons --output-dir custom/output

# Force regeneration
$ mix proto_rune.gen.lexicons --force

Generated Files

For each lexicon file app.bsky.feed.post.json, this task will generate:

  • lib/proto_rune/lexicon/app/bsky/feed/post.ex

Each generated module will contain:

  • Module documentation from the lexicon description
  • Peri defschema definitions for all defs in the lexicon
  • Helper functions for validation

Notes

  • Generated files should be committed to git for version control
  • If lexicon files are updated, re-run this task to regenerate modules
  • Generated modules are not meant to be edited manually