Skip to content

Commit

Permalink
internal: Wrap errors in Box. (#1475)
Browse files Browse the repository at this point in the history
  • Loading branch information
milesj committed May 23, 2024
1 parent 6f8e579 commit a81b063
Show file tree
Hide file tree
Showing 11 changed files with 42 additions and 31 deletions.
8 changes: 7 additions & 1 deletion nextgen/api/src/moonbase_error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,11 @@ pub enum MoonbaseError {
JsonSerializeFailure(String),

#[error("Failed to send request to moonbase: {0}")]
Http(#[from] reqwest::Error),
Http(#[from] Box<reqwest::Error>),
}

impl From<reqwest::Error> for MoonbaseError {
fn from(e: reqwest::Error) -> MoonbaseError {
MoonbaseError::Http(Box::new(e))
}
}
4 changes: 2 additions & 2 deletions nextgen/args/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ use thiserror::Error;
pub struct ArgsSplitError {
args: String,
#[source]
error: shell_words::ParseError,
error: Box<shell_words::ParseError>,
}

// When parsing a command line with multiple commands separated by a semicolon,
Expand All @@ -23,7 +23,7 @@ pub fn split_args<T: AsRef<str>>(line: T) -> miette::Result<Vec<String>> {

Ok(shell_words::split(&line).map_err(|error| ArgsSplitError {
args: line.to_owned(),
error,
error: Box::new(error),
})?)
}

Expand Down
6 changes: 3 additions & 3 deletions nextgen/codegen/src/codegen_error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ pub enum CodegenError {
LoadTemplateFileFailed {
path: PathBuf,
#[source]
error: tera::Error,
error: Box<tera::Error>,
},

#[diagnostic(code(codegen::template_file::render_failed))]
Expand All @@ -66,7 +66,7 @@ pub enum CodegenError {
RenderTemplateFileFailed {
path: PathBuf,
#[source]
error: tera::Error,
error: Box<tera::Error>,
},

#[diagnostic(code(codegen::template_file::interpolate_path))]
Expand All @@ -77,6 +77,6 @@ pub enum CodegenError {
InterpolateTemplateFileFailed {
path: String,
#[source]
error: tera::Error,
error: Box<tera::Error>,
},
}
8 changes: 4 additions & 4 deletions nextgen/codegen/src/template.rs
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ impl Template {
.add_raw_template(name.as_str(), &content)
.map_err(|error| CodegenError::LoadTemplateFileFailed {
path: source_path.clone(),
error,
error: Box::new(error),
})?;

debug!(
Expand Down Expand Up @@ -181,7 +181,7 @@ impl Template {
.add_raw_template(file.name.as_str(), &content)
.map_err(|error| CodegenError::LoadTemplateFileFailed {
path: file.source_path.clone(),
error,
error: Box::new(error),
})?;
}

Expand All @@ -198,7 +198,7 @@ impl Template {
.render(file.name.as_str(), context)
.map_err(|error| CodegenError::RenderTemplateFileFailed {
path: file.source_path.clone(),
error,
error: Box::new(error),
})?,
dest,
)?;
Expand Down Expand Up @@ -253,7 +253,7 @@ impl Template {
let path = self.engine.render_str(&name, context).map_err(|error| {
CodegenError::InterpolateTemplateFileFailed {
path: name.to_owned(),
error,
error: Box::new(error),
}
})?;

Expand Down
18 changes: 9 additions & 9 deletions nextgen/process/src/async_command.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ impl<'cmd> AsyncCommand<'cmd> {
.spawn()
.map_err(|error| ProcessError::Capture {
bin: self.get_bin_name(),
error,
error: Box::new(error),
})?;

self.write_input_to_child(&mut child).await?;
Expand All @@ -39,15 +39,15 @@ impl<'cmd> AsyncCommand<'cmd> {
.await
.map_err(|error| ProcessError::Capture {
bin: self.get_bin_name(),
error,
error: Box::new(error),
})?;
} else {
output = command
.output()
.await
.map_err(|error| ProcessError::Capture {
bin: self.get_bin_name(),
error,
error: Box::new(error),
})?;
}

Expand All @@ -69,20 +69,20 @@ impl<'cmd> AsyncCommand<'cmd> {
.spawn()
.map_err(|error| ProcessError::Stream {
bin: self.get_bin_name(),
error,
error: Box::new(error),
})?;

self.write_input_to_child(&mut child).await?;
} else {
child = command.spawn().map_err(|error| ProcessError::Stream {
bin: self.get_bin_name(),
error,
error: Box::new(error),
})?;
};

let status = child.wait().await.map_err(|error| ProcessError::Stream {
bin: self.get_bin_name(),
error,
error: Box::new(error),
})?;

let output = Output {
Expand Down Expand Up @@ -112,7 +112,7 @@ impl<'cmd> AsyncCommand<'cmd> {
.spawn()
.map_err(|error| ProcessError::StreamCapture {
bin: self.get_bin_name(),
error,
error: Box::new(error),
})?;

if self.inspector.should_pass_stdin() {
Expand Down Expand Up @@ -195,7 +195,7 @@ impl<'cmd> AsyncCommand<'cmd> {
.await
.map_err(|error| ProcessError::StreamCapture {
bin: self.get_bin_name(),
error,
error: Box::new(error),
})?;

let output = Output {
Expand Down Expand Up @@ -237,7 +237,7 @@ impl<'cmd> AsyncCommand<'cmd> {
.await
.map_err(|error| ProcessError::WriteInput {
bin: self.get_bin_name(),
error,
error: Box::new(error),
})?;

drop(stdin);
Expand Down
8 changes: 4 additions & 4 deletions nextgen/process/src/process_error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ pub enum ProcessError {
Capture {
bin: String,
#[source]
error: std::io::Error,
error: Box<std::io::Error>,
},

#[diagnostic(code(process::failed))]
Expand Down Expand Up @@ -46,7 +46,7 @@ pub enum ProcessError {
Stream {
bin: String,
#[source]
error: std::io::Error,
error: Box<std::io::Error>,
},

#[diagnostic(code(process::capture_stream::failed))]
Expand All @@ -58,7 +58,7 @@ pub enum ProcessError {
StreamCapture {
bin: String,
#[source]
error: std::io::Error,
error: Box<std::io::Error>,
},

#[diagnostic(code(process::stdin::failed))]
Expand All @@ -70,6 +70,6 @@ pub enum ProcessError {
WriteInput {
bin: String,
#[source]
error: std::io::Error,
error: Box<std::io::Error>,
},
}
2 changes: 1 addition & 1 deletion nextgen/project-expander/src/tasks_expander.rs
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@ impl<'graph, 'query> TasksExpander<'graph, 'query> {
if env_path.exists() {
let handle_error = |error: dotenvy::Error| TasksExpanderError::InvalidEnvFile {
path: env_path.to_path_buf(),
error,
error: Box::new(error),
};

for line in dotenvy::from_path_iter(&env_path).map_err(handle_error)? {
Expand Down
2 changes: 1 addition & 1 deletion nextgen/project-expander/src/tasks_expander_error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ pub enum TasksExpanderError {
InvalidEnvFile {
path: PathBuf,
#[source]
error: dotenvy::Error,
error: Box<dotenvy::Error>,
},

#[diagnostic(code(task_expander::dependency::no_allowed_failures))]
Expand Down
4 changes: 2 additions & 2 deletions nextgen/task-runner/src/task_runner.rs
Original file line number Diff line number Diff line change
Expand Up @@ -462,10 +462,10 @@ impl<'task> TaskRunner<'task> {
if last_attempt.has_failed() {
return Err(TaskRunnerError::RunFailed {
target: self.task.target.to_string(),
error: ProcessError::ExitNonZero {
error: Box::new(ProcessError::ExitNonZero {
bin: self.task.command.clone(),
code: last_attempt.get_exit_code(),
},
}),
}
.into());
}
Expand Down
2 changes: 1 addition & 1 deletion nextgen/task-runner/src/task_runner_error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ pub enum TaskRunnerError {
RunFailed {
target: String,
#[source]
error: ProcessError,
error: Box<ProcessError>,
},

#[diagnostic(code(task_runner::missing_dependency_hash))]
Expand Down
11 changes: 8 additions & 3 deletions nextgen/vcs/src/git.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ pub enum GitError {
#[error("Failed to load and parse {}.", ".gitignore".style(Style::File))]
GitignoreLoadFailed {
#[source]
error: ignore::Error,
error: Box<ignore::Error>,
},

#[diagnostic(code(git::repository::extract_slug))]
Expand Down Expand Up @@ -162,13 +162,18 @@ impl Git {
let mut builder = GitignoreBuilder::new(&repository_root);

if let Some(error) = builder.add(ignore_path) {
return Err(GitError::GitignoreLoadFailed { error }.into());
return Err(GitError::GitignoreLoadFailed {
error: Box::new(error),
}
.into());
}

ignore = Some(
builder
.build()
.map_err(|error| GitError::GitignoreLoadFailed { error })?,
.map_err(|error| GitError::GitignoreLoadFailed {
error: Box::new(error),
})?,
);
}

Expand Down

0 comments on commit a81b063

Please sign in to comment.