Add --action option to not executable
* --action dump, parse, or run will cause the program to do the appropriate action. Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
This commit is contained in:
@@ -18,11 +18,20 @@ struct Options {
|
||||
#[structopt(short = "d", long)]
|
||||
disassemble: bool,
|
||||
*/
|
||||
|
||||
#[structopt(long, default_value = "run")]
|
||||
action: String,
|
||||
}
|
||||
|
||||
fn main() -> Result<()> {
|
||||
let opt = Options::from_args();
|
||||
let text = fs::read_to_string(&opt.input)?;
|
||||
let action = &opt.action.to_lowercase();
|
||||
match action.as_str() {
|
||||
"run" | "parse" | "dump" => {},
|
||||
_ => eprintln!("WARNING: unknown action {}", action)
|
||||
}
|
||||
|
||||
let ast = match ast::parse(text.as_str()) {
|
||||
Ok(ast) => ast,
|
||||
Err(errs) => {
|
||||
@@ -32,15 +41,17 @@ fn main() -> Result<()> {
|
||||
return Err("errors reported, exiting".into());
|
||||
}
|
||||
}.unwrap();
|
||||
//println!("{:#?}", ast);
|
||||
if action == "parse" {
|
||||
println!("{:#?}", ast);
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
let package = Compile::new().compile(&ast)?;
|
||||
|
||||
//println!("{:#?}", inst);
|
||||
//println!("{:#?}", const_pool);
|
||||
{
|
||||
if action == "dump" {
|
||||
let mut stdout = std::io::stdout();
|
||||
package.dump(&mut stdout)?;
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
Ok(())
|
||||
|
||||
Reference in New Issue
Block a user