rlox-tree/src/main.rs
Laurens Miers df54cc7484
Some checks failed
ci/woodpecker/push/build Pipeline failed
feat: reading input + show prompt
2025-05-27 18:11:05 +02:00

52 lines
1 KiB
Rust

use clap::Parser;
use std::fs::File;
use std::io::{self, BufRead, Write};
#[derive(Parser, Debug)]
#[command(version, about, long_about = None)]
struct Args {
/// Script to run
#[arg(short, long)]
script: Option<String>,
}
fn run(lines: io::Lines<io::BufReader<File>>) -> () {
for line in lines {
println!("Line: {}", line.unwrap());
}
}
fn run_file(script: String) -> Result<(), io::Error> {
let file = File::open(script)?;
run(io::BufReader::new(file).lines());
Ok(())
}
fn run_prompt() -> Result<(), io::Error> {
loop {
print!("> ");
io::stdout().flush()?;
let mut buffer = String::new();
io::stdin().read_line(&mut buffer)?;
if buffer.len() == 0 {
break;
}
println!("input: '{}', {}", buffer, buffer.len());
}
Ok(())
}
fn main() -> Result<(), Box<dyn std::error::Error>> {
let args = Args::parse();
if let Some(script) = args.script {
run_file(script)?;
} else {
run_prompt()?;
}
Ok(())
}