cs2-dumper/src/main.rs

81 lines
1.5 KiB
Rust
Raw Normal View History

2023-09-25 22:46:10 +08:00
#![allow(dead_code)]
use std::fs;
use std::time::Instant;
2023-09-28 22:41:21 +08:00
use clap::Parser;
2023-09-25 22:46:10 +08:00
use simple_logger::SimpleLogger;
use builder::*;
use dumpers::*;
use error::Result;
use remote::Process;
mod builder;
mod config;
mod dumpers;
mod error;
mod remote;
mod sdk;
2023-09-28 22:41:21 +08:00
#[derive(Parser, Debug)]
#[command(author, version, about, long_about = None)]
struct Args {
#[arg(long)]
all: bool,
#[arg(short, long)]
interfaces: bool,
#[arg(short, long)]
offsets: bool,
#[arg(short, long)]
schemas: bool,
}
2023-09-25 22:46:10 +08:00
fn main() -> Result<()> {
SimpleLogger::new().init().unwrap();
2023-09-28 22:41:21 +08:00
let Args {
all,
interfaces,
offsets,
schemas,
} = Args::parse();
let start_time = Instant::now();
2023-09-25 22:46:10 +08:00
fs::create_dir_all("generated")?;
let process = Process::new("cs2.exe")?;
let mut builders: Vec<FileBuilderEnum> = vec![
FileBuilderEnum::CppBuilder(CppBuilder),
FileBuilderEnum::CSharpBuilder(CSharpBuilder),
FileBuilderEnum::JsonFileBuilder(JsonFileBuilder::default()),
FileBuilderEnum::RustFileBuilder(RustFileBuilder),
];
2023-09-28 22:41:21 +08:00
let all = all || !(interfaces || offsets || schemas);
if schemas || all {
dump_schemas(&mut builders, &process)?;
}
if interfaces || all {
dump_interfaces(&mut builders, &process)?;
}
2023-09-25 22:46:10 +08:00
2023-09-28 22:41:21 +08:00
if offsets || all {
dump_offsets(&mut builders, &process)?;
}
2023-09-25 22:46:10 +08:00
let duration = start_time.elapsed();
log::info!("Done! Time elapsed: {:?}", duration);
Ok(())
}