The action class
An action is performed in order to (re-)generate an artefact. it uses either a command string (executed in a platform-specific shell), or a Python callable.
Constructor
-
action
() Construct an empty (abstract) action. This is useful to define an abstract tool.
-
action
(command) Construct an action from the given command (string).
-
action
(name, command) Construct an action with the given name, from the given command (string).
Call operator
-
__call__
(target, source) Call the action explicitely. Returns success.
Examples
# define some actions
compile = action('c++.compile', 'c++ -c -o $(<) $(>)')
link = action('c++.link', 'c++ -o $(<) $(>)')
test = action('run_test', '$(>)')
# this demonstrates how to compound actions
def run_test(target, source):
if test(target, source):
print('PASS')
else:
print('FAIL')
# bind target to source using the above rules
obj = rule(compile, 'hello.o', 'hello.cpp')
bin = rule(link, 'hello', obj)
t = rule(run_test, 'test', bin, attrs=notfile|always)