Skip to content

Commit 30c3dc6

Browse files
committed
addressing PR review comments
1 parent 44ec935 commit 30c3dc6

File tree

3 files changed

+14
-13
lines changed

3 files changed

+14
-13
lines changed

libcnb-cargo/src/package/command.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use libcnb_package::buildpack_package::{read_buildpack_package, BuildpackPackage
1212
use libcnb_package::cross_compile::{cross_compile_assistance, CrossCompileAssistance};
1313
use libcnb_package::dependency_graph::{create_dependency_graph, get_dependencies};
1414
use libcnb_package::{
15-
assemble_buildpack_directory, find_buildpack_dirs, find_cargo_workspace,
15+
assemble_buildpack_directory, find_buildpack_dirs, find_cargo_workspace_root_dir,
1616
get_buildpack_target_dir, CargoProfile,
1717
};
1818
use std::collections::HashMap;
@@ -25,7 +25,7 @@ pub(crate) fn execute(args: &PackageArgs) -> Result<()> {
2525

2626
let current_dir = std::env::current_dir().map_err(Error::GetCurrentDir)?;
2727

28-
let workspace_dir = find_cargo_workspace(&current_dir)?;
28+
let workspace_dir = find_cargo_workspace_root_dir(&current_dir)?;
2929

3030
let output_dir = get_buildpack_output_dir(&workspace_dir)?;
3131

libcnb-cargo/src/package/error.rs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ pub(crate) enum Error {
5050
source: std::io::Error,
5151
},
5252

53-
#[error("Unexpected Cargo exit status for target {target}\nExit Status: {code}\nExamine Cargo output for details and potential compilation errors.")]
54-
BinaryBuildExitStatus { target: String, code: String },
53+
#[error("Unexpected Cargo exit status for target {0}\nExit Status: {}\nExamine Cargo output for details and potential compilation errors.", .exit_code_or_unknown(.1))]
54+
BinaryBuildExitStatus(String, ExitStatus),
5555

5656
#[error("Configured buildpack target name {target} could not be found!")]
5757
BinaryBuildMissingTarget { target: String },
@@ -126,8 +126,8 @@ pub(crate) enum Error {
126126
#[error("Failed to spawn Cargo command\nError: {0}")]
127127
SpawnCargoCommand(std::io::Error),
128128

129-
#[error("Unexpected Cargo exit status while attempting to read workspace root\nExit Status: {0}\nExamine Cargo output for details and potential compilation errors.")]
130-
CargoCommandFailure(String),
129+
#[error("Unexpected Cargo exit status while attempting to read workspace root\nExit Status: {}\nExamine Cargo output for details and potential compilation errors.", exit_code_or_unknown(.0))]
130+
CargoCommandFailure(ExitStatus),
131131

132132
#[error("Could not read Cargo.toml metadata from workspace\nPath: {0}\nError: {1}")]
133133
GetBuildpackOutputDir(PathBuf, cargo_metadata::Error),
@@ -145,10 +145,7 @@ impl From<BuildBinariesError> for Error {
145145
BuildBinariesError::BuildError(
146146
target,
147147
BuildError::UnexpectedCargoExitStatus(exit_status),
148-
) => Error::BinaryBuildExitStatus {
149-
target,
150-
code: exit_status_or_unknown(exit_status),
151-
},
148+
) => Error::BinaryBuildExitStatus(target, exit_status),
152149

153150
BuildBinariesError::MissingBuildpackTarget(target) => {
154151
Error::BinaryBuildMissingTarget { target }
@@ -235,14 +232,15 @@ impl From<FindCargoWorkspaceError> for Error {
235232
FindCargoWorkspaceError::GetCargoEnv(error) => Error::GetCargoBin(error),
236233
FindCargoWorkspaceError::SpawnCommand(error) => Error::SpawnCargoCommand(error),
237234
FindCargoWorkspaceError::CommandFailure(exit_status) => {
238-
Error::CargoCommandFailure(exit_status_or_unknown(exit_status))
235+
Error::CargoCommandFailure(exit_status)
239236
}
240237
FindCargoWorkspaceError::GetParentDirectory(path) => Error::GetWorkspaceDirectory(path),
241238
}
242239
}
243240
}
244241

245-
fn exit_status_or_unknown(exit_status: ExitStatus) -> String {
242+
#[allow(clippy::trivially_copy_pass_by_ref)]
243+
fn exit_code_or_unknown(exit_status: &ExitStatus) -> String {
246244
exit_status
247245
.code()
248246
.map_or_else(|| String::from("<unknown>"), |code| code.to_string())

libcnb-package/src/lib.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -278,7 +278,9 @@ pub fn get_buildpack_target_dir(
278278
/// - no `CARGO` environment variable with the path to the `cargo` binary
279279
/// - executing this function with a directory that is not within a Cargo project
280280
/// - any other file or system error that might occur
281-
pub fn find_cargo_workspace(dir_in_workspace: &Path) -> Result<PathBuf, FindCargoWorkspaceError> {
281+
pub fn find_cargo_workspace_root_dir(
282+
dir_in_workspace: &Path,
283+
) -> Result<PathBuf, FindCargoWorkspaceError> {
282284
let cargo_bin = std::env::var("CARGO")
283285
.map(PathBuf::from)
284286
.map_err(FindCargoWorkspaceError::GetCargoEnv)?;
@@ -297,6 +299,7 @@ pub fn find_cargo_workspace(dir_in_workspace: &Path) -> Result<PathBuf, FindCarg
297299
.then_some(output)
298300
.ok_or(FindCargoWorkspaceError::CommandFailure(status))
299301
.and_then(|output| {
302+
// Cargo outputs a newline after the actual path, so we have to trim.
300303
let root_cargo_toml = PathBuf::from(String::from_utf8_lossy(&output.stdout).trim());
301304
root_cargo_toml
302305
.parent()

0 commit comments

Comments
 (0)