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::*;
|
use errors::*;
|
||||||
mod viewer;
|
mod viewer;
|
||||||
pub fn main() -> Result<()> {
|
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();
|
let args = <cli::Cli as clap::Parser>::parse();
|
||||||
if let Some(shell) = args.completions {
|
if let Some(shell) = args.completions {
|
||||||
cli::Cli::completions(shell);
|
cli::Cli::completions(shell);
|
||||||
return Ok(());
|
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() {
|
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);
|
viewer::run(files);
|
||||||
|
|
||||||
@@ -33,6 +42,7 @@ fn walker(input: impl AsRef<Path>) -> Vec<PathBuf> {
|
|||||||
.build()
|
.build()
|
||||||
.expect("Failed to build type finder"),
|
.expect("Failed to build type finder"),
|
||||||
)
|
)
|
||||||
|
.git_ignore(false)
|
||||||
.sort_by_file_name(|a, b| a.cmp(b))
|
.sort_by_file_name(|a, b| a.cmp(b))
|
||||||
.build()
|
.build()
|
||||||
.filter_map(|e| e.ok())
|
.filter_map(|e| e.ok())
|
||||||
|
|||||||
Reference in New Issue
Block a user