mod build;
mod gen_bake;
mod images;
mod inspect;
mod list;
mod oracle;
mod prune;
mod push;
mod report;
mod run;
use clap::{Parser, Subcommand};
#[derive(Parser)]
#[command(
name = "eval-containers",
version,
about = "A build system for AI agent evaluations"
)]
struct Cli {
#[arg(long, env = "EVAL_REGISTRY", default_value = "quay.io/eval-containers")]
registry: String,
#[command(subcommand)]
command: Commands,
}
#[derive(Subcommand)]
enum Commands {
Build(build::BuildArgs),
Push(push::PushArgs),
List(list::ListArgs),
Images(images::ImagesArgs),
Inspect(inspect::InspectArgs),
Prune(prune::PruneArgs),
Run(run::RunArgs),
Oracle(oracle::OracleArgs),
Report(report::ReportArgs),
GenBake(gen_bake::GenBakeArgs),
}
fn main() {
let _ = dotenvy::dotenv();
let cli = Cli::parse();
let result = match cli.command {
Commands::Build(args) => build::execute(&cli.registry, args),
Commands::Push(args) => push::execute(&cli.registry, args),
Commands::List(args) => list::execute(&cli.registry, args),
Commands::Images(args) => images::execute(&cli.registry, args),
Commands::Inspect(args) => inspect::execute(&cli.registry, args),
Commands::Prune(args) => prune::execute(args),
Commands::Run(args) => run::execute(&cli.registry, args),
Commands::Oracle(args) => oracle::execute(&cli.registry, args),
Commands::Report(args) => report::execute(args),
Commands::GenBake(args) => gen_bake::execute(args),
};
if let Err(e) = result {
eprintln!("error: {e}");
std::process::exit(1);
}
}