]> git.lizzy.rs Git - rust.git/blobdiff - src/bootstrap/tarball.rs
Rollup merge of #87780 - est31:intra_doc_links, r=jyn514
[rust.git] / src / bootstrap / tarball.rs
index b02d7e062a524e4076b9d1d52113d5b6a8e4d7b4..9ff5c2327e0f77a66ac9e72a6ed61b123776ac75 100644 (file)
@@ -99,6 +99,7 @@ pub(crate) struct Tarball<'a> {
     temp_dir: PathBuf,
     image_dir: PathBuf,
     overlay_dir: PathBuf,
+    bulk_dirs: Vec<PathBuf>,
 
     include_target_in_component_name: bool,
     is_preview: bool,
@@ -137,6 +138,7 @@ fn new_inner(builder: &'a Builder<'a>, component: &str, target: Option<String>)
             temp_dir,
             image_dir,
             overlay_dir,
+            bulk_dirs: Vec::new(),
 
             include_target_in_component_name: false,
             is_preview: false,
@@ -201,6 +203,11 @@ pub(crate) fn add_dir(&self, src: impl AsRef<Path>, dest: impl AsRef<Path>) {
         self.builder.cp_r(src.as_ref(), &dest);
     }
 
+    pub(crate) fn add_bulk_dir(&mut self, src: impl AsRef<Path>, dest: impl AsRef<Path>) {
+        self.bulk_dirs.push(dest.as_ref().to_path_buf());
+        self.add_dir(src, dest);
+    }
+
     pub(crate) fn generate(self) -> GeneratedTarball {
         let mut component_name = self.component.clone();
         if self.is_preview {
@@ -221,6 +228,16 @@ pub(crate) fn generate(self) -> GeneratedTarball {
                 .arg("--image-dir")
                 .arg(&this.image_dir)
                 .arg(format!("--component-name={}", &component_name));
+
+            if let Some((dir, dirs)) = this.bulk_dirs.split_first() {
+                let mut arg = dir.as_os_str().to_os_string();
+                for dir in dirs {
+                    arg.push(",");
+                    arg.push(dir);
+                }
+                cmd.arg("--bulk-dirs").arg(&arg);
+            }
+
             this.non_bare_args(cmd);
         })
     }