summaryrefslogtreecommitdiffstats
path: root/src/engine
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2001-09-29 10:52:18 (GMT)
committerSteven Knight <knight@baldmt.com>2001-09-29 10:52:18 (GMT)
commit5029b0d71e078e84d0513987860fdea1b72e40cc (patch)
treec5e642ff3d0da4d39d5cf421202a0c1335a29fc7 /src/engine
parent2a69a71894e681e7060e168b99fe7cc608ad7d33 (diff)
downloadSCons-5029b0d71e078e84d0513987860fdea1b72e40cc.zip
SCons-5029b0d71e078e84d0513987860fdea1b72e40cc.tar.gz
SCons-5029b0d71e078e84d0513987860fdea1b72e40cc.tar.bz2
Add support for multi-command Builders and Actions.
Diffstat (limited to 'src/engine')
-rw-r--r--src/engine/SCons/Builder.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/engine/SCons/Builder.py b/src/engine/SCons/Builder.py
index 2852b3a..d354c57 100644
--- a/src/engine/SCons/Builder.py
+++ b/src/engine/SCons/Builder.py
@@ -66,10 +66,16 @@ execute_actions = 1;
def Action(act):
"""A factory for action objects."""
+ if type(act) == types.StringType:
+ l = string.split(act, "\n")
+ if len(l) > 1:
+ act = l
if type(act) == types.FunctionType:
return FunctionAction(act)
elif type(act) == types.StringType:
return CommandAction(act)
+ elif type(act) == types.ListType:
+ return ListAction(act)
else:
return None
@@ -119,3 +125,12 @@ class FunctionAction(ActionBase):
# XXX: WHAT SHOULD WE PRINT HERE?
if execute_actions:
self.function(kw)
+
+class ListAction(ActionBase):
+ """Class for lists of other actions."""
+ def __init__(self, list):
+ self.list = map(lambda x: Action(x), list)
+
+ def execute(self, **kw):
+ for l in self.list:
+ apply(l.execute, (), kw)