aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs28
1 files changed, 15 insertions, 13 deletions
diff --git a/src/main.rs b/src/main.rs
index acd0e38..8c8e9dc 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -116,25 +116,27 @@ struct LinkArgs {
116 #[clap(long)] 116 #[clap(long)]
117 directory: bool, 117 directory: bool,
118 118
119 origin: PathBuf, 119 origins: Vec<PathBuf>,
120 120
121 destination: PathBuf, 121 destination: PathBuf,
122} 122}
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 if !args.directory && args.origin.is_dir() { 126 for origin in args.origins {
127 let directory = args.origin; 127 if !args.directory && origin.is_dir() {
128 let origins = utils::collect_files_in_dir_recursive(&directory)?; 128 let directory = origin;
129 for origin in origins { 129 let origins = utils::collect_files_in_dir_recursive(&directory)?;
130 // unwrap: origin is under directory so stripping should not fail 130 for origin in origins {
131 let path_extra = origin.strip_prefix(&directory).unwrap(); 131 // unwrap: origin is under directory so stripping should not fail
132 let destination = args.destination.join(path_extra); 132 let path_extra = origin.strip_prefix(&directory).unwrap();
133 dotup.link(&origin, &destination); 133 let destination = args.destination.join(path_extra);
134 } 134 dotup.link(&origin, &destination);
135 } else { 135 }
136 dotup.link(&args.origin, &args.destination); 136 } else {
137 }; 137 dotup.link(&origin, &args.destination);
138 };
139 }
138 utils::write_dotup(&dotup)?; 140 utils::write_dotup(&dotup)?;
139 Ok(()) 141 Ok(())
140} 142}