Modifying the zukebox data structure
[zukebox] / zukebox_server / src / bin / zukebox-server
diff --git a/zukebox_server/src/bin/zukebox-server b/zukebox_server/src/bin/zukebox-server
new file mode 100755 (executable)
index 0000000..8acfd5f
--- /dev/null
@@ -0,0 +1,73 @@
+#!/usr/bin/env python
+
+import os
+import socket
+from brisa.core import config
+from brisa.core import log
+from brisa.core.system import daemonize
+from brisa.utils import options
+
+import zukebox_server
+from zukebox_server.system import linux
+from zukebox_server.server.zukebox_server import ZukeBoxServer
+
+pjoin = os.path.join
+pexists = os.path.exists
+
+home_path = os.path.expanduser("~")
+zb_base_path = pjoin(home_path, ".zukebox")
+zb_database_path = pjoin(zb_base_path, "audio_library.db")
+zb_module_path = zukebox_server.__path__[0]
+zb_plugins_path = pjoin(zb_module_path, "plugins")
+
+plugin_section = "zukebox_server_plugin-audio-library"
+
+def config_dot_zb():
+    version = pjoin(zb_base_path, "version")
+    version_str = "0.1"
+
+    def init_dot_zb():
+        os.makedirs(zb_base_path, 0700)
+        open(version, "w").write(version_str)
+
+    if not pexists(zb_base_path):
+        init_dot_zb()
+        return
+
+def setup_zukebox():
+    # ZBox Server
+    config.manager.set_parameter("zukebox_server", "name", "ZukeBox Server")
+    config.manager.set_parameter("zukebox_server", "owner", "zukebox-server")
+    config.manager.set_parameter("zukebox_server", "home", zb_module_path)
+    config.manager.set_parameter("zukebox_server", "plugins", zb_plugins_path)
+
+    # ZBox Plugins
+    config.manager.set_parameter(plugin_section, "owner",
+            "zukebox_server_plugin-audio_library")
+    config.manager.set_parameter(plugin_section, "database_location",
+            zb_database_path)
+    config.manager.set_parameter(plugin_section, "enable", True)
+
+    sp = linux.SystemProperties()
+    audio_folder = sp.DEFAULT_DIR_AUDIO
+
+    config.manager.set_parameter(plugin_section, "audio_folder", audio_folder)
+    config.manager.save()
+
+
+def init_server():
+    log.info("ZukeBox Server starting....")
+    listen_url, daemon = options.parse_args("ZukeBox Server")
+    if daemon:
+        daemonize()
+    server_name = config.get_parameter("zukebox_server", "name")
+    zb_server = ZukeBoxServer(server_name, listen_url)
+    zb_server.start()
+
+def main():
+    config_dot_zb()
+    setup_zukebox()
+    init_server()
+
+if __name__ == '__main__':
+    main()