~launchpad-pqm/launchpad/devel

« back to all changes in this revision

Viewing changes to utilities/script_commands.py

  • Committer: Aaron Bentley
  • Date: 2011-08-05 14:30:18 UTC
  • mto: This revision was merged to the branch mainline in revision 13619.
  • Revision ID: aaron@canonical.com-20110805143018-u740oa89347w0k80
Infer option types from defaults if not specified.

Show diffs side-by-side

added added

removed removed

Lines of Context:
31
31
    """
32
32
    parser = OptionParser()
33
33
    args, ignore, ignored, defaults = inspect.getargspec(function)
 
34
    if defaults is not None:
 
35
        defaults_dict = dict(zip(args, defaults))
 
36
    else:
 
37
        defaults_dict = {}
 
38
    arg_types = getattr(function, '_types', {})
34
39
    for arg in args:
35
 
        arg_type = function._types.get(arg)
 
40
        arg_type = arg_types.get(arg)
36
41
        if arg_type is None:
37
 
            continue
 
42
            arg_type = defaults_dict.get(arg)
 
43
            if arg_type is None:
 
44
                continue
 
45
            arg_type = type(arg_type)
38
46
        arg_help = getattr(function, '_helps', {}).get(arg)
39
47
        if arg_help is not None:
40
48
            arg_help += ' Default: %default.'
41
49
        parser.add_option('--%s' % arg, type=arg_type, help=arg_help)
42
 
    if defaults is not None:
43
 
        defaults_dict = dict(zip(args, defaults))
44
 
        option_defaults = dict(
45
 
            (key, value) for key, value in defaults_dict.items()
46
 
            if parser.defaults.get(key, '') is None)
47
 
        parser.set_defaults(**option_defaults)
 
50
    option_defaults = dict(
 
51
        (key, value) for key, value in defaults_dict.items()
 
52
        if parser.defaults.get(key, '') is None)
 
53
    parser.set_defaults(**option_defaults)
48
54
    return parser
49
55
 
50
56