diff options
| author | Steven Knight <knight@baldmt.com> | 2004-10-07 17:49:23 (GMT) |
|---|---|---|
| committer | Steven Knight <knight@baldmt.com> | 2004-10-07 17:49:23 (GMT) |
| commit | 1a5adfd67ec02f9a2fdfa8a2da87dc7266759114 (patch) | |
| tree | 1c2aa0119a24b6f0427d0dd2c3974d930257c488 /src/engine/SCons/Tool | |
| parent | 3e59136605528a8b568fe339bcee817a5230b699 (diff) | |
| download | SCons-1a5adfd67ec02f9a2fdfa8a2da87dc7266759114.zip SCons-1a5adfd67ec02f9a2fdfa8a2da87dc7266759114.tar.gz SCons-1a5adfd67ec02f9a2fdfa8a2da87dc7266759114.tar.bz2 | |
Allow passing a dictionary of keyword arguments to Tool specifications. (Gary Oberbrunner)
Diffstat (limited to 'src/engine/SCons/Tool')
| -rw-r--r-- | src/engine/SCons/Tool/__init__.py | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/engine/SCons/Tool/__init__.py b/src/engine/SCons/Tool/__init__.py index afad44c..2adaacb 100644 --- a/src/engine/SCons/Tool/__init__.py +++ b/src/engine/SCons/Tool/__init__.py @@ -45,24 +45,35 @@ import SCons.Errors import SCons.Defaults class ToolSpec: - def __init__(self, name): + def __init__(self, name, **kw): self.name = name + # remember these so we can merge them into the call + self.init_kw = kw def __call__(self, env, *args, **kw): + if self.init_kw is not None: + # Merge call kws into init kws; + # but don't bash self.init_kw. + if kw is not None: + call_kw = kw + kw = self.init_kw.copy() + kw.update(call_kw) + else: + kw = self.init_kw env.Append(TOOLS = [ self.name ]) apply(self.generate, ( env, ) + args, kw) def __str__(self): return self.name -def Tool(name, toolpath=[]): +def Tool(name, toolpath=[], **kw): "Select a canned Tool specification, optionally searching in toolpath." try: file, path, desc = imp.find_module(name, toolpath) try: module = imp.load_module(name, file, path, desc) - spec = ToolSpec(name) + spec = apply(ToolSpec, (name,), kw) spec.generate = module.generate spec.exists = module.exists return spec @@ -83,7 +94,7 @@ def Tool(name, toolpath=[]): raise SCons.Errors.UserError, "No tool named '%s': %s" % (name, e) if file: file.close() - spec = ToolSpec(name) + spec = apply(ToolSpec, (name,), kw) spec.generate = sys.modules[full_name].generate spec.exists = sys.modules[full_name].exists return spec |
