diff options
author | Steven Knight <knight@baldmt.com> | 2005-03-06 00:45:02 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2005-03-06 00:45:02 (GMT) |
commit | fe741836cacf824a8e81253c9058970ccff56400 (patch) | |
tree | 25e8b37a7f64518d57111a052d7e017a56ebfdc7 /src | |
parent | b27862261a726fd88e87206cc7f00ce6a1e720ce (diff) | |
download | SCons-fe741836cacf824a8e81253c9058970ccff56400.zip SCons-fe741836cacf824a8e81253c9058970ccff56400.tar.gz SCons-fe741836cacf824a8e81253c9058970ccff56400.tar.bz2 |
Make the GenerateHelpText format easily configurable.
Diffstat (limited to 'src')
-rw-r--r-- | src/CHANGES.txt | 3 | ||||
-rw-r--r-- | src/engine/SCons/Options/OptionsTests.py | 51 | ||||
-rw-r--r-- | src/engine/SCons/Options/__init__.py | 19 |
3 files changed, 67 insertions, 6 deletions
diff --git a/src/CHANGES.txt b/src/CHANGES.txt index 2fa54ab..0535e10 100644 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -225,6 +225,9 @@ RELEASE 0.97 - XXX - Enhanced the SCons setup.py script to install man pages on UNIX/Linux systems. + - Add support for an Options.FormatOptionHelpText() method that can + be overridden to customize the format of Options help text. + From Wayne Lee: - Avoid "maximum recursion limit" errors when removing $(-$) pairs diff --git a/src/engine/SCons/Options/OptionsTests.py b/src/engine/SCons/Options/OptionsTests.py index b99aa98..96f2e2b 100644 --- a/src/engine/SCons/Options/OptionsTests.py +++ b/src/engine/SCons/Options/OptionsTests.py @@ -375,6 +375,7 @@ class OptionsTestCase(unittest.TestCase): 'THIS_SHOULD_WORK' : 'baz' }) def test_GenerateHelpText(self): + """Test generating the default format help text""" opts = SCons.Options.Options() opts.Add('ANSWER', @@ -430,6 +431,56 @@ B: b - alpha test """ text = opts.GenerateHelpText(env, sort=cmp) assert text == expectAlpha, text + + def test_FormatOptionHelpText(self): + """Test generating custom format help text""" + opts = SCons.Options.Options() + + def my_format(env, opt, help, default, actual): + return '%s %s %s %s\n' % (opt, default, actual, help) + + opts.FormatOptionHelpText = my_format + + opts.Add('ANSWER', + 'THE answer to THE question', + "42", + check, + lambda x: int(x) + 12) + + opts.Add('B', + 'b - alpha test', + "42", + check, + lambda x: int(x) + 12) + + opts.Add('A', + 'a - alpha test', + "42", + check, + lambda x: int(x) + 12) + + env = Environment() + opts.Update(env, {}) + + expect = """\ +ANSWER 42 54 THE answer to THE question +B 42 54 b - alpha test +A 42 54 a - alpha test +""" + + text = opts.GenerateHelpText(env) + assert text == expect, text + + expectAlpha = """\ +A 42 54 a - alpha test +ANSWER 42 54 THE answer to THE question +B 42 54 b - alpha test +""" + text = opts.GenerateHelpText(env, sort=cmp) + assert text == expectAlpha, text + + + if __name__ == "__main__": suite = unittest.makeSuite(OptionsTestCase, 'test_') diff --git a/src/engine/SCons/Options/__init__.py b/src/engine/SCons/Options/__init__.py index fdaee92..f5f1b8d 100644 --- a/src/engine/SCons/Options/__init__.py +++ b/src/engine/SCons/Options/__init__.py @@ -30,6 +30,7 @@ customizable variables to an SCons build. __revision__ = "__FILE__ __REVISION__ __DATE__ __DEVELOPER__" import os.path +import string import SCons.Errors import SCons.Util @@ -223,11 +224,17 @@ class Options: else: options = self.options - for option in options: - help_text = help_text + '\n%s: %s\n default: %s\n'%(option.key, option.help, option.default) - if env.has_key(option.key): - help_text = help_text + ' actual: %s\n'%env.subst('${%s}'%option.key) + def format(opt, self=self, env=env): + if env.has_key(opt.key): + actual = env.subst('${%s}' % opt.key) else: - help_text = help_text + ' actual: None\n' + actual = None + return self.FormatOptionHelpText(env, opt.key, opt.help, opt.default, actual) + lines = filter(None, map(format, options)) - return help_text + return string.join(lines, '') + + format = '\n%s: %s\n default: %s\n actual: %s\n' + + def FormatOptionHelpText(self, env, key, help, default, actual): + return self.format % (key, help, default, actual) |