Use - for stdout

This commit is contained in:
ysthakur 2024-07-12 20:54:04 -04:00
parent 041d642ed4
commit 2c49f3be62
2 changed files with 23 additions and 5 deletions

View File

@ -34,7 +34,7 @@ impl Command for UTouch {
.rest(
"files",
SyntaxShape::OneOf(vec![SyntaxShape::GlobPattern, SyntaxShape::Filepath]),
"The file(s) to create."
"The file(s) to create. '-' is used to represent stdout."
)
.named(
"reference",
@ -71,7 +71,7 @@ impl Command for UTouch {
)
.switch(
"no-dereference",
"affect each symbolic link instead of any referenced file (only for systems that can change the timestamps of a symlink)",
"affect each symbolic link instead of any referenced file (only for systems that can change the timestamps of a symlink). Ignored if touching stdout",
None
)
.category(Category::FileSystem)
@ -157,8 +157,13 @@ impl Command for UTouch {
let mut input_files = Vec::new();
for file_glob in &file_globs {
let path = expand_path_with(file_glob.item.as_ref(), &cwd, file_glob.item.is_expand());
input_files.push(InputFile::Path(path));
if file_glob.item.as_ref() == "-" {
input_files.push(InputFile::Stdout);
} else {
let path =
expand_path_with(file_glob.item.as_ref(), &cwd, file_glob.item.is_expand());
input_files.push(InputFile::Path(path));
}
}
if let Err(err) = uu_touch::touch(
@ -240,7 +245,7 @@ impl Command for UTouch {
result: None,
},
Example {
description: r#"Changes the last modified time of file d and e to "fixture.json"'s last modified time"#,
description: r#"Changes the last modified time of files d and e to "fixture.json"'s last modified time"#,
example: r#"utouch -m -r fixture.json d e"#,
result: None,
},
@ -249,6 +254,11 @@ impl Command for UTouch {
example: r#"utouch -a -t 2019-08-24T12:30:30 fixture.json"#,
result: None,
},
Example {
description: r#"Change the last accessed and last modified times of stdout"#,
example: r#"utouch -"#,
result: None,
},
]
}
}

View File

@ -528,3 +528,11 @@ fn reference_respects_cwd() {
assert!(path.exists());
})
}
#[test]
fn recognizes_stdout() {
Playground::setup("utouch_recognizes_stdout", |dirs, _sandbox| {
nu!(cwd: dirs.test(), "utouch -");
assert!(!dirs.test().join("-").exists());
})
}