rpecli 0.1.9

Rust cli tool to display information about PE files
Documentation
use std::path::PathBuf;

use exe::VecPE;
use rpecli::utils::{export::pexp, import::pimp};

fn print_exports_as_json(pe_filepath: &PathBuf) {
    let Ok(image) = VecPE::from_disk_file(pe_filepath) else {
        panic!("Could not read file");
    };

    let x = match pexp(&image) {
        Some(exports) => exports,
        None => panic!("Invalid/Non existant exports"),
    };

    println!("{}", serde_json::to_string(&x).unwrap());
}

fn print_imports_as_json(pe_filepath: &PathBuf) {
    let Ok(image) = VecPE::from_disk_file(pe_filepath) else {
        panic!("Could not read file");
    };

    let x = match pimp(&image) {
        Some(imports) => imports,
        None => panic!("Invalid/Non existant imports"),
    };

    println!("{}", serde_json::to_string(&x).unwrap());
}

pub fn main() {
    if std::env::args().len() < 2 {
        println!(
            "{}",
            format!("Usage: {} <target>", std::env::args().nth(0).unwrap())
        );
    }

    print_imports_as_json(&std::path::PathBuf::from(std::env::args().nth(1).unwrap()));
    print_exports_as_json(&std::path::PathBuf::from(std::env::args().nth(1).unwrap()));
}