use crate::app::{App, repo_scope};
use crate::git::no_repos;
use std::io::{self, IsTerminal};
use std::path::PathBuf;
#[derive(clap::Args)]
pub struct Args {
#[arg(default_value = ".")]
pub path: PathBuf,
#[arg(short, long, default_value_t = 3)]
pub depth: usize,
#[arg(long)]
pub dirty: bool,
}
pub fn run(args: Args) {
if !io::stdout().is_terminal() {
eprintln!("slu irepos needs an interactive terminal - use `slu repos` for plain output");
return;
}
match App::at_repos(&args.path, args.depth, repo_scope(args.dirty)) {
Some(app) => app.run("irepos"),
None => {
eprintln!("{}", no_repos(&args.path, args.depth));
std::process::exit(1);
}
}
}