fix: add validation when passing --inline-toc
feat: add coloring when displaying CLI errors
This commit is contained in:
parent
2f4da824ba
commit
eac28da798
3 changed files with 15 additions and 2 deletions
12
src/cli.rs
12
src/cli.rs
|
@ -119,7 +119,17 @@ impl<'a> TryFrom<ArgMatches<'a>> for AppConfig {
|
||||||
4..=u64::MAX => LogLevel::Debug,
|
4..=u64::MAX => LogLevel::Debug,
|
||||||
})
|
})
|
||||||
.is_logging_to_file(arg_matches.is_present("log-to-file"))
|
.is_logging_to_file(arg_matches.is_present("log-to-file"))
|
||||||
.inline_toc(arg_matches.is_present("inline-toc"))
|
.inline_toc(
|
||||||
|
(if arg_matches.is_present("inline-toc") {
|
||||||
|
if arg_matches.value_of("export") == Some("epub") {
|
||||||
|
Ok(true)
|
||||||
|
} else {
|
||||||
|
Err(Error::WrongExportInliningToC)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Ok(false)
|
||||||
|
})?,
|
||||||
|
)
|
||||||
.output_directory(
|
.output_directory(
|
||||||
arg_matches
|
arg_matches
|
||||||
.value_of("output_directory")
|
.value_of("output_directory")
|
||||||
|
|
|
@ -156,4 +156,6 @@ pub enum CliError<BuilderError: Debug + Display> {
|
||||||
OutputDirectoryNotExists,
|
OutputDirectoryNotExists,
|
||||||
#[error("Unable to start logger!\n{0}")]
|
#[error("Unable to start logger!\n{0}")]
|
||||||
LogError(#[from] LogError),
|
LogError(#[from] LogError),
|
||||||
|
#[error("The --inline-toc can only be used exporting to epub")]
|
||||||
|
WrongExportInliningToC,
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ extern crate lazy_static;
|
||||||
|
|
||||||
use std::process::exit;
|
use std::process::exit;
|
||||||
|
|
||||||
|
use colored::Colorize;
|
||||||
use comfy_table::presets::{UTF8_FULL, UTF8_HORIZONTAL_BORDERS_ONLY};
|
use comfy_table::presets::{UTF8_FULL, UTF8_HORIZONTAL_BORDERS_ONLY};
|
||||||
use comfy_table::{ContentArrangement, Table};
|
use comfy_table::{ContentArrangement, Table};
|
||||||
use http::download;
|
use http::download;
|
||||||
|
@ -28,7 +29,7 @@ fn main() {
|
||||||
let app_config = match cli::AppConfig::init_with_cli() {
|
let app_config = match cli::AppConfig::init_with_cli() {
|
||||||
Ok(app_config) => app_config,
|
Ok(app_config) => app_config,
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
eprintln!("{}", err);
|
eprintln!("{}: {}", "ERROR".bold().bright_red(), err);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue