1
from argparse import ArgumentParser
5
from yaml import safe_load
10
def parse_args(argv=None):
11
parser = ArgumentParser()
12
parser.add_argument('config', help='Config file to use.')
13
parser.add_argument('host', help='Machine to run the command on.')
14
return parser.parse_args(argv)
19
def __init__(self, host):
23
class SSHRunner(Runner):
24
"""Class to run commands via SSH."""
26
def run(self, args, out_file):
27
subprocess.check_call(['ssh', self.host] + args, stdout=out_file)
30
def workspace_run(argv=None, runner_factory=SSHRunner):
31
args = parse_args(argv)
32
with open(args.config) as config_file:
33
config = safe_load(config_file)
34
runner = runner_factory(args.host)
35
runner.run(config['command'], sys.stdout)