layer_tl_gen/lib.rs
1#![doc(html_root_url = "https://docs.rs/layer-tl-gen/0.4.0")]
2//! Build-time code generator that transforms a parsed TL schema into Rust source files.
3//!
4//! Intended to be used from a `build.rs` script.
5//!
6//! # Usage
7//!
8//! ```no_run
9//! // build.rs
10//! use layer_tl_gen::{Config, Outputs, generate};
11//! use layer_tl_parser::parse_tl_file;
12//! use std::fs;
13//!
14//! fn main() {
15//! let schema = fs::read_to_string("tl/api.tl").unwrap();
16//! let defs: Vec<_> = parse_tl_file(&schema)
17//! .filter_map(|r| r.ok())
18//! .collect();
19//!
20//! let out = std::env::var("OUT_DIR").unwrap();
21//! let mut outputs = Outputs::from_dir(&out).unwrap();
22//! generate(&defs, &Config::default(), &mut outputs).unwrap();
23//! }
24//! ```
25
26#![deny(unsafe_code)]
27#![warn(missing_docs)]
28
29mod grouper;
30mod metadata;
31mod namegen;
32pub mod codegen;
33
34pub use codegen::{generate, Config, Outputs};