'Do whatever it takes to run a command (including nothing at all,
if the command has already been run).  Specifically: if we have
already created and run the command named by \'command\', return
silently without doing anything.  If the command named by \'command\'
doesn\'t even have a command object yet, create one.  Then invoke
\'run()\' on that command object (or an existing one).'

def run_command(self, command):

    if self.have_run.get(command):
        return
    log.info('running    %s', command)
    cmd_obj = self.get_command_obj(command)
    cmd_obj.ensure_finalized()
    cmd_obj.run()
    self.have_run[command] = 1
