]> git.llucax.com Git - software/pymin.git/blobdiff - pymind
Use a nice name for exit status.
[software/pymin.git] / pymind
diff --git a/pymind b/pymind
index a04307d1920909bbd3a25cce42c0c9d8fbb5dbcf..d40c80f3d19dfd7ca3dca3edd6e68688555749ff 100755 (executable)
--- a/pymind
+++ b/pymind
@@ -1,8 +1,32 @@
 #!/usr/bin/env python
 # vim: set encoding=utf-8 et sw=4 sts=4 :
 
+import sys
 from pymin.pymindaemon import PyminDaemon
+from pymin.dispatcher import Handler
+from pymin.service import load_service, LoadError
 import config
 
-PyminDaemon(config.Root(), config.bind_addr).run()
+# exit status
+EXIT_NO_SERVICE = 1
+
+class Root(Handler):
+    pass
+
+def build_root(config):
+    # TODO check services dependencies
+    services = dict()
+    for service in config.services:
+        try:
+            s = load_service(service, config.services_dirs)
+        except LoadError, e:
+            sys.stderr.write("Can't find service called '%s'\n" % service)
+            sys.exit(EXIT_NO_SERVICE)
+        services[service] = s
+    root = Root()
+    for name, service in services.items():
+        setattr(root, name, service.get_service(config))
+    return root
+
+PyminDaemon(build_root(config), config.bind_addr).run()