]> granicus.if.org Git - python/commitdiff
Changed to use the 'sub-commands' machinery:
authorGreg Ward <gward@python.net>
Sat, 30 Sep 2000 17:08:12 +0000 (17:08 +0000)
committerGreg Ward <gward@python.net>
Sat, 30 Sep 2000 17:08:12 +0000 (17:08 +0000)
  - added 'sub_commands' class attr
  - added 'has_*()' predicates referenced by the sub-command list
  - rewrote 'run()' so it's a trivial loop over relevant sub-commands

Lib/distutils/command/build.py

index f30f4ee1da4b0853735fc7ed052b4d7e508cd692..1f785996ecbbcf098fa17f1f45078c37ace8fdef 100644 (file)
@@ -97,26 +97,34 @@ class build (Command):
 
     def run (self):
 
-        # For now, "build" means "build_py" then "build_ext".  (Eventually
-        # it should also build documentation.)
-
-        # Invoke the 'build_py' command to "build" pure Python modules
-        # (ie. copy 'em into the build tree)
-        if self.distribution.has_pure_modules():
-            self.run_command ('build_py')
-
-        # Build any standalone C libraries next -- they're most likely to
-        # be needed by extension modules, so obviously have to be done
-        # first!
-        if self.distribution.has_c_libraries():
-            self.run_command ('build_clib')
-
-        # And now 'build_ext' -- compile extension modules and put them
-        # into the build tree
-        if self.distribution.has_ext_modules():
-            self.run_command ('build_ext')
-
-        if self.distribution.has_scripts():
-            self.run_command ('build_scripts')
+        # Run all relevant sub-commands.  This will be some subset of:
+        #  - build_py      - pure Python modules
+        #  - build_clib    - standalone C libraries
+        #  - build_ext     - Python extensions
+        #  - build_scripts - (Python) scripts
+        for cmd_name in self.get_sub_commands():
+            self.run_command(cmd_name)
+
+
+    # -- Predicates for the sub-command list ---------------------------
+
+    def has_pure_modules (self):
+        return self.distribution.has_pure_modules()
+
+    def has_c_libraries (self):
+        return self.distribution.has_c_libraries()
+
+    def has_ext_modules (self):
+        return self.distribution.has_ext_modules()
+
+    def has_scripts (self):
+        return self.distribution.has_scripts()
+
+
+    sub_commands = [('build_py',      has_pure_modules),
+                    ('build_clib',    has_c_libraries),
+                    ('build_ext',     has_ext_modules),
+                    ('build_scripts', has_scripts),
+                   ]
 
 # class build