summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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()