Skip to content

Commit 3b140fc

Browse files
committed
Tweak output
1 parent ed34884 commit 3b140fc

File tree

6 files changed

+33
-16
lines changed

6 files changed

+33
-16
lines changed

buildpacks/gradle/src/main.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ use crate::layers::gradle_home::handle_gradle_home_layer;
77
use crate::GradleBuildpackError::{GradleBuildIoError, GradleBuildUnexpectedStatusError};
88
use buildpacks_jvm_shared as shared;
99
use buildpacks_jvm_shared::output::{
10-
print_buildpack_name, print_section, print_subsection, track_timing,
10+
print_buildpack_name, print_section, print_subsection, track_timing, BuildpackOutputText,
11+
BuildpackOutputTextSection,
1112
};
1213
#[cfg(test)]
1314
use buildpacks_jvm_shared_test as _;
@@ -20,7 +21,6 @@ use libcnb::{buildpack_main, Buildpack, Env};
2021
#[cfg(test)]
2122
use libcnb_test as _;
2223
use libherokubuildpack::command::CommandExt;
23-
use libherokubuildpack::log::log_header;
2424
use serde::Deserialize;
2525
use std::io::{stderr, stdout};
2626
use std::process::{Command, ExitStatus};
@@ -126,7 +126,11 @@ impl Buildpack for GradleBuildpack {
126126
})
127127
.ok_or(GradleBuildpackError::BuildTaskUnknown)?;
128128

129-
log_header("Running build task");
129+
print_section("Running Gradle build");
130+
print_subsection(BuildpackOutputText::new(vec![
131+
BuildpackOutputTextSection::regular("Running "),
132+
BuildpackOutputTextSection::command(format!("./gradlew {task_name} -x check")),
133+
]));
130134

131135
let output = Command::new(&gradle_wrapper_executable_path)
132136
.current_dir(&context.app_dir)

buildpacks/jvm/src/bin/heroku_database_env_var_rewrite.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ fn jvm_env_vars_for_env(
4242
// Handling for Spring specific JDBC environment variables
4343
let disable_spring_datasource_url = input
4444
.get("DISABLE_SPRING_DATASOURCE_URL")
45-
.map_or(false, |value| value == "true");
45+
.is_some_and(|value| value == "true");
4646

4747
if !disable_spring_datasource_url
4848
&& !input.contains_key("SPRING_DATASOURCE_URL")

buildpacks/jvm/src/layers/openjdk.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ pub(crate) fn handle_openjdk_layer(
191191
)
192192
.map_err(OpenJdkBuildpackError::CannotSymlinkUbuntuCertificates)?;
193193

194-
output::print_subsection("Done.");
194+
output::print_subsection("Done");
195195
} else {
196196
output::print_subsection(BuildpackOutputText::new(vec![
197197
BuildpackOutputTextSection::regular("Skipping ("),

buildpacks/maven/src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ impl Buildpack for MavenBuildpack {
212212
output::print_section("Running Maven build");
213213
output::print_subsection(BuildpackOutputText::new(vec![
214214
BuildpackOutputTextSection::regular("Running "),
215-
BuildpackOutputTextSection::value(format!(
215+
BuildpackOutputTextSection::command(format!(
216216
"{} {} {}",
217217
mvn_executable.to_string_lossy(),
218218
shell_words::join(&maven_options),

buildpacks/sbt/src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ impl Buildpack for SbtBuildpack {
109109
output::print_section("Running sbt build");
110110
output::print_subsection(BuildpackOutputText::new(vec![
111111
BuildpackOutputTextSection::regular("Running "),
112-
BuildpackOutputTextSection::value(format!("sbt {}", shell_words::join(&tasks))),
112+
BuildpackOutputTextSection::command(format!("sbt {}", shell_words::join(&tasks))),
113113
]));
114114

115115
let mut command = Command::new("sbt");

shared/src/output.rs

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use std::time::{Duration, Instant};
55

66
pub fn print_buildpack_name(buildpack_name: impl AsRef<str>) {
77
let buildpack_name = buildpack_name.as_ref();
8-
println!("{ANSI_BUILDPACK_NAME_CODE}# {buildpack_name}{ANSI_RESET_CODE}\n");
8+
print!("\n{ANSI_BUILDPACK_NAME_CODE}# {buildpack_name}{ANSI_RESET_CODE}\n\n");
99
}
1010

1111
pub fn print_section(text: impl Into<BuildpackOutputText>) {
@@ -71,10 +71,19 @@ pub fn run_command<E, F: FnOnce(std::io::Error) -> E, F2: FnOnce(Output) -> E>(
7171
let child = if quiet {
7272
command.output_and_write_streams(std::io::sink(), std::io::sink())
7373
} else {
74-
command.output_and_write_streams(
75-
line_mapped(std::io::stdout(), add_prefix_to_non_empty(" ")),
76-
line_mapped(std::io::stderr(), add_prefix_to_non_empty(" ")),
77-
)
74+
const SPACE_ASCII: u8 = 0x20;
75+
let prefix = vec![SPACE_ASCII; 6];
76+
77+
println!();
78+
79+
let output = command.output_and_write_streams(
80+
line_mapped(std::io::stdout(), add_prefix_to_non_empty(prefix.clone())),
81+
line_mapped(std::io::stderr(), add_prefix_to_non_empty(prefix)),
82+
);
83+
84+
println!();
85+
86+
output
7887
};
7988

8089
child.map_err(io_error_fn).and_then(|output| {
@@ -222,6 +231,10 @@ impl BuildpackOutputTextSection {
222231
pub fn value(value: impl Into<String>) -> Self {
223232
BuildpackOutputTextSection::Value(value.into())
224233
}
234+
235+
pub fn command(value: impl Into<String>) -> Self {
236+
BuildpackOutputTextSection::Command(value.into())
237+
}
225238
}
226239

227240
impl From<String> for BuildpackOutputText {
@@ -283,12 +296,12 @@ fn format_duration(duration: &Duration) -> String {
283296

284297
const VALUE_DELIMITER_CHAR: char = '`';
285298
const ANSI_RESET_CODE: &str = "\u{1b}[0m";
286-
const ANSI_VALUE_CODE: &str = "\u{1b}[0;34m";
299+
const ANSI_VALUE_CODE: &str = "\u{1b}[0;33m";
287300
const ANSI_YELLOW_CODE: &str = "\u{1b}[0;33m";
288301
const ANSI_RED_CODE: &str = "\u{1b}[0;31m";
289302
const ANSI_BUILDPACK_NAME_CODE: &str = "\u{1b}[1;35m";
290303
const ANSI_URL_CODE: &str = "\u{1b}[0;34m";
291-
const ANSI_COMMAND_CODE: &str = "\u{1b}[0;34m";
304+
const ANSI_COMMAND_CODE: &str = "\u{1b}[1;36m";
292305
const ERROR_WARNING_LINE_PREFIX: &str = "! ";
293306

294307
#[cfg(test)]
@@ -311,7 +324,7 @@ mod test {
311324
..Default::default()
312325
};
313326

314-
assert_eq!(text.to_ansi_string(), "\u{1b}[0m\u{1b}[0;33m! Hello\u{1b}[0m\n\u{1b}[0m\u{1b}[0;33m! `\u{1b}[0;34mWorld\u{1b}[0m`\u{1b}[0;33m\u{1b}[0m\n\u{1b}[0m\u{1b}[0;33m! How\u{1b}[0m\n\u{1b}[0m\u{1b}[0;33m! are you?");
327+
assert_eq!(text.to_ansi_string(), "\u{1b}[0m\u{1b}[0;33m! Hello\u{1b}[0m\n\u{1b}[0m\u{1b}[0;33m! `\u{1b}[0;33mWorld\u{1b}[0m`\u{1b}[0;33m\u{1b}[0m\n\u{1b}[0m\u{1b}[0;33m! How\u{1b}[0m\n\u{1b}[0m\u{1b}[0;33m! are you?");
315328
}
316329

317330
#[test]
@@ -329,7 +342,7 @@ mod test {
329342

330343
assert_eq!(
331344
text.to_ansi_string(),
332-
"\u{1b}[0m\u{1b}[0;33m! Intro\u{1b}[0m\n\u{1b}[0m\u{1b}[0;33m! `\u{1b}[0;34mWith\u{1b}[0m\n\u{1b}[0m\u{1b}[0;33m! \u{1b}[0;34mNewline\u{1b}[0m`\u{1b}[0;33m\u{1b}[0m\n\u{1b}[0m\u{1b}[0;33m! Outro"
345+
"\u{1b}[0m\u{1b}[0;33m! Intro\u{1b}[0m\n\u{1b}[0m\u{1b}[0;33m! `\u{1b}[0;33mWith\u{1b}[0m\n\u{1b}[0m\u{1b}[0;33m! \u{1b}[0;33mNewline\u{1b}[0m`\u{1b}[0;33m\u{1b}[0m\n\u{1b}[0m\u{1b}[0;33m! Outro"
333346
);
334347
}
335348

0 commit comments

Comments
 (0)