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)]
|
#[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),
|
||||||
|
|
Loading…
Reference in a new issue