genfile 0.3.0

CLI for genfile_core template archive management - create, manage, and materialize code generation templates.
Documentation

genfile

Crates.io docs.rs License: MIT

CLI for template archive management - create, manage, and materialize code generation templates.

Quick Start

Install via cargo:

cargo install genfile

Create a portable template archive from a directory:

# Pack directory into archive
genfile .pack input::"./my-template" output::"template.json"

# Load and materialize
genfile .archive.load path::"template.json"
genfile .value.set name::"project_name" value::"my-project"
genfile .materialize destination::"./output"

Features

  • Archive Management - Create, load, save template archives
  • File Operations - Add, remove, list template files
  • Parameter System - Define and manage template parameters
  • Value Management - Set parameter values for materialization
  • Content Control - Inline or reference-based file storage
  • REPL Mode - Interactive command-line interface
  • Dual Mode - Works as single command or interactive REPL

Interactive REPL

Run without arguments for interactive mode:

genfile
genfile REPL v0.1.0
Type '.help' for help, 'exit' to quit

genfile[0]> .archive.new name::"api-scaffold"
Created archive: api-scaffold

genfile[1]> .file.add path::"main.rs" content::"fn main() {}"
Added file: main.rs

genfile[2]> .archive.save path::"api.json"
Saved archive to: api.json

Documentation

Architecture

genfile is built on:

  • genfile_core - Core template archive library
  • unilang - Universal CLI framework with REPL support
  • error_tools - Structured error handling

Command Specifications

All command definitions are maintained as YAML specifications in commands/*.yaml:

commands/
├── archive.yaml       - Archive lifecycle (.archive.*)
├── file.yaml          - File operations (.file.*)
├── parameter.yaml     - Parameter management (.parameter.*)
├── value.yaml         - Value management (.value.*)
├── content.yaml       - Content management (.content.*)
├── materialize.yaml   - Template materialization (.materialize, .unpack)
├── pack.yaml          - Archive serialization (.pack)
└── analysis.yaml      - Analysis and introspection (.info, .status, .analyze, .discover.*)

These YAML files serve as the authoritative specification for all commands, including arguments, descriptions, examples, and functional requirement mappings. The Rust implementation in src/commands/ registers handlers that implement these specifications.

Commands Overview

Category Commands
Archive .archive.new, .archive.load, .archive.save, .archive.from_directory
Files .file.add, .file.remove, .file.list, .file.show
Parameters .parameter.add, .parameter.list, .parameter.remove
Values .value.set, .value.list, .value.clear
Content .content.internalize, .content.externalize, .content.list

Development Status

Current version: 0.2.0

All core features implemented and tested (53 integration tests, 100% passing):

  • ✅ Archive lifecycle management (FR1: .archive.*)
  • ✅ File operations (FR2: .file.*)
  • ✅ Parameter and value management (FR3/FR4: .parameter.*, .value.*)
  • ✅ Content transformation (FR5: .content.*)
  • ✅ Template materialization (FR6: .materialize, .unpack)
  • ✅ Archive serialization (FR7: .pack)
  • ✅ Analysis and introspection (FR8: .info, .status, .analyze, .discover.*)
  • ✅ Help system (FR9: .help, ., .command.help)
  • ✅ REPL mode with state persistence

Contributing

See wTools repository for contribution guidelines.

License

MIT - see LICENSE for details.