Commit 0e48cfd2 authored by Greg Ward's avatar Greg Ward

Factored out code for extracting-or-creating one of the option

  dictionaries in 'self.command_options' to 'get_option_dict()'.
Simplified code in 'parse_config_files()' and 'parse_command_line()'
  accordingly.
Fixed code in constructor that processes the 'options' dictionary
  from the setup script so it actually works: uses the new
  'self.command_options' dictionary rather than creating command
  objects and calling 'set_option()' on them.
parent 37af1c38
...@@ -185,11 +185,9 @@ class Distribution: ...@@ -185,11 +185,9 @@ class Distribution:
if options: if options:
del attrs['options'] del attrs['options']
for (command, cmd_options) in options.items(): for (command, cmd_options) in options.items():
cmd_obj = self.get_command_obj (command) opt_dict = self.get_option_dict(command)
for (key, val) in cmd_options.items(): for (opt, val) in cmd_options.items():
cmd_obj.set_option (key, val) opt_dict[opt] = ("setup script", val)
# loop over commands
# if any command options
# Now work on the rest of the attributes. Any attribute that's # Now work on the rest of the attributes. Any attribute that's
# not already defined is invalid! # not already defined is invalid!
...@@ -205,6 +203,19 @@ class Distribution: ...@@ -205,6 +203,19 @@ class Distribution:
# __init__ () # __init__ ()
def get_option_dict (self, command):
"""Get the option dictionary for a given command. If that
command's option dictionary hasn't been created yet, then create it
and return the new dictionary; otherwise, return the existing
option dictionary.
"""
dict = self.command_options.get(command)
if dict is None:
dict = self.command_options[command] = {}
return dict
# -- Config file finding/parsing methods --------------------------- # -- Config file finding/parsing methods ---------------------------
def find_config_files (self): def find_config_files (self):
...@@ -266,13 +277,11 @@ class Distribution: ...@@ -266,13 +277,11 @@ class Distribution:
parser.read(filename) parser.read(filename)
for section in parser.sections(): for section in parser.sections():
options = parser.options(section) options = parser.options(section)
if not self.command_options.has_key(section): opt_dict = self.get_option_dict(section)
self.command_options[section] = {}
opts = self.command_options[section]
for opt in options: for opt in options:
if opt != '__name__': if opt != '__name__':
opts[opt] = (filename, parser.get(section,opt)) opt_dict[opt] = (filename, parser.get(section,opt))
# Make the ConfigParser forget everything (so we retain # Make the ConfigParser forget everything (so we retain
# the original filenames that options come from) -- gag, # the original filenames that options come from) -- gag,
...@@ -409,11 +418,9 @@ class Distribution: ...@@ -409,11 +418,9 @@ class Distribution:
# Put the options from the command-line into their official # Put the options from the command-line into their official
# holding pen, the 'command_options' dictionary. # holding pen, the 'command_options' dictionary.
if not self.command_options.has_key(command): opt_dict = self.get_option_dict(command)
self.command_options[command] = {}
cmd_opts = self.command_options[command]
for (name, value) in vars(opts).items(): for (name, value) in vars(opts).items():
cmd_opts[name] = ("command line", value) opt_dict[name] = ("command line", value)
return args return args
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment