How pyrotek45/avon works
Avon is a functional text-template language and CLI: users evaluate programs to preview generated files or deploy them, and can also run shell tasks. Its runtime includes a lexer, parser, evaluator, and built-ins; the CLI adds interactive use, deployment, task execution, and documentation. An optional editor path connects VS Code to an LSP server that reuses Avon’s language implementation. The README describes deployment preflight and Git integration; source excerpts are partial, so uncertain internal wiring is omitted.
Main entry points: cli/commands.rs CLI commands · mod.rs Evaluator · repl/commands.rs Interactive REPL · main.rs Language server
Components 21
Language runtime
- Lexer
src/lexer.rs - Parser
src/parser.rs - Evaluator
src/eval/mod.rs - Language values
src/common.rs - Builtin registry
src/eval/builtins/registry.rs - File built-ins
src/eval/builtins/file_io.rs - Git fetch
src/eval/mod.rs
CLI workflows
- CLI entry
src/main.rs - CLI commands
src/cli/commands.rs - Interactive REPL
src/cli/repl/commands.rs - REPL state
src/cli/repl/state.rs - Deployment
src/cli/deployment.rs - Task runner
src/cli/task_runner.rs - Builtin docs
src/cli/docs.rs
Editor integration
- VS Code extension
vscode/src/extension.ts - Language server
avon-lsp/src/main.rs
External effects
- Local filesystem
- Shell tasks
- Git hosting
Other components
- User
- VS Code user
Connections 28
- User → CLI entry: runs CLI
- CLI entry → CLI commands: dispatches
- CLI commands → Lexer: tokenizes source
- CLI commands → Parser: parses tokens
- CLI commands → Evaluator: evaluates program
- Lexer → Parser: returns tokens
- Parser → Evaluator: returns AST
- Evaluator → Language values: uses values
- Evaluator → Builtin registry: loads built-ins
- Builtin registry → File built-ins: registers
- CLI commands → Deployment: deploys result
- Deployment → Local filesystem: writes files
- CLI commands → Task runner: runs tasks
- Task runner → Shell tasks: executes tasks
- CLI commands → Builtin docs: shows help
- User → Interactive REPL: enters REPL
- Interactive REPL → REPL state: updates state
- Interactive REPL → CLI commands: processes source
- Interactive REPL → Deployment: deploys result
- VS Code user → VS Code extension: opens Avon
- VS Code extension → Language server: starts server
- Language server → Lexer: tokenizes documents
- Language server → Parser: checks syntax
- Language server → Evaluator: validates programs
- Evaluator → Git fetch: fetches remote source
- Git fetch → Git hosting: requests content
- Evaluator → File built-ins: executes file operations
- File built-ins → Local filesystem: reads files