diff options
author | Daniel Silverstone <daniel.silverstone@codethink.co.uk> | 2012-10-01 14:40:40 +0100 |
---|---|---|
committer | Daniel Silverstone <daniel.silverstone@codethink.co.uk> | 2012-10-01 14:40:40 +0100 |
commit | 6cf00a01a1bc271e281d7999f76ff8e3ab067509 (patch) | |
tree | 170a0934f40a607c099200f8f19577d90b23a546 | |
parent | 701ed1d9cdc02dd8a743009e4a3205673cdcfefc (diff) | |
download | lorry-controller-6cf00a01a1bc271e281d7999f76ff8e3ab067509.tar.gz |
Basic controller with --work-area and auto git update
-rwxr-xr-x | lorry-controller | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/lorry-controller b/lorry-controller new file mode 100755 index 0000000..1ead6c7 --- /dev/null +++ b/lorry-controller @@ -0,0 +1,49 @@ +#!/usr/bin/env python +# +# Copyright (C) 2012 Codethink Limited + + +import cliapp +import logging +import os + +defaults = { + 'work-area': '/home/lorry/controller-area' +} + + +class LorryController(cliapp.Application): + + def add_settings(self): + self.settings.string(['work-area'], + 'path to the area for the controller to work in', + metavar='PATH', + default=defaults['work-area']) + + def process_args(self, args): + logging.info("Starting to control lorry") + try: + os.chdir(self.settings['work-area']) + except OSError, e: + logging.error("Unable to chdir() to %s" % + self.settings['work-area']) + raise SystemExit(2) + if not os.path.isdir("git"): + logging.error("Unable to find git checkout") + raise SystemExit(3) + if not os.path.isdir("work"): + os.mkdir("work") + + logging.info("Updating configuration checkout") + self.rungit(['remote', 'update', 'origin']) + self.rungit(['reset', '--hard', 'origin/master']) + self.rungit(['clean', '-fdx']) + + + def rungit(self, args): + self.runcmd(['git']+args, cwd=os.path.join(self.settings['work-area'], + 'git')) + + +if __name__ == '__main__': + LorryController(version='1').run() |