feat(rp-rust): implement rp tool in Rust (#235)

This commit is contained in:
Gergő Móricz
2024-04-19 20:44:55 +02:00
committed by GitHub
parent c2d0d34c57
commit cc7e8dc510
12 changed files with 1518 additions and 428 deletions

46
rp/src/main.rs Normal file
View File

@@ -0,0 +1,46 @@
use std::process::exit;
use cli::{Cli, Command};
use exchange::exchange;
use key::{genkey, pubkey};
mod cli;
mod exchange;
mod key;
#[tokio::main]
async fn main() {
let cli = match Cli::parse(std::env::args().peekable()) {
Ok(cli) => cli,
Err(err) => {
eprintln!("{}", err);
exit(1);
}
};
let command = cli.command.unwrap();
let res = match command {
Command::GenKey { private_keys_dir } => genkey(&private_keys_dir),
Command::PubKey {
private_keys_dir,
public_keys_dir,
} => pubkey(&private_keys_dir, &public_keys_dir),
Command::Exchange(mut options) => {
options.verbose = cli.verbose;
exchange(options).await
}
Command::Help => {
println!("Usage: rp [verbose] genkey|pubkey|exchange [ARGS]...");
Ok(())
}
};
match res {
Ok(_) => {}
Err(err) => {
eprintln!("An error occurred: {}", err);
exit(1);
}
}
}