use clap::Parser;
use std::fs;
use std::env;
use anyhow::{Context, Result};
#[derive(Parser)]
struct Cli {
comm: String,
patt: String,
path: std::path::PathBuf,
}
fn main() -> Result<()> {
let args_check: Vec<String> = env::args().collect();
if args_check[1].to_string().to_lowercase() == "greppy" {
let args = Cli::parse();
let content = std::fs::read_to_string(&args.path)
.with_context(|| format!("could not read file '{}'", args.path.display()))?;
for line in content.lines() {
if line.contains(&args.patt) {
println!("{}", line);
}
}
}
else if args_check[1].to_string().to_lowercase() == "listy" {
let paths = fs::read_dir("./").unwrap();
for path in paths {
println!("{}", path.unwrap().path().display())
}
}
else if args_check[1].to_string().to_lowercase() == "catty" {
let args = Cli{ comm: args_check[1].to_string().to_lowercase(), patt: args_check[2].to_string(), path: "".into()};
let content = std::fs::read_to_string(&args.patt)
.with_context(|| format!("could not read file '{}'", args.path.display()))?;
for line in content.lines() {
println!("{}", line);
}
}
else if args_check[1].to_string().to_lowercase() == "echoey" {
println!("{}", args_check[2]);
}
Ok(())
}