diff --git a/src/error.rs b/src/error.rs index 19bec56..72701c4 100644 --- a/src/error.rs +++ b/src/error.rs @@ -49,4 +49,6 @@ pub enum OptionsError<'a> { EmptyShell, #[error("Failed to parse '--shell ' expression as command line: {0}")] ShellParseError(shell_words::ParseError), + #[error("Unknown output policy '{0}'. Use ./{0} to output to a file named {0}.")] + UnknownOutputPolicy(String), } diff --git a/src/options.rs b/src/options.rs index cf57472..aed0156 100644 --- a/src/options.rs +++ b/src/options.rs @@ -275,7 +275,13 @@ impl Options { "null" => CommandOutputPolicy::Discard, "pipe" => CommandOutputPolicy::Pipe, "inherit" => CommandOutputPolicy::Forward, - path => CommandOutputPolicy::File(path.into()), + arg => { + let path = PathBuf::from(arg); + if path.components().count() <= 1 { + return Err(OptionsError::UnknownOutputPolicy(arg.to_string())); + } + CommandOutputPolicy::File(path) + } } } else { CommandOutputPolicy::Discard