aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/main.rs b/src/main.rs
index af20f71..132b418 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -123,16 +123,18 @@ struct LinkArgs {
123 123
124fn command_link(global_flags: Flags, args: LinkArgs) -> anyhow::Result<()> { 124fn command_link(global_flags: Flags, args: LinkArgs) -> anyhow::Result<()> {
125 let mut dotup = utils::read_dotup(&global_flags)?; 125 let mut dotup = utils::read_dotup(&global_flags)?;
126 let origins = if args.directory { 126 if !args.directory && args.origin.is_dir() {
127 vec![args.origin] 127 let directory = args.origin;
128 } else if args.origin.is_dir() { 128 let origins = utils::collect_files_in_dir_recursive(&directory)?;
129 utils::collect_files_in_dir_recursive(args.origin)? 129 for origin in origins {
130 // unwrap: origin is under directory so stripping should not fail
131 let path_extra = origin.strip_prefix(&directory).unwrap();
132 let destination = args.destination.join(path_extra);
133 dotup.link(&origin, &destination);
134 }
130 } else { 135 } else {
131 vec![args.origin] 136 dotup.link(&args.origin, &args.destination);
132 }; 137 };
133 for origin in origins {
134 dotup.link(origin, &args.destination);
135 }
136 utils::write_dotup(&dotup)?; 138 utils::write_dotup(&dotup)?;
137 Ok(()) 139 Ok(())
138} 140}