]> git.lizzy.rs Git - rust.git/commitdiff
Refactor checks on list of extended tools.
authorO01eg <o01eg@yandex.ru>
Wed, 7 Feb 2018 17:57:02 +0000 (20:57 +0300)
committerO01eg <o01eg@yandex.ru>
Wed, 7 Feb 2018 17:57:02 +0000 (20:57 +0300)
src/bootstrap/install.rs

index 86df36f209e6b3f575b6862131fad459f8a9288b..20f7d379a6967a45700f87a4de5d767e609a6b65 100644 (file)
@@ -22,6 +22,7 @@
 
 use builder::{Builder, RunConfig, ShouldRun, Step};
 use cache::Interned;
+use config::Config;
 
 pub fn install_docs(builder: &Builder, stage: u32, host: Interned<String>) {
     install_sh(builder, "docs", "rust-docs", stage, Some(host));
@@ -144,6 +145,19 @@ pub struct $name {
             pub host: Interned<String>,
         }
 
+        impl $name {
+            #[allow(dead_code)]
+            fn should_build(config: &Config) -> bool {
+                config.extended && config.tools.as_ref()
+                    .map_or(true, |t| t.contains($path))
+            }
+
+            #[allow(dead_code)]
+            fn should_install(builder: &Builder) -> bool {
+                builder.config.tools.as_ref().map_or(false, |t| t.contains($path))
+            }
+        }
+
         impl Step for $name {
             type Output = ();
             const DEFAULT: bool = true;
@@ -185,39 +199,34 @@ fn run($sel, $builder: &Builder) {
             install_std(builder, self.stage, *target);
         }
     };
-    Cargo, "cargo", _config.extended &&
-            _config.tools.as_ref().map_or(true, |t| t.contains("cargo")), only_hosts: true, {
+    Cargo, "cargo", Self::should_build(_config), only_hosts: true, {
         builder.ensure(dist::Cargo { stage: self.stage, target: self.target });
         install_cargo(builder, self.stage, self.target);
     };
-    Rls, "rls", _config.extended &&
-            _config.tools.as_ref().map_or(true, |t| t.contains("rls")), only_hosts: true, {
+    Rls, "rls", Self::should_build(_config), only_hosts: true, {
         if builder.ensure(dist::Rls { stage: self.stage, target: self.target }).is_some() ||
-            builder.config.tools.as_ref().map_or(false, |t| t.contains("rls")) {
+            Self::should_install(builder) {
             install_rls(builder, self.stage, self.target);
         } else {
             println!("skipping Install RLS stage{} ({})", self.stage, self.target);
         }
     };
-    Rustfmt, "rustfmt", _config.extended &&
-            _config.tools.as_ref().map_or(true, |t| t.contains("rustfmt")), only_hosts: true, {
+    Rustfmt, "rustfmt", Self::should_build(_config), only_hosts: true, {
         if builder.ensure(dist::Rustfmt { stage: self.stage, target: self.target }).is_some() ||
-            builder.config.tools.as_ref().map_or(false, |t| t.contains("rustfmt"))  {
+            Self::should_install(builder) {
             install_rustfmt(builder, self.stage, self.target);
         } else {
             println!("skipping Install Rustfmt stage{} ({})", self.stage, self.target);
         }
     };
-    Analysis, "analysis", _config.extended &&
-            _config.tools.as_ref().map_or(true, |t| t.contains("analysis")), only_hosts: false, {
+    Analysis, "analysis", Self::should_build(_config), only_hosts: false, {
         builder.ensure(dist::Analysis {
             compiler: builder.compiler(self.stage, self.host),
             target: self.target
         });
         install_analysis(builder, self.stage, self.target);
     };
-    Src, "src", _config.extended &&
-            _config.tools.as_ref().map_or(true, |t| t.contains("src")), only_hosts: true, {
+    Src, "src", Self::should_build(_config) , only_hosts: true, {
         builder.ensure(dist::Src);
         install_src(builder, self.stage);
     }, ONLY_BUILD;