[Python-checkins] CVS: distutils/distutils dist.py,1.41,1.42

Greg Ward python-dev@python.org
Fri, 10 Nov 2000 18:47:13 -0800


Update of /cvsroot/python/distutils/distutils
In directory slayer.i.sourceforge.net:/tmp/cvs-serv6892/distutils

Modified Files:
	dist.py 
Log Message:
Jack Jansen: added 'get_command_list()' method, and Mac-specific code to
use it to generate a dialog for users to specify the command-line (because
providing a command-line with MacPython is so awkward).


Index: dist.py
===================================================================
RCS file: /cvsroot/python/distutils/distutils/dist.py,v
retrieving revision 1.41
retrieving revision 1.42
diff -C2 -r1.41 -r1.42
*** dist.py	2000/10/14 04:06:40	1.41
--- dist.py	2000/11/11 02:47:11	1.42
***************
*** 173,176 ****
--- 173,182 ----
          # It's only safe to query 'have_run' for a command class that has
          # been instantiated -- a false value will be inserted when the
+         if sys.platform == 'mac':
+             import EasyDialogs
+             cmdlist = self.get_command_list()
+             self.script_args = EasyDialogs.GetArgv(
+                 self.global_options + self.display_options, cmdlist)
+ 
          # command object is created, and replaced with a true value when
          # the command is successfully run.  Thus it's probably best to use
***************
*** 658,661 ****
--- 664,699 ----
      # print_commands ()
  
+     def get_command_list (self):
+         """Get a list of (command, description) tuples.
+         The list is divided into "standard commands" (listed in
+         distutils.command.__all__) and "extra commands" (mentioned in
+         self.cmdclass, but not a standard command).  The descriptions come
+         from the command class attribute 'description'.
+         """
+         # Currently this is only used on Mac OS, for the Mac-only GUI
+         # Distutils interface (by Jack Jansen)
+ 
+         import distutils.command
+         std_commands = distutils.command.__all__
+         is_std = {}
+         for cmd in std_commands:
+             is_std[cmd] = 1
+ 
+         extra_commands = []
+         for cmd in self.cmdclass.keys():
+             if not is_std.get(cmd):
+                 extra_commands.append(cmd)
+ 
+         rv = []
+         for cmd in (std_commands + extra_commands):
+             klass = self.cmdclass.get(cmd)
+             if not klass:
+                 klass = self.get_command_class(cmd)
+             try:
+                 description = klass.description
+             except AttributeError:
+                 description = "(no description available)"
+             rv.append((cmd, description))
+         return rv
  
      # -- Command class/object methods ----------------------------------