Executables

EXPERIMENTAL

This function is still being reviewed, and may be subject to changes to it’s signature and naming before uranium 1.0.

Uranium provides a convenience wrapper to interact with executables. This can handle some common scenarios, like execute a script and patch in the stdin, stdout, and stderr streams of the main Uranium processes.

def main(build):
    build.packages.install("py.test")
    build.executables.run(["py.test", "tests"])

Full API Reference

class uranium.executables.Executables(root)[source]

executables contains utility methods to interact with executables, in the context of the directory passed in.

run(args, link_streams=True, fail_on_error=True, subprocess_args=None)[source]

execute an executable. by default, this method links the stdin, stdout, and stderr streams. in the case of an non-zero exit code, it will also raise a NonZeroExitCodeException.

for more customizability, subprocess.call() is a completely acceptable alternative. run() just has some defaults that are more suitable for builds.

returns a tuple of (exit_code, stdout, stderr)

args: a list of command line arguments

link_streams (default True): if set to true, stdin, stdout and stderr of the parent process will be used as the pipes for the child process.

fail_on_error: (default True): if set to true, raise an exception on a non-zero exit code.

subprocess_args: if set to a dictionary, these arguments will be passed into the popen statement.

example:

def main(build):
    build.executables.run(["echo", ""hello world""])