use snafu::Snafu;
#[derive(Debug, Snafu)]
#[non_exhaustive]
#[snafu(visibility(pub))]
pub enum CliError {
#[snafu(display("Failed to setup logging"))]
LoggingError { source: crate::config::LoggingError },
#[snafu(display("Invalid path: {path}"))]
InvalidPath {
path: String,
source: std::io::Error,
},
#[snafu(display("Failed to parse command line arguments"))]
CommandLineParsingError { source: clap::Error },
#[snafu(display("Failed to parse command line arguments"))]
MatchingError { source: clap::parser::MatchesError },
#[snafu(display("Invalid configuration file: {file}"))]
InvalidConfigFile {
file: String,
source: crate::config::ConfigError,
},
#[snafu(display("Failed to handle the requested command"))]
CommandError {
source: crate::commands::CommandError,
},
#[snafu(display("Invalid target directory. The target directory must exist and be a directory."))]
InvalidTargetDirectory,
#[snafu(display("Invalid configuration file: {file}"))]
InvalidConfigurationFile { file: String },
#[snafu(display("Failed to build the request command {command}"))]
CommandBuildError {
command: String,
source: crate::commands::CommandBuildError,
},
#[snafu(display("Failed to resolve the file {file}"))]
ResolveError {
file: String,
source: crate::config::ResolveError,
},
#[snafu(display("Printing completions requested."))]
PrintCompletions {
printer: crate::command_line_args::CompletionPrinter,
},
#[snafu(display("Invalid or unknown shell. Please specify a valid shell."))]
InvalidShell,
#[snafu(display("Failed to create output file {path}"))]
OutputFileCreationError {
path: String,
source: std::io::Error,
},
#[snafu(display("Failed to generate completions"))]
GenerateCompletionsError { source: std::io::Error },
#[snafu(display("Failed to export configuration"))]
ExportConfig {
printer: crate::command_line_args::ConfigPrinter,
},
#[snafu(display("Failed to create file {file}"))]
FileCreationError {
file: String,
source: std::io::Error,
},
#[snafu(display("Failed to write configuration"))]
ConfigWriteError { source: crate::config::ConfigError },
}