misc: CLI ergonomic improvements

This commit is contained in:
Roman Godmaire 2024-05-05 09:49:12 -04:00
parent c321bf83d3
commit 66a2905c60

View file

@ -19,31 +19,30 @@ struct Args {
#[derive(Debug, Subcommand)] #[derive(Debug, Subcommand)]
enum Command { enum Command {
Run { #[clap(name = "-c", about = "Run a program passed in as a string")]
#[clap(short, long)] RunCommand { command: String },
command: String,
}, #[clap(about = "Run a Mute file")]
Run { file: String },
#[clap(about = "Start a REPL")]
Repl, Repl,
} }
impl std::default::Default for Command {
fn default() -> Self {
Command::Repl
}
}
fn main() { fn main() {
if std::env::args().len() == 1 {
repl();
return;
}
let args = Args::parse(); let args = Args::parse();
match args.command { match args.command {
Command::Run { command } => { Command::Run { file } => {
let input = std::fs::read_to_string(file).unwrap();
let res = run(&input);
match res {
Ok(expressions) => expressions.into_iter().for_each(|expr| println!("{expr}")),
Err(err) => println!("{}", err),
}
}
Command::RunCommand { command } => {
let res = run(&command); let res = run(&command);
match res { match res {
Ok(expressions) => expressions.into_iter().for_each(|expr| println!("{expr}")), Ok(expressions) => expressions.into_iter().for_each(|expr| println!("{expr}")),
Err(err) => println!("{}", err), Err(err) => println!("{}", err),