mod python;
mod uv;
use clap::{Parser, Subcommand};
use std::path::PathBuf;
use std::process;
use python::python;
use uv::uv;
#[derive(Parser)]
#[clap(author, version, about, long_about = None)]
struct Args {
#[clap(subcommand)]
command: Commands,
}
#[derive(Subcommand)]
enum Commands {
Run {
#[clap(value_name = "SCRIPT")]
script: PathBuf,
#[clap(short, long, default_value = ".")]
project: PathBuf,
#[clap(short = 'E', long)]
env: Vec<String>,
#[clap(short = 'e', long)]
env_file: Option<PathBuf>,
#[clap(long, default_value_t = false)]
quiet: bool,
#[clap(long, default_value_t = false)]
clean: bool,
#[arg(num_args(0..), trailing_var_arg = true, allow_hyphen_values = true)]
py_args: Vec<String>,
},
Uv {
#[arg(trailing_var_arg = true, allow_hyphen_values = true)]
args: Vec<String>,
},
}
fn main() -> process::ExitCode {
let args = Args::parse();
match args.command {
Commands::Run {
script,
project,
env,
env_file,
quiet,
clean,
py_args,
} => python(script, project, env, env_file, quiet, clean, py_args),
Commands::Uv { args } => uv(args),
}
}