From 9eebebf845d6a2f210bb66b922448721997569e7 Mon Sep 17 00:00:00 2001 From: Manuel Fuchs Date: Wed, 5 Feb 2025 15:26:19 +0100 Subject: [PATCH] Remove usages of libherokubuildpack::log --- buildpacks/gradle/Cargo.toml | 2 +- buildpacks/gradle/src/errors.rs | 71 ++++++++++++---------- buildpacks/jvm-function-invoker/Cargo.toml | 2 +- buildpacks/jvm/Cargo.toml | 2 +- buildpacks/jvm/src/errors.rs | 42 ++++++------- buildpacks/maven/src/errors.rs | 41 ++++++------- buildpacks/sbt/src/errors.rs | 49 ++++++++------- shared/src/log.rs | 8 +-- 8 files changed, 110 insertions(+), 107 deletions(-) diff --git a/buildpacks/gradle/Cargo.toml b/buildpacks/gradle/Cargo.toml index a06f81d0..b39c0d30 100644 --- a/buildpacks/gradle/Cargo.toml +++ b/buildpacks/gradle/Cargo.toml @@ -10,7 +10,7 @@ workspace = true buildpacks-jvm-shared.workspace = true indoc = "2" libcnb = "=0.26.0" -libherokubuildpack = { version = "=0.26.0", default-features = false, features = ["command", "error", "log"] } +libherokubuildpack = { version = "=0.26.0", default-features = false, features = ["command", "error"] } nom = "7" serde = { version = "1", features = ["derive"] } diff --git a/buildpacks/gradle/src/errors.rs b/buildpacks/gradle/src/errors.rs index bedc07f4..daefcb6e 100644 --- a/buildpacks/gradle/src/errors.rs +++ b/buildpacks/gradle/src/errors.rs @@ -1,15 +1,12 @@ use crate::GradleBuildpackError; -use buildpacks_jvm_shared::log::{ - log_build_tool_io_error, log_build_tool_unexpected_exit_code_error, log_please_try_again_error, -}; +use buildpacks_jvm_shared as shared; use indoc::indoc; -use libherokubuildpack::log::log_error; #[allow(clippy::too_many_lines, clippy::needless_pass_by_value)] pub(crate) fn on_error_gradle_buildpack(error: GradleBuildpackError) { match error { GradleBuildpackError::GradleWrapperNotFound => { - log_error( + shared::output::print_error( "Missing Gradle Wrapper", indoc! {" This buildpack leverages Gradle Wrapper to install the correct Gradle version to build your application. @@ -23,43 +20,53 @@ pub(crate) fn on_error_gradle_buildpack(error: GradleBuildpackError) { "}, ); } - GradleBuildpackError::GradleBuildIoError(error) => log_build_tool_io_error("Gradle", error), + GradleBuildpackError::GradleBuildIoError(error) => { + shared::log::log_build_tool_io_error("Gradle", error) + } GradleBuildpackError::GradleBuildUnexpectedStatusError(exit_status) => { - log_build_tool_unexpected_exit_code_error("Gradle", exit_status); + shared::log::log_build_tool_unexpected_exit_code_error("Gradle", exit_status); } - GradleBuildpackError::GetTasksError(error) => log_please_try_again_error( + GradleBuildpackError::GetTasksError(error) => shared::log::log_please_try_again_error( "Failed to get Gradle tasks", "Failed to get Gradle tasks", error, ), - GradleBuildpackError::GetDependencyReportError(error) => log_please_try_again_error( - "Failed to get Gradle dependency report", - "Failed to get Gradle dependency report", - error, - ), - GradleBuildpackError::WriteGradlePropertiesError(error) => log_please_try_again_error( - "Failed to write Gradle configuration", - "Failed to write Gradle configuration", - error, - ), - GradleBuildpackError::WriteGradleInitScriptError(error) => log_please_try_again_error( - "Failed to write Gradle init script", - "Failed to write Gradle init script", - error, - ), + GradleBuildpackError::GetDependencyReportError(error) => { + shared::log::log_please_try_again_error( + "Failed to get Gradle dependency report", + "Failed to get Gradle dependency report", + error, + ) + } + GradleBuildpackError::WriteGradlePropertiesError(error) => { + shared::log::log_please_try_again_error( + "Failed to write Gradle configuration", + "Failed to write Gradle configuration", + error, + ) + } + GradleBuildpackError::WriteGradleInitScriptError(error) => { + shared::log::log_please_try_again_error( + "Failed to write Gradle init script", + "Failed to write Gradle init script", + error, + ) + } GradleBuildpackError::CannotSetGradleWrapperExecutableBit(error) => { - log_please_try_again_error( + shared::log::log_please_try_again_error( "Failed to set executable bit for Gradle wrapper", "Failed to set executable bit for Gradle wrapper", error, ); } - GradleBuildpackError::StartGradleDaemonError(error) => log_please_try_again_error( - "Failed to start Gradle daemon", - "The Gradle daemon for this build could not be started.", - error, - ), - GradleBuildpackError::BuildTaskUnknown => log_error( + GradleBuildpackError::StartGradleDaemonError(error) => { + shared::log::log_please_try_again_error( + "Failed to start Gradle daemon", + "The Gradle daemon for this build could not be started.", + error, + ) + } + GradleBuildpackError::BuildTaskUnknown => shared::output::print_error( "Failed to determine build task", indoc! {" It looks like your project does not contain a 'stage' task, which Heroku needs in order @@ -69,14 +76,14 @@ pub(crate) fn on_error_gradle_buildpack(error: GradleBuildpackError) { "}, ), GradleBuildpackError::DetectError(error) => { - log_please_try_again_error( + shared::log::log_please_try_again_error( "Failed to determine if a file exists during detect", "Failed to determine if a file exists during detect", error, ); } GradleBuildpackError::CannotDetermineDefaultAppProcess(error) => { - log_please_try_again_error( + shared::log::log_please_try_again_error( "Failed to determine default app process", "Failed to determine default app process", error, diff --git a/buildpacks/jvm-function-invoker/Cargo.toml b/buildpacks/jvm-function-invoker/Cargo.toml index 5c0109c4..eac18eee 100644 --- a/buildpacks/jvm-function-invoker/Cargo.toml +++ b/buildpacks/jvm-function-invoker/Cargo.toml @@ -9,7 +9,7 @@ workspace = true [dependencies] indoc = "2" libcnb = "=0.26.0" -libherokubuildpack = { version = "=0.26.0", default-features = false, features = ["digest", "download", "error", "log", "toml"] } +libherokubuildpack = { version = "=0.26.0", default-features = false, features = ["digest", "download", "error", "toml"] } serde = "1" thiserror = "2" toml = "0.8" diff --git a/buildpacks/jvm/Cargo.toml b/buildpacks/jvm/Cargo.toml index c1feda9d..25454a16 100644 --- a/buildpacks/jvm/Cargo.toml +++ b/buildpacks/jvm/Cargo.toml @@ -11,7 +11,7 @@ buildpacks-jvm-shared.workspace = true fs_extra = "1" indoc = "2" libcnb = "=0.26.0" -libherokubuildpack = { version = "=0.26.0", default-features = false, features = ["digest", "download", "error", "inventory", "inventory-sha2", "log", "tar"] } +libherokubuildpack = { version = "=0.26.0", default-features = false, features = ["digest", "download", "error", "inventory", "inventory-sha2", "tar"] } serde = { version = "1", features = ["derive"] } tempfile = "3" url = "2" diff --git a/buildpacks/jvm/src/errors.rs b/buildpacks/jvm/src/errors.rs index 5359650f..c1bcc276 100644 --- a/buildpacks/jvm/src/errors.rs +++ b/buildpacks/jvm/src/errors.rs @@ -3,22 +3,20 @@ use crate::openjdk_artifact::{ }; use crate::version_resolver::VersionResolveError; use crate::OpenJdkBuildpackError; -use buildpacks_jvm_shared::log::{log_please_try_again, log_please_try_again_error}; -use buildpacks_jvm_shared::system_properties::ReadSystemPropertiesError; +use buildpacks_jvm_shared as shared; use indoc::formatdoc; -use libherokubuildpack::log::log_error; #[allow(clippy::too_many_lines)] pub(crate) fn on_error_jvm_buildpack(error: OpenJdkBuildpackError) { match error { - OpenJdkBuildpackError::CannotCreateOpenJdkTempDir(error) => log_please_try_again_error( + OpenJdkBuildpackError::CannotCreateOpenJdkTempDir(error) => shared::log::log_please_try_again_error( "Unexpected IO error", "Could not create temporary directory for the OpenJDK download due to an unexpected I/O error.", error, ), OpenJdkBuildpackError::ReadSystemPropertiesError( - ReadSystemPropertiesError::ParseError(error), - ) => log_error( + shared::system_properties::ReadSystemPropertiesError::ParseError(error), + ) => shared::output::print_error( "Invalid system.properties file", formatdoc! {" Could not parse your application's system.properties file. Please ensure that your @@ -28,57 +26,57 @@ pub(crate) fn on_error_jvm_buildpack(error: OpenJdkBuildpackError) { ", error = error }, ), OpenJdkBuildpackError::ReadSystemPropertiesError( - ReadSystemPropertiesError::IoError(error), - ) => log_please_try_again_error( + shared::system_properties::ReadSystemPropertiesError::IoError(error), + ) => shared::log::log_please_try_again_error( "Unexpected IO error", "Could not read your application's system.properties file due to an unexpected I/O error.", error, ), - OpenJdkBuildpackError::MissingJdkCertificatesFile => log_please_try_again_error( + OpenJdkBuildpackError::MissingJdkCertificatesFile => shared::log::log_please_try_again_error( "Missing CA keystore file", "The downloaded OpenJDK distribution does not contain a CA keystore file at the expected location.", error, ), - OpenJdkBuildpackError::CannotSymlinkUbuntuCertificates(error) => log_please_try_again_error( + OpenJdkBuildpackError::CannotSymlinkUbuntuCertificates(error) => shared::log::log_please_try_again_error( "Unexpected IO error", "Could not symlink the CA keystore file from the stack into the OpenJDK distribution.", error, ), - OpenJdkBuildpackError::CannotListJdkOverlayContents(error) => log_please_try_again_error( + OpenJdkBuildpackError::CannotListJdkOverlayContents(error) => shared::log::log_please_try_again_error( "Unexpected IO error", "Could not list the contents of the application's JDK overlay.", error, ), - OpenJdkBuildpackError::CannotCopyJdkOverlayContents(error) => log_please_try_again_error( + OpenJdkBuildpackError::CannotCopyJdkOverlayContents(error) => shared::log::log_please_try_again_error( "Unexpected IO error", "Could not copy the contents of the application's JDK overlay.", error, ), - OpenJdkBuildpackError::CannotReadOpenJdkTarball(error) => log_please_try_again_error( + OpenJdkBuildpackError::CannotReadOpenJdkTarball(error) => shared::log::log_please_try_again_error( "Unexpected IO error", "Could not read downloaded OpenJDK tarball file.", error, ), - OpenJdkBuildpackError::CannotDecompressOpenJdkTarball(error) => log_please_try_again_error( + OpenJdkBuildpackError::CannotDecompressOpenJdkTarball(error) => shared::log::log_please_try_again_error( "Unexpected IO error", "Could not decompress downloaded OpenJDK tarball file.", error, ), - OpenJdkBuildpackError::OpenJdkDownloadError(error) => log_please_try_again_error( + OpenJdkBuildpackError::OpenJdkDownloadError(error) => shared::log::log_please_try_again_error( "OpenJDK download failed", "Could not download OpenJDK distribution.", error, ), OpenJdkBuildpackError::UnsupportedOpenJdkVersion(artifact_requirement) => { match artifact_requirement.version { - HerokuOpenJdkVersionRequirement::Major(major_version) => log_error( + HerokuOpenJdkVersionRequirement::Major(major_version) => shared::output::print_error( "Unsupported OpenJDK version", formatdoc! {" The OpenJDK major version {major_version} you specified in your system.properties file is not supported. Please specify a supported major version in your system.properties file. ", major_version = major_version }, ), - HerokuOpenJdkVersionRequirement::Specific(version) => log_error( + HerokuOpenJdkVersionRequirement::Specific(version) => shared::output::print_error( "Unsupported OpenJDK version", formatdoc! {" The OpenJDK version {version} you specified in your system.properties file is not supported. @@ -90,7 +88,7 @@ pub(crate) fn on_error_jvm_buildpack(error: OpenJdkBuildpackError) { ) } }, - OpenJdkBuildpackError::ParseInventoryError(error) => log_error( + OpenJdkBuildpackError::ParseInventoryError(error) => shared::output::print_error( "Invalid Inventory File", formatdoc! {" The inventory of OpenJDK distributions could not be parsed. This error should @@ -102,7 +100,7 @@ pub(crate) fn on_error_jvm_buildpack(error: OpenJdkBuildpackError) { Details: {error} ", error = error }, ), - OpenJdkBuildpackError::OpenJdkTarballChecksumError { expected, actual } => log_please_try_again( + OpenJdkBuildpackError::OpenJdkTarballChecksumError { expected, actual } => shared::log::log_please_try_again( "Corrupted OpenJDK download", formatdoc! {" The validation of the downloaded OpenJDK distribution failed due to a checksum mismatch. @@ -111,7 +109,7 @@ pub(crate) fn on_error_jvm_buildpack(error: OpenJdkBuildpackError) { Actual: {actual} ", expected = hex::encode(expected), actual = hex::encode(actual) } ), - OpenJdkBuildpackError::ResolveVersionError(VersionResolveError::OpenJdkArtifactRequirementParseError(OpenJdkArtifactRequirementParseError::UnknownDistribution(distribution))) => log_error( + OpenJdkBuildpackError::ResolveVersionError(VersionResolveError::OpenJdkArtifactRequirementParseError(OpenJdkArtifactRequirementParseError::UnknownDistribution(distribution))) => shared::output::print_error( format!("Unsupported distribution: {distribution}"), formatdoc! {" Please check your system.properties file to ensure the java.runtime.version @@ -124,7 +122,7 @@ pub(crate) fn on_error_jvm_buildpack(error: OpenJdkBuildpackError) { Heroku "}), OpenJdkBuildpackError::ResolveVersionError(VersionResolveError::OpenJdkArtifactRequirementParseError(OpenJdkArtifactRequirementParseError::OpenJdkVersionParseError(_))) => { - log_error( + shared::output::print_error( "Invalid OpenJDK version selector", formatdoc! {" The OpenJDK version selector you specified in your system.properties file is invalid. @@ -135,7 +133,7 @@ pub(crate) fn on_error_jvm_buildpack(error: OpenJdkBuildpackError) { ); } OpenJdkBuildpackError::ResolveVersionError(VersionResolveError::ReadSystemPropertiesError(error)) => { - log_error( + shared::output::print_error( "Invalid system.properties file", formatdoc! {" The contents of your system.properties file cannot be parsed. Please use a valid diff --git a/buildpacks/maven/src/errors.rs b/buildpacks/maven/src/errors.rs index de146633..02429bf2 100644 --- a/buildpacks/maven/src/errors.rs +++ b/buildpacks/maven/src/errors.rs @@ -1,53 +1,48 @@ use crate::{MavenBuildpackError, SettingsError}; -use buildpacks_jvm_shared::log::{ - log_build_tool_io_error, log_build_tool_unexpected_exit_code_error, log_please_try_again, - log_please_try_again_error, -}; -use buildpacks_jvm_shared::system_properties::ReadSystemPropertiesError; +use buildpacks_jvm_shared as shared; use indoc::formatdoc; -use libherokubuildpack::log::log_error; #[allow(clippy::too_many_lines)] pub(crate) fn on_error_maven_buildpack(error: MavenBuildpackError) { match error { - MavenBuildpackError::DetermineModeError(ReadSystemPropertiesError::IoError(error)) => log_please_try_again_error( + MavenBuildpackError::DetermineModeError(shared::system_properties::ReadSystemPropertiesError::IoError(error)) => shared::log::log_please_try_again_error( "Unexpected IO error", "Could not read your application's system.properties file due to an unexpected I/O error.", error, ), - MavenBuildpackError::MavenTarballCreateTemporaryDirectoryError(error) => log_please_try_again_error( + MavenBuildpackError::MavenTarballCreateTemporaryDirectoryError(error) => shared::log::log_please_try_again_error( "Unexpected IO error", "Could not create a temporary directory for Maven distribution", error ), - MavenBuildpackError::MavenTarballDownloadError(error) => log_please_try_again_error( + MavenBuildpackError::MavenTarballDownloadError(error) => shared::log::log_please_try_again_error( "Maven download failed", "Could not download Maven distribution.", error, ), - MavenBuildpackError::MavenTarballDecompressError(error) => log_please_try_again_error( + MavenBuildpackError::MavenTarballDecompressError(error) => shared::log::log_please_try_again_error( "Maven download failed", "Could not download Maven distribution.", error, ), - MavenBuildpackError::CannotSetMavenWrapperExecutableBit(error) => log_please_try_again_error( + MavenBuildpackError::CannotSetMavenWrapperExecutableBit(error) => shared::log::log_please_try_again_error( "Failed to set executable bit for Maven wrapper", "Failed to set executable bit for Maven wrapper", error, ), - MavenBuildpackError::DefaultAppProcessError(error) => log_please_try_again_error( + MavenBuildpackError::DefaultAppProcessError(error) => shared::log::log_please_try_again_error( "Could not determine default process", "While trying to determine a default process based on the used application framework, an unexpected error occurred.", error, ), - MavenBuildpackError::UnsupportedMavenVersion(version) => log_error( + MavenBuildpackError::UnsupportedMavenVersion(version) => shared::output::print_error( "Unsupported Maven version", formatdoc! {" You have defined an unsupported Maven version ({version}) in the system.properties file. ", version = version }, ), MavenBuildpackError::SettingsError(SettingsError::InvalidMavenSettingsPath(path)) => { - log_error( + shared::output::print_error( "Cannot find custom settings.xml file", formatdoc! {" You have set MAVEN_SETTINGS_PATH to \"{path}\". We could not find that file in your app. @@ -55,7 +50,7 @@ pub(crate) fn on_error_maven_buildpack(error: MavenBuildpackError) { ", path = path.to_string_lossy() }, ); }, - MavenBuildpackError::SettingsError(SettingsError::DownloadError(url, error)) => log_error( + MavenBuildpackError::SettingsError(SettingsError::DownloadError(url, error)) => shared::output::print_error( "Download of settings.xml failed", formatdoc! {" You have set MAVEN_SETTINGS_URL to \"{url}\". We tried to download the file at this @@ -67,14 +62,14 @@ pub(crate) fn on_error_maven_buildpack(error: MavenBuildpackError) { MavenBuildpackError::MavenTarballSha256Mismatch { expected_sha256, actual_sha256, - } => log_please_try_again( + } => shared::log::log_please_try_again( "Maven download checksum error", formatdoc! {" Maven distribution download succeeded, but the downloaded file's SHA256 checksum {actual_sha256} did not match the expected checksum {expected_sha256}. ", actual_sha256 = actual_sha256, expected_sha256 = expected_sha256 }, ), - MavenBuildpackError::MavenTarballSha256IoError(error) => log_please_try_again_error( + MavenBuildpackError::MavenTarballSha256IoError(error) => shared::log::log_please_try_again_error( "Maven download checksum error", formatdoc! {" Maven distribution download succeeded, but an error occurred while verifying the @@ -82,9 +77,9 @@ pub(crate) fn on_error_maven_buildpack(error: MavenBuildpackError) { "}, error ), - MavenBuildpackError::MavenBuildUnexpectedExitCode(exit_status) => log_build_tool_unexpected_exit_code_error("Maven", exit_status), - MavenBuildpackError::MavenBuildIoError(error) => log_build_tool_io_error("Maven", error), - MavenBuildpackError::CannotSplitMavenCustomOpts(error) => log_error( + MavenBuildpackError::MavenBuildUnexpectedExitCode(exit_status) => shared::log::log_build_tool_unexpected_exit_code_error("Maven", exit_status), + MavenBuildpackError::MavenBuildIoError(error) => shared::log::log_build_tool_io_error("Maven", error), + MavenBuildpackError::CannotSplitMavenCustomOpts(error) => shared::output::print_error( "Invalid MAVEN_CUSTOM_OPTS", formatdoc! {" Could not split the value of the MAVEN_CUSTOM_OPTS environment variable into separate @@ -93,7 +88,7 @@ pub(crate) fn on_error_maven_buildpack(error: MavenBuildpackError) { Details: {error} ", error = error }, ), - MavenBuildpackError::CannotSplitMavenCustomGoals(error) => log_error( + MavenBuildpackError::CannotSplitMavenCustomGoals(error) => shared::output::print_error( "Invalid MAVEN_CUSTOM_GOALS", formatdoc! {" Could not split the value of the MAVEN_CUSTOM_GOALS environment variable into separate @@ -103,8 +98,8 @@ pub(crate) fn on_error_maven_buildpack(error: MavenBuildpackError) { ", error = error }, ), MavenBuildpackError::DetermineModeError( - ReadSystemPropertiesError::ParseError(error), - ) => log_error( + shared::system_properties::ReadSystemPropertiesError::ParseError(error), + ) => shared::output::print_error( "Invalid system.properties file", formatdoc! {" Could not parse your application's system.properties file. Please ensure that your diff --git a/buildpacks/sbt/src/errors.rs b/buildpacks/sbt/src/errors.rs index 4b777795..9dfd55b0 100644 --- a/buildpacks/sbt/src/errors.rs +++ b/buildpacks/sbt/src/errors.rs @@ -3,12 +3,8 @@ use crate::layers::sbt_extras::SbtExtrasLayerError; use crate::layers::sbt_global::SbtGlobalLayerError; use crate::sbt::output::SbtError; use crate::sbt::version::ReadSbtVersionError; -use buildpacks_jvm_shared::log::{ - log_build_tool_unexpected_exit_code_error, log_please_try_again_error, -}; -use buildpacks_jvm_shared::system_properties::ReadSystemPropertiesError; +use buildpacks_jvm_shared as shared; use indoc::formatdoc; -use libherokubuildpack::log::log_error; use semver::Version; use std::fmt::Debug; use std::process::ExitStatus; @@ -24,14 +20,14 @@ pub(crate) enum SbtBuildpackError { SbtBuildIoError(std::io::Error), SbtBuildUnexpectedExitStatus(ExitStatus, Option), ReadSbtBuildpackConfigurationError(ReadSbtBuildpackConfigurationError), - ReadSystemPropertiesError(ReadSystemPropertiesError), + ReadSystemPropertiesError(shared::system_properties::ReadSystemPropertiesError), } #[allow(clippy::too_many_lines)] pub(crate) fn log_user_errors(error: SbtBuildpackError) { match error { SbtBuildpackError::SbtGlobalLayerError(SbtGlobalLayerError::CouldNotWritePlugin(error)) => { - log_please_try_again_error( + shared::log::log_please_try_again_error( "Unexpected I/O error", "An unexpected error occurred while attempting write the Heroku plugin for sbt.", error, @@ -40,7 +36,7 @@ pub(crate) fn log_user_errors(error: SbtBuildpackError) { SbtBuildpackError::SbtExtrasLayerError(error) => { match error { - SbtExtrasLayerError::CouldNotWriteScript(error) | SbtExtrasLayerError::CouldNotSetPermissions(error) | SbtExtrasLayerError::CouldNotCreateLaunchersDir(error) => log_please_try_again_error( + SbtExtrasLayerError::CouldNotWriteScript(error) | SbtExtrasLayerError::CouldNotSetPermissions(error) | SbtExtrasLayerError::CouldNotCreateLaunchersDir(error) => shared::log::log_please_try_again_error( "Unexpected I/O error", "An unexpected I/O error occurred while setting up sbt-extras.", error, @@ -49,19 +45,20 @@ pub(crate) fn log_user_errors(error: SbtBuildpackError) { } SbtBuildpackError::ReadSbtVersionError(error) => match error { - ReadSbtVersionError::CouldNotReadBuildProperties(error) => log_please_try_again_error( + ReadSbtVersionError::CouldNotReadBuildProperties(error) => shared::log::log_please_try_again_error( "Unexpected I/O error", "Could not read your application's system.properties file due to an unexpected I/O error.", error ), - ReadSbtVersionError::CouldNotParseBuildProperties(error) => log_please_try_again_error( + ReadSbtVersionError::CouldNotParseBuildProperties(error) => shared::log::log_please_try_again_error( "Unexpected I/O error", "Could not read your application's project/build.properties file due to an unexpected I/O error.", error ), - ReadSbtVersionError::MissingVersionProperty => log_error( + ReadSbtVersionError::MissingVersionProperty => shared::output::print_error +( "No sbt version defined", formatdoc! { " Your scala project must include project/build.properties and define a value for @@ -70,7 +67,8 @@ pub(crate) fn log_user_errors(error: SbtBuildpackError) { ), ReadSbtVersionError::CouldNotParseVersion(version, error) => { - log_error( + shared::output::print_error +( "Unexpected version parse error", formatdoc! { " Failed to read the `sbt.version` ({version}) declared in project/build.properties. Please @@ -81,7 +79,8 @@ pub(crate) fn log_user_errors(error: SbtBuildpackError) { ); } }, - SbtBuildpackError::UnsupportedSbtVersion(version) => log_error( + SbtBuildpackError::UnsupportedSbtVersion(version) => shared::output::print_error +( "Unsupported sbt version", formatdoc! { " You have defined an unsupported `sbt.version` ({version}) in the project/build.properties @@ -89,7 +88,8 @@ pub(crate) fn log_user_errors(error: SbtBuildpackError) { " }, ), - SbtBuildpackError::UnknownSbtVersion => log_error( + SbtBuildpackError::UnknownSbtVersion => shared::output::print_error +( "Unknown sbt version", formatdoc! { " The buildpack could not determine the sbt version of this project. @@ -100,7 +100,8 @@ pub(crate) fn log_user_errors(error: SbtBuildpackError) { SbtBuildpackError::ReadSbtBuildpackConfigurationError(error) => match error { ReadSbtBuildpackConfigurationError::InvalidTaskList(error) - | ReadSbtBuildpackConfigurationError::InvalidPreTaskList(error) => log_error( + | ReadSbtBuildpackConfigurationError::InvalidPreTaskList(error) => shared::output::print_error +( "Could not parse list", formatdoc! {" Could not parse a value into a list of words. @@ -111,7 +112,8 @@ pub(crate) fn log_user_errors(error: SbtBuildpackError) { ), ReadSbtBuildpackConfigurationError::InvalidSbtClean(error) - | ReadSbtBuildpackConfigurationError::InvalidAvailableAtLaunch(error) => log_error( + | ReadSbtBuildpackConfigurationError::InvalidAvailableAtLaunch(error) => shared::output::print_error +( "Could not parse boolean", formatdoc! {" Could not parse a value into a 'true' or 'false' value. @@ -124,14 +126,15 @@ pub(crate) fn log_user_errors(error: SbtBuildpackError) { SbtBuildpackError::ReadSystemPropertiesError(error) => { match error { - ReadSystemPropertiesError::IoError(error) => log_please_try_again_error( + shared::system_properties::ReadSystemPropertiesError::IoError(error) => shared::log::log_please_try_again_error( "Failed to read system.properties", "An unexpected error occurred while reading the system.properties file.", error, ), - ReadSystemPropertiesError::ParseError(error) => { - log_error( + shared::system_properties::ReadSystemPropertiesError::ParseError(error) => { + shared::output::print_error +( "Invalid system.properties file", formatdoc! {" Your system.properties file could not be parsed. @@ -144,16 +147,16 @@ pub(crate) fn log_user_errors(error: SbtBuildpackError) { } } - SbtBuildpackError::SbtBuildIoError(error) => log_please_try_again_error( + SbtBuildpackError::SbtBuildIoError(error) => shared::log::log_please_try_again_error( "Running sbt failed", formatdoc! { " An unexpected IO error occurred while running sbt. "}, error, ), - SbtBuildpackError::SbtBuildUnexpectedExitStatus(exit_status, None) => log_build_tool_unexpected_exit_code_error("sbt", exit_status), + SbtBuildpackError::SbtBuildUnexpectedExitStatus(exit_status, None) => shared::log::log_build_tool_unexpected_exit_code_error("sbt", exit_status), - SbtBuildpackError::SbtBuildUnexpectedExitStatus(_, Some(SbtError::MissingTask(task_name))) => log_error( + SbtBuildpackError::SbtBuildUnexpectedExitStatus(_, Some(SbtError::MissingTask(task_name))) => shared::output::print_error( "Failed to run sbt!", formatdoc! {" It looks like your build.sbt does not have a valid '{task_name}' task. Please reference our Dev Center article for @@ -163,7 +166,7 @@ pub(crate) fn log_user_errors(error: SbtBuildpackError) { "}, ), - SbtBuildpackError::DetectPhaseIoError(error) => log_please_try_again_error( + SbtBuildpackError::DetectPhaseIoError(error) => shared::log::log_please_try_again_error( "Unexpected I/O error", "An unexpected error occurred during the detect phase.", error, diff --git a/shared/src/log.rs b/shared/src/log.rs index a5366747..98ce7168 100644 --- a/shared/src/log.rs +++ b/shared/src/log.rs @@ -1,10 +1,10 @@ +use crate::output; use indoc::formatdoc; -use libherokubuildpack::log::log_error; use std::fmt::Debug; use std::process::ExitStatus; pub fn log_please_try_again, M: AsRef>(header: H, message: M) { - log_error( + output::print_error( header, formatdoc! {" {message} @@ -20,7 +20,7 @@ pub fn log_please_try_again_error, M: AsRef, E: Debug>( message: M, error: E, ) { - log_error( + output::print_error( header, formatdoc! {" {message} @@ -38,7 +38,7 @@ pub fn log_build_tool_unexpected_exit_code_error(build_tool_name: &str, exit_sta .code() .map_or(String::from(""), |code| code.to_string()); - log_error( + output::print_error( format!("Unexpected {build_tool_name} exit code"), formatdoc! { " {build_tool_name} unexpectedly exited with code '{exit_code_string}'. The most common reason for this are