1
0
Fork 0
mirror of https://codeberg.org/demostf/parser.git synced 2026-06-03 18:24:05 +02:00

merge codegen into main crate

This commit is contained in:
Robin Appelman 2024-02-01 00:31:23 +01:00
commit 1a549b7c40
14 changed files with 261 additions and 890 deletions

30
src/bin/codegen.rs Normal file
View file

@ -0,0 +1,30 @@
use main_error::MainError;
use prettyplease::unparse;
use std::env;
use std::fs;
use syn::{parse2, File};
use tf_demo_parser::codegen::gameevent::generate_game_events;
use tf_demo_parser::codegen::propnames::generate_prop_names;
use tf_demo_parser::Demo;
fn main() -> std::result::Result<(), MainError> {
better_panic::install();
let args: Vec<_> = env::args().collect();
if args.len() < 2 {
println!("1 argument required");
return Ok(());
}
let path = args[1].clone();
let file = fs::read(path).expect("Unable to read file");
let demo = Demo::new(&file);
let tokens = match args.get(2).map(|s| s.as_str()) {
None | Some("events") => generate_game_events(demo),
Some("props") => generate_prop_names(demo),
_ => panic!("unsupported"),
};
let file = parse2::<File>(tokens)?;
let code = unparse(&file);
println!("{}", code);
Ok(())
}