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)]
enum Command {
Run {
#[clap(short, long)]
command: String,
},
#[clap(name = "-c", about = "Run a program passed in as a string")]
RunCommand { command: String },
#[clap(about = "Run a Mute file")]
Run { file: String },
#[clap(about = "Start a REPL")]
Repl,
}
impl std::default::Default for Command {
fn default() -> Self {
Command::Repl
}
}
fn main() {
if std::env::args().len() == 1 {
repl();
return;
}
let args = Args::parse();
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);
match res {
Ok(expressions) => expressions.into_iter().for_each(|expr| println!("{expr}")),
Err(err) => println!("{}", err),