Initial commit.
diff --git a/zuul-server b/zuul-server
new file mode 100755
index 0000000..e3e1926
--- /dev/null
+++ b/zuul-server
@@ -0,0 +1,53 @@
+import argparse
+import ConfigParser
+import os
+
+import zuul.scheduler
+import zuul.launcher.jenkins
+import zuul.trigger.gerrit
+
+import logging.config
+
+def parse_arguments():
+ parser = argparse.ArgumentParser(description='Project gating system.')
+ parser.add_argument('-c', dest='config',
+ help='specify the config file')
+ return parser.parse_args()
+
+def read_config(args):
+ config=ConfigParser.ConfigParser()
+ if args.config:
+ locations = [args.config]
+ else:
+ locations = ['/etc/zuul/zuul.conf',
+ '~/zuul.conf']
+ for fp in locations:
+ if os.path.exists(os.path.expanduser(fp)):
+ config.read(fp)
+ return config
+ raise Exception("Unable to locate config file in %s" % locations)
+
+def setup_logging(config):
+ if config.has_option('zuul', 'log_config'):
+ fp = os.path.expanduser(config.get('zuul', 'log_config'))
+ if not os.path.exists(fp):
+ raise Exception("Unable to read logging config file at %s" % fp)
+ logging.config.fileConfig(fp)
+ else:
+ logging.basicConfig(level=logging.DEBUG)
+
+def main(config):
+ sched = zuul.scheduler.Scheduler(config)
+
+ jenkins = zuul.launcher.jenkins.Jenkins(config, sched)
+ gerrit = zuul.trigger.gerrit.Gerrit(config, sched)
+
+ sched.setLauncher(jenkins)
+ sched.setTrigger(gerrit)
+ sched.run()
+
+if __name__ == '__main__':
+ args = parse_arguments()
+ config = read_config(args)
+ setup_logging(config)
+ main(config)