use unilang::pipeline::Pipeline;
use unilang::interpreter::ExecutionContext;
mod commands;
mod handlers;
mod error;
mod repl;
fn main() -> Result< (), Box< dyn core::error::Error > >
{
let argv : Vec< String > = std::env::args().collect();
let registry = commands::create_registry()?;
let pipeline = Pipeline::new( registry );
if argv.len() == 1
{
return repl::run_repl( &pipeline );
}
let ctx = ExecutionContext::default();
let result = pipeline.process_command_from_argv( &argv[ 1.. ], ctx );
if !result.success
{
eprintln!( "{}", result.error.unwrap_or_default() );
std::process::exit( 1 );
}
for output in result.outputs
{
if !output.content.is_empty()
{
println!( "{}", output.content );
}
}
Ok( () )
}