use std::path::PathBuf;
use clap::*;
use std::env::current_dir;
use kls::error::Result;
#[derive(Parser, Debug)]
pub struct Arguments {
path: Option<PathBuf>,
#[arg(short='a', long)]
all: bool,
#[arg(short='A', long)]
almost_all: bool,
#[arg(short='b', long)]
ignore_backups: bool,
#[arg(short='d', long)]
directories: bool,
#[arg(short='l')]
long_listing: bool,
#[arg(short='s', long)]
size: bool,
#[arg(short='r', long, default_value="0",)]
recursive: u8,
}
impl Arguments {
fn to_tuple(&self) -> (Option<PathBuf>, bool, bool, bool, bool, bool, bool, u8) {
(self.path.clone(), self.all, self.almost_all, self.ignore_backups, self.directories, self.long_listing, self.size, self.recursive)
}
}
fn main() -> Result<()> {
let mut args = Arguments::parse();
if args.path.is_none() {
args.path = Some(current_dir().unwrap());
}
let mut dir = kls::Dir::from(args.to_tuple());
dir.print()?;
Ok(())
}