Skip to content

Commit 7bca02c

Browse files
hashsum: fix help text to show actual utility name (#8650)
Fix all hashsum utilities (md5sum, b2sum, sha256sum, etc.) to display their actual name in help output instead of generic 'hashsum --<digest>'. Override help_template and usage for specific utilities while preserving the original hashsum behavior for the generic multicall case. Add test to verify help output shows correct utility names and prevent future regression. Fixes #8614
1 parent 0ccc67f commit 7bca02c

File tree

3 files changed

+59
-1
lines changed

3 files changed

+59
-1
lines changed

src/uu/hashsum/locales/en-US.ftl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
hashsum-about = Compute and check message digests.
22
hashsum-usage = hashsum --<digest> [OPTIONS]... [FILE]...
33
4+
# Utility-specific usage template
5+
hashsum-usage-specific = {$utility_name} [OPTION]... [FILE]...
6+
47
# Help messages
58
hashsum-help-binary-windows = read or check in binary mode (default)
69
hashsum-help-binary-other = read in binary mode

src/uu/hashsum/src/hashsum.rs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -498,7 +498,7 @@ pub fn uu_app_custom() -> Command {
498498
/// hashsum is handled differently in build.rs
499499
/// therefore, this is different from other utilities.
500500
fn uu_app(binary_name: &str) -> (Command, bool) {
501-
match binary_name {
501+
let (mut command, is_hashsum_bin) = match binary_name {
502502
// These all support the same options.
503503
"md5sum" | "sha1sum" | "sha224sum" | "sha256sum" | "sha384sum" | "sha512sum" => {
504504
(uu_app_common(), false)
@@ -516,7 +516,17 @@ fn uu_app(binary_name: &str) -> (Command, bool) {
516516
"b3sum" => (uu_app_b3sum(), false),
517517
// We're probably just being called as `hashsum`, so give them everything.
518518
_ => (uu_app_custom(), true),
519+
};
520+
521+
// If not called as generic hashsum, override the command name and usage
522+
if !is_hashsum_bin {
523+
let usage = translate!("hashsum-usage-specific", "utility_name" => binary_name);
524+
command = command
525+
.help_template(uucore::localized_help_template(binary_name))
526+
.override_usage(format_usage(&usage));
519527
}
528+
529+
(command, is_hashsum_bin)
520530
}
521531

522532
#[allow(clippy::cognitive_complexity)]

tests/by-util/test_hashsum.rs

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1080,3 +1080,48 @@ fn test_check_sha256_binary() {
10801080
.no_stderr()
10811081
.stdout_is("binary.png: OK\n");
10821082
}
1083+
1084+
#[test]
1085+
fn test_help_shows_correct_utility_name() {
1086+
// Test that help output shows the actual utility name instead of "hashsum"
1087+
let scene = TestScenario::new(util_name!());
1088+
1089+
// Test md5sum
1090+
scene
1091+
.ccmd("md5sum")
1092+
.arg("--help")
1093+
.succeeds()
1094+
.stdout_contains("Usage: md5sum")
1095+
.stdout_does_not_contain("Usage: hashsum");
1096+
1097+
// Test sha256sum
1098+
scene
1099+
.ccmd("sha256sum")
1100+
.arg("--help")
1101+
.succeeds()
1102+
.stdout_contains("Usage: sha256sum")
1103+
.stdout_does_not_contain("Usage: hashsum");
1104+
1105+
// Test b2sum
1106+
scene
1107+
.ccmd("b2sum")
1108+
.arg("--help")
1109+
.succeeds()
1110+
.stdout_contains("Usage: b2sum")
1111+
.stdout_does_not_contain("Usage: hashsum");
1112+
1113+
// Test b3sum
1114+
scene
1115+
.ccmd("b3sum")
1116+
.arg("--help")
1117+
.succeeds()
1118+
.stdout_contains("Usage: b3sum")
1119+
.stdout_does_not_contain("Usage: hashsum");
1120+
1121+
// Test that generic hashsum still shows the correct usage
1122+
scene
1123+
.ccmd("hashsum")
1124+
.arg("--help")
1125+
.succeeds()
1126+
.stdout_contains("Usage: hashsum --<digest>");
1127+
}

0 commit comments

Comments
 (0)