doit.tools includes some commonly used code. These are not used by the doit core, you can see it as a “standard library”. The functions/class used with uptodate were already introduced in the previous section.
Creates a folder if it does not exist yet. Uses os.makedirs() <http://docs.python.org/2/library/os#os.makedirs>_.
from doit.tools import create_folder
BUILD_PATH = "_build"
def task_build():
return {'actions': [(create_folder, [BUILD_PATH]),
'touch %(targets)s'],
'targets': ["%s/file.o" % BUILD_PATH]
}
Return task name task actions from a task. This function can be used as ‘title’ attribute of a task dictionary to provide more detailed information of the action being executed.
from doit.tools import title_with_actions
def task_with_details():
return {'actions': ['echo abc 123'],
'title': title_with_actions}
This is useful for executing long running process like a web-server.
from doit.tools import LongRunning
def task_top():
cmd = "top"
return {'actions': [LongRunning(cmd)],}
doit by default redirects stdout and stderr. Because of this when you try to use the python debugger with pdb.set_trace, it does not work properly. To make sure you get a proper PDB shell you should use doit.tools.set_trace instead of pdb.set_trace.
def need_to_debug():
# some code here
from doit import tools
tools.set_trace()
# more code
def task_X():
return {'actions':[(need_to_debug,)]}