misc: CLI ergonomic improvements
This commit is contained in:
parent
c321bf83d3
commit
66a2905c60
1 changed files with 16 additions and 17 deletions
33
src/main.rs
33
src/main.rs
|
@ -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),
|
||||
|
|
Loading…
Reference in a new issue