ferogram_tl_gen/lib.rs
1// Copyright (c) Ankit Chaubey <ankitchaubey.dev@gmail.com>
2// SPDX-License-Identifier: MIT OR Apache-2.0
3//
4// ferogram: async Telegram MTProto client in Rust
5// https://github.com/ankit-chaubey/ferogram
6//
7//
8// If you use or modify this code, keep this notice at the top of your file
9// and include the LICENSE-MIT or LICENSE-APACHE file from this repository:
10// https://github.com/ankit-chaubey/ferogram
11
12#![cfg_attr(docsrs, feature(doc_cfg))]
13#![doc(html_root_url = "https://docs.rs/ferogram-tl-gen/0.4.6")]
14//! Build-time code generator that transforms a parsed TL schema into Rust source files.
15//!
16//! Intended to be used from a `build.rs` script.
17//!
18//! # Usage
19//!
20//! ```no_run
21//! // build.rs
22//! use ferogram_tl_gen::{Config, Outputs, generate};
23//! use ferogram_tl_parser::parse_tl_file;
24//! use std::fs;
25//!
26//! fn main() {
27//! let schema = fs::read_to_string("tl/api.tl").unwrap();
28//! let defs: Vec<_> = parse_tl_file(&schema)
29//! .filter_map(|r| r.ok())
30//! .collect();
31//!
32//! let out = std::env::var("OUT_DIR").unwrap();
33//! let mut outputs = Outputs::from_dir(&out).unwrap();
34//! generate(&defs, &Config::default(), &mut outputs).unwrap();
35//! }
36//! ```
37
38#![deny(unsafe_code)]
39#![warn(missing_docs)]
40
41pub mod codegen;
42mod grouper;
43mod metadata;
44mod namegen;
45
46pub use codegen::{Config, Outputs, generate};