feat: use clap for cli and resolve pr comments

This commit is contained in:
royvardhan
2025-02-06 18:30:52 +05:30
parent b93856073c
commit a5166f282d
7 changed files with 181 additions and 69 deletions

View File

@@ -1,5 +1,6 @@
use std::io::{self, Read};
use clap::Parser;
use serde_json::Value;
use tycho_core::dto::Chain;
use tycho_execution::encoding::{
@@ -13,32 +14,15 @@ use tycho_execution::encoding::{
};
mod lib {
pub mod help;
pub mod cli;
}
const DEFAULT_ROUTER_ADDRESS: &str = "0xaa820C29648D5EA543d712cC928377Bd7206a0E7";
use lib::cli::Cli;
const DEFAULT_EXECUTORS_FILE_PATH: &str = "src/encoding/config/executor_addresses.json";
const DEFAULT_PRIVATE_KEY: &str =
"0x938f4da9d3a947a4a6c53cfd8fcdd876641d6a4519243820b648af0bc3e67f7c";
fn main() -> Result<(), Box<dyn std::error::Error>> {
let args: Vec<String> = std::env::args().collect();
// Show help text if requested
if args.len() > 1 && (args[1] == "-h" || args[1] == "--help") {
println!("{}", lib::help::HELP_TEXT);
return Ok(());
}
let router_address = args
.get(1)
.map(|s| s.as_str())
.unwrap_or(DEFAULT_ROUTER_ADDRESS);
let private_key = args
.get(2)
.map(|s| s.to_string())
.or_else(|| Some(DEFAULT_PRIVATE_KEY.to_string()));
let cli = Cli::parse();
// Read from stdin until EOF
let mut buffer = String::new();
@@ -47,13 +31,11 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
.map_err(|e| format!("Failed to read from stdin: {}", e))?;
if buffer.trim().is_empty() {
eprintln!("Error: No input provided");
eprintln!("{}", lib::help::HELP_TEXT);
std::process::exit(1);
return Err("No input provided. Expected JSON input on stdin.".into());
}
// Encode the solution
let encoded = encode_swaps(&buffer, router_address, private_key)?;
let encoded = encode_swaps(&buffer, &cli.router_address, cli.private_key)?;
// Output the encoded result as JSON to stdout
println!(