aboutsummaryrefslogtreecommitdiffstats
path: root/src/errors.rs
diff options
context:
space:
mode:
authorSven-Hendrik Haase <svenstaro@gmail.com>2021-03-28 20:41:07 +0000
committerSven-Hendrik Haase <svenstaro@gmail.com>2021-03-28 20:41:07 +0000
commit906af1587144dd4b3caecacdff5ea834012cffa4 (patch)
tree57ca5b252dcfc76fa79b7a0f41584527b4188cff /src/errors.rs
parentChange start message without arguments to be a bit more clear (diff)
downloadminiserve-906af1587144dd4b3caecacdff5ea834012cffa4.tar.gz
miniserve-906af1587144dd4b3caecacdff5ea834012cffa4.zip
Refuse to start without explicit path if not attached to interactive terminal
Diffstat (limited to '')
-rw-r--r--src/errors.rs52
1 files changed, 29 insertions, 23 deletions
diff --git a/src/errors.rs b/src/errors.rs
index 3287fc3..f079657 100644
--- a/src/errors.rs
+++ b/src/errors.rs
@@ -2,65 +2,78 @@ use thiserror::Error;
#[derive(Debug, Error)]
pub enum ContextualError {
- /// Fully customized errors, not inheriting from any error
- #[error("{0}")]
- CustomError(String),
-
/// Any kind of IO errors
#[error("{0}\ncaused by: {1}")]
IoError(String, std::io::Error),
- /// MultipartError, which might occur during file upload, when processing the multipart request fails
+ /// Might occur during file upload, when processing the multipart request fails
#[error("Failed to process multipart request\ncaused by: {0}")]
MultipartError(actix_multipart::MultipartError),
+ /// Might occur during file upload
+ #[error("File already exists, and the overwrite_files option has not been set")]
+ DuplicateFileError,
+
/// Any error related to an invalid path (failed to retrieve entry name, unexpected entry type, etc)
#[error("Invalid path\ncaused by: {0}")]
InvalidPathError(String),
- /// This error might occur if the HTTP credential string does not respect the expected format
+ /// Might occur if the HTTP credential string does not respect the expected format
#[error("Invalid format for credentials string. Expected username:password, username:sha256:hash or username:sha512:hash")]
InvalidAuthFormat,
- /// This error might occure if the hash method is neither sha256 nor sha512
+ /// Might occure if the hash method is neither sha256 nor sha512
#[error("{0} is not a valid hashing method. Expected sha256 or sha512")]
InvalidHashMethod(String),
- /// This error might occur if the HTTP auth hash password is not a valid hex code
+ /// Might occur if the HTTP auth hash password is not a valid hex code
#[error("Invalid format for password hash. Expected hex code")]
InvalidPasswordHash,
- /// This error might occur if the HTTP auth password exceeds 255 characters
+ /// Might occur if the HTTP auth password exceeds 255 characters
#[error("HTTP password length exceeds 255 characters")]
PasswordTooLongError,
- /// This error might occur if the user has unsufficient permissions to create an entry in a given directory
+ /// Might occur if the user has unsufficient permissions to create an entry in a given directory
#[error("Insufficient permissions to create file in {0}")]
InsufficientPermissionsError(String),
- /// Any error related to parsing.
+ /// Any error related to parsing
#[error("Failed to parse {0}\ncaused by: {1}")]
ParseError(String, String),
- /// This error might occur when the creation of an archive fails
+ /// Might occur when the creation of an archive fails
#[error("An error occured while creating the {0}\ncaused by: {1}")]
ArchiveCreationError(String, Box<ContextualError>),
- /// This error might occur when the HTTP authentication fails
+ /// More specific archive creation failure reason
+ #[error("{0}")]
+ ArchiveCreationDetailError(String),
+
+ /// Might occur when the HTTP authentication fails
#[error("An error occured during HTTP authentication\ncaused by: {0}")]
HttpAuthenticationError(Box<ContextualError>),
- /// This error might occur when the HTTP credentials are not correct
+ /// Might occur when the HTTP credentials are not correct
#[error("Invalid credentials for HTTP authentication")]
InvalidHttpCredentials,
- /// This error might occur when an HTTP request is invalid
+ /// Might occur when an HTTP request is invalid
#[error("Invalid HTTP request\ncaused by: {0}")]
InvalidHttpRequestError(String),
- /// This error might occur when trying to access a page that does not exist
+ /// Might occur when trying to access a page that does not exist
#[error("Route {0} could not be found")]
RouteNotFoundError(String),
+
+ /// In case miniserve was invoked without an interactive terminal and without an explicit path
+ #[error("Refusing to start as no explicit serve path was set and no interactive terminal was attached
+Please set an explicit serve path like: `miniserve /my/path`")]
+ NoExplicitPathAndNoTerminal,
+
+ /// In case miniserve was invoked with --no-symlinks but the serve path is a symlink
+ #[error("The -P|--no-symlinks option was provided but the serve path '{0}' is a symlink")]
+ NoSymlinksOptionWithSymlinkServePath(String),
}
pub fn log_error_chain(description: String) {
@@ -68,10 +81,3 @@ pub fn log_error_chain(description: String) {
log::error!("{}", cause);
}
}
-
-/// This makes creating CustomErrors easier
-impl From<String> for ContextualError {
- fn from(msg: String) -> ContextualError {
- ContextualError::CustomError(msg)
- }
-}