feat(main): improve input handling and error reporting
This commit is contained in:
14
src/main.rs
14
src/main.rs
@@ -5,14 +5,23 @@ use std::path::{Path, PathBuf};
|
||||
use errors::*;
|
||||
mod viewer;
|
||||
pub fn main() -> Result<()> {
|
||||
error_stack::Report::set_color_mode(error_stack::fmt::ColorMode::Color);
|
||||
error_stack::Report::set_charset(error_stack::fmt::Charset::Utf8);
|
||||
let args = <cli::Cli as clap::Parser>::parse();
|
||||
if let Some(shell) = args.completions {
|
||||
cli::Cli::completions(shell);
|
||||
return Ok(());
|
||||
}
|
||||
let files = walker(args.input);
|
||||
let input = args
|
||||
.input
|
||||
.canonicalize()
|
||||
.change_context(Error)
|
||||
.attach("Failed to canonicalize path")?;
|
||||
let files = walker(&input);
|
||||
if files.is_empty() {
|
||||
return Err(Error).attach("No files found");
|
||||
return Err(Error)
|
||||
.attach("No files found in the folder")
|
||||
.attach(input.display().to_string());
|
||||
}
|
||||
viewer::run(files);
|
||||
|
||||
@@ -33,6 +42,7 @@ fn walker(input: impl AsRef<Path>) -> Vec<PathBuf> {
|
||||
.build()
|
||||
.expect("Failed to build type finder"),
|
||||
)
|
||||
.git_ignore(false)
|
||||
.sort_by_file_name(|a, b| a.cmp(b))
|
||||
.build()
|
||||
.filter_map(|e| e.ok())
|
||||
|
||||
Reference in New Issue
Block a user