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