diff options
| author | diogo464 <[email protected]> | 2022-02-15 18:54:09 +0000 |
|---|---|---|
| committer | diogo464 <[email protected]> | 2022-02-15 18:54:09 +0000 |
| commit | d5abd94c24a6d4542bbdddc8a8d43a7de6f4eed5 (patch) | |
| tree | 0655678b72c93218789dbd430b4e4d5d2636ef53 /src/main.rs | |
| parent | 00e94787e0e473f733b15da24ebe64ed0f595a9e (diff) | |
allow linking multiples files at once
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 28 |
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 | ||
| 124 | fn command_link(global_flags: Flags, args: LinkArgs) -> anyhow::Result<()> { | 124 | fn 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 | } |
