pub mod bench;
pub mod blockchaintest;
pub mod bytecode;
pub mod evmrunner;
pub mod statetest;
use clap::Parser;
#[derive(Parser, Debug)]
#[command(infer_subcommands = true)]
#[allow(clippy::large_enum_variant)]
pub enum MainCmd {
Statetest(statetest::Cmd),
Stest(statetest::Cmd),
Evm(evmrunner::Cmd),
Bytecode(bytecode::Cmd),
Bench(bench::Cmd),
Blockchaintest(blockchaintest::Cmd),
Btest(blockchaintest::Cmd),
}
#[derive(Debug, thiserror::Error)]
pub enum Error {
#[error(transparent)]
Statetest(#[from] statetest::Error),
#[error(transparent)]
Blockchaintest(#[from] blockchaintest::Error),
#[error(transparent)]
EvmRunnerErrors(#[from] evmrunner::Errors),
#[error("Custom error: {0}")]
Custom(&'static str),
}
impl MainCmd {
pub fn run(&self) -> Result<(), Error> {
match self {
Self::Statetest(cmd) | Self::Stest(cmd) => cmd.run()?,
Self::Evm(cmd) => cmd.run()?,
Self::Bytecode(cmd) => {
cmd.run()?;
}
Self::Bench(cmd) => {
cmd.run();
}
Self::Blockchaintest(cmd) | Self::Btest(cmd) => cmd.run()?,
}
Ok(())
}
}