blob: 48d97db4a70536e3280faf6ed2a627230127171a [file] [log] [blame]
import Arguments
import Util
class Job(object):
"""Job - A set of commands to execute as a single task."""
def iterjobs(self):
abstract
class Command(Job):
"""Command - Represent the information needed to execute a single
process.
This currently assumes that the executable will always be the
first argument."""
def __init__(self, executable, args):
assert Util.all_true(args, lambda x: isinstance(x, str))
self.executable = executable
self.args = args
def __repr__(self):
return Util.prefixAndPPrint(self.__class__.__name__,
(self.executable, self.args))
def getArgv(self):
return [self.executable] + self.args
def iterjobs(self):
yield self
class PipedJob(Job):
"""PipedJob - A sequence of piped commands."""
def __init__(self, commands):
assert all_true(args, lambda x: isinstance(x, Arguments.Command))
self.commands = list(commands)
def addJob(self, job):
assert isinstance(job, Command)
self.commands.append(job)
def __repr__(self):
return Util.prefixAndPPrint(self.__class__.__name__, (self.commands,))
class JobList(Job):
"""JobList - A sequence of jobs to perform."""
def __init__(self, jobs=[]):
self.jobs = list(jobs)
def addJob(self, job):
self.jobs.append(job)
def __repr__(self):
return Util.prefixAndPPrint(self.__class__.__name__, (self.jobs,))
def iterjobs(self):
for j in self.jobs:
yield j