From d5abd94c24a6d4542bbdddc8a8d43a7de6f4eed5 Mon Sep 17 00:00:00 2001 From: diogo464 Date: Tue, 15 Feb 2022 18:54:09 +0000 Subject: allow linking multiples files at once --- src/main.rs | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) (limited to 'src/main.rs') 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 { #[clap(long)] directory: bool, - origin: PathBuf, + origins: Vec, destination: PathBuf, } fn command_link(global_flags: Flags, args: LinkArgs) -> anyhow::Result<()> { let mut dotup = utils::read_dotup(&global_flags)?; - if !args.directory && args.origin.is_dir() { - let directory = args.origin; - let origins = utils::collect_files_in_dir_recursive(&directory)?; - for origin in origins { - // unwrap: origin is under directory so stripping should not fail - let path_extra = origin.strip_prefix(&directory).unwrap(); - let destination = args.destination.join(path_extra); - dotup.link(&origin, &destination); - } - } else { - dotup.link(&args.origin, &args.destination); - }; + for origin in args.origins { + if !args.directory && origin.is_dir() { + let directory = origin; + let origins = utils::collect_files_in_dir_recursive(&directory)?; + for origin in origins { + // unwrap: origin is under directory so stripping should not fail + let path_extra = origin.strip_prefix(&directory).unwrap(); + let destination = args.destination.join(path_extra); + dotup.link(&origin, &destination); + } + } else { + dotup.link(&origin, &args.destination); + }; + } utils::write_dotup(&dotup)?; Ok(()) } -- cgit