lx-cli 0.1.6

A nicer way to list your files ✨
Documentation
mod cli;
mod config;
mod file_entry;
mod formatter;
mod icon;
mod reader;
mod sort;

use clap::Parser;
use std::path::Path;

use cli::Args;
use config::load_config;
use formatter::{format_long, format_one_per_line, format_recursive, format_short};
use reader::read_directory;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let args = Args::parse();
    let config = load_config();

    let target_path = Path::new(&args.target);

    if !target_path.exists() {
        eprintln!(
            "lx: cannot access '{}': No such file or directory",
            args.target
        );
        return Ok(());
    }

    if args.recursive {
        format_recursive(target_path, &config, args.show_hidden, args.long);
    } else {
        let entries = read_directory(target_path, args.show_hidden)?;

        if args.long {
            format_long(entries, &config);
        } else if args.one_per_line {
            format_one_per_line(entries, &config);
        } else {
            format_short(entries, &config);
        }
    }

    Ok(())
}