From d18bdef79931c1b52d69ad261425cf9066111208 Mon Sep 17 00:00:00 2001 From: N <47500890+avi-cenna@users.noreply.github.com> Date: Tue, 14 May 2024 20:53:59 -0400 Subject: [PATCH] Use --command-color when printing shebang recipe commands (#1911) --- justfile | 5 +++++ src/recipe.rs | 9 ++++++++- tests/shebang.rs | 31 +++++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/justfile b/justfile index 882b8ed..660e3da 100755 --- a/justfile +++ b/justfile @@ -216,6 +216,11 @@ _sh: hello='Yo' echo "$hello from a shell script!" +_nu: + #!/usr/bin/env nu + let hellos = ["Greetings", "Yo", "Howdy"] + $hellos | each {|el| print $"($el) from a nushell script!" } + _ruby: #!/usr/bin/env ruby puts "Hello from ruby!" diff --git a/src/recipe.rs b/src/recipe.rs index 3ef2843..93ff6be 100644 --- a/src/recipe.rs +++ b/src/recipe.rs @@ -310,7 +310,14 @@ impl<'src, D> Recipe<'src, D> { if config.verbosity.loud() && (config.dry_run || self.quiet) { for line in &evaluated_lines { - eprintln!("{line}"); + eprintln!( + "{}", + config + .color + .command(config.command_color) + .stderr() + .paint(line) + ); } } diff --git a/tests/shebang.rs b/tests/shebang.rs index 986d0ca..e5ae23d 100644 --- a/tests/shebang.rs +++ b/tests/shebang.rs @@ -58,6 +58,37 @@ fn simple() { .run(); } +#[test] +fn echo() { + Test::new() + .justfile( + " + @baz: + #!/bin/sh + echo fizz + ", + ) + .stdout("fizz\n") + .stderr("#!/bin/sh\necho fizz\n") + .run(); +} + +#[test] +fn echo_with_command_color() { + Test::new() + .justfile( + " + @baz: + #!/bin/sh + echo fizz + ", + ) + .args(["--color", "always", "--command-color", "purple"]) + .stdout("fizz\n") + .stderr("\u{1b}[1;35m#!/bin/sh\u{1b}[0m\n\u{1b}[1;35mecho fizz\u{1b}[0m\n") + .run(); +} + // This test exists to make sure that shebang recipes run correctly. Although // this script is still executed by a shell its behavior depends on the value of // a variable and continuing even though a command fails, whereas in plain