summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Silverstone <daniel.silverstone@codethink.co.uk>2012-10-01 14:40:40 +0100
committerDaniel Silverstone <daniel.silverstone@codethink.co.uk>2012-10-01 14:40:40 +0100
commit6cf00a01a1bc271e281d7999f76ff8e3ab067509 (patch)
tree170a0934f40a607c099200f8f19577d90b23a546
parent701ed1d9cdc02dd8a743009e4a3205673cdcfefc (diff)
downloadlorry-controller-6cf00a01a1bc271e281d7999f76ff8e3ab067509.tar.gz
Basic controller with --work-area and auto git update
-rwxr-xr-xlorry-controller49
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()