mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-28 19:47:45 +00:00
install: verbose - list all created directories
$ install -Dv source_file1 sub3/a/b/c/file install: creating directory 'sub3' install: creating directory 'sub3/a' install: creating directory 'sub3/a/b' install: creating directory 'sub3/a/b/c' 'source_file1' -> 'sub3/a/b/c/file'
This commit is contained in:
parent
ee50f408bd
commit
7910eca71b
2 changed files with 40 additions and 1 deletions
|
@ -464,6 +464,19 @@ fn standard(mut paths: Vec<String>, b: &Behavior) -> UResult<()> {
|
||||||
} else {
|
} else {
|
||||||
if let Some(parent) = target.parent() {
|
if let Some(parent) = target.parent() {
|
||||||
if !parent.exists() && b.create_leading {
|
if !parent.exists() && b.create_leading {
|
||||||
|
if b.verbose {
|
||||||
|
let mut result = PathBuf::new();
|
||||||
|
// When creating directories with -Dv, show directory creations step
|
||||||
|
// by step
|
||||||
|
for part in parent.components() {
|
||||||
|
result.push(part.as_os_str());
|
||||||
|
if !Path::new(part.as_os_str()).is_dir() {
|
||||||
|
// Don't display when the directory already exists
|
||||||
|
println!("install: creating directory {}", result.quote());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if let Err(e) = fs::create_dir_all(parent) {
|
if let Err(e) = fs::create_dir_all(parent) {
|
||||||
return Err(InstallError::CreateDirFailed(parent.to_path_buf(), e).into());
|
return Err(InstallError::CreateDirFailed(parent.to_path_buf(), e).into());
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
// spell-checker:ignore (words) helloworld objdump
|
// spell-checker:ignore (words) helloworld objdump n'source
|
||||||
|
|
||||||
use crate::common::util::*;
|
use crate::common::util::*;
|
||||||
use filetime::FileTime;
|
use filetime::FileTime;
|
||||||
|
@ -1174,3 +1174,29 @@ fn test_install_dir_dot() {
|
||||||
assert!(at.dir_exists("dir4/cal"));
|
assert!(at.dir_exists("dir4/cal"));
|
||||||
assert!(at.dir_exists("dir5/cali"));
|
assert!(at.dir_exists("dir5/cali"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_install_dir_req_verbose() {
|
||||||
|
let scene = TestScenario::new(util_name!());
|
||||||
|
let at = &scene.fixtures;
|
||||||
|
|
||||||
|
let file_1 = "source_file1";
|
||||||
|
let dest_dir = "sub4";
|
||||||
|
at.touch(file_1);
|
||||||
|
scene
|
||||||
|
.ucmd()
|
||||||
|
.arg("-Dv")
|
||||||
|
.arg(file_1)
|
||||||
|
.arg("sub3/a/b/c/file")
|
||||||
|
.succeeds()
|
||||||
|
.stdout_contains("install: creating directory 'sub3'\ninstall: creating directory 'sub3/a'\ninstall: creating directory 'sub3/a/b'\ninstall: creating directory 'sub3/a/b/c'\n'source_file1' -> 'sub3/a/b/c/file'");
|
||||||
|
|
||||||
|
at.mkdir(dest_dir);
|
||||||
|
scene
|
||||||
|
.ucmd()
|
||||||
|
.arg("-Dv")
|
||||||
|
.arg(file_1)
|
||||||
|
.arg("sub4/a/b/c/file")
|
||||||
|
.succeeds()
|
||||||
|
.stdout_contains("install: creating directory 'sub4/a'\ninstall: creating directory 'sub4/a/b'\ninstall: creating directory 'sub4/a/b/c'\n'source_file1' -> 'sub4/a/b/c/file'");
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue