use std::path::PathBuf;
use clap::Args;
use eyre::Result;
use lux_lib::{config::Config, operations, workspace::Workspace};
use crate::build::{self, Build};
#[derive(Args)]
pub struct Run {
args: Vec<String>,
#[clap(default_value_t = false)]
#[arg(long)]
no_loader: bool,
#[arg(long)]
dir: Option<PathBuf>,
#[clap(flatten)]
build: Build,
}
pub async fn run(run_args: Run, config: Config) -> Result<()> {
let workspace = Workspace::current_or_err()?;
let package = run_args.build.package.clone();
build::build(run_args.build, config.clone()).await?;
operations::Run::new()
.workspace(&workspace)
.maybe_package(package)
.args(&run_args.args)
.config(&config)
.disable_loader(run_args.no_loader)
.run()
.await?;
Ok(())
}