summaryrefslogtreecommitdiff
path: root/src/leap/soledad/server/launcher.py
diff options
context:
space:
mode:
authordrebs <drebs@riseup.net>2017-11-08 16:09:03 -0200
committerdrebs <drebs@riseup.net>2017-11-14 08:05:48 -0200
commit76993d0add8c9786b29889d190c6bc46532262fd (patch)
tree6c6fba566e96a93797e76c185fc0a47a63c7851f /src/leap/soledad/server/launcher.py
parent6d26619473c01f3c855319a8d7f0cbf1e657ab30 (diff)
[pkg] add binary command for soledad-server
Diffstat (limited to 'src/leap/soledad/server/launcher.py')
-rw-r--r--src/leap/soledad/server/launcher.py72
1 files changed, 72 insertions, 0 deletions
diff --git a/src/leap/soledad/server/launcher.py b/src/leap/soledad/server/launcher.py
new file mode 100644
index 00000000..d8da7083
--- /dev/null
+++ b/src/leap/soledad/server/launcher.py
@@ -0,0 +1,72 @@
+# -*- coding: utf-8 -*-
+# launcher.py
+# Copyright (C) 2017 LEAP
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+"""
+Soledad Server launcher.
+"""
+import argparse
+import os
+import sys
+
+from twisted.scripts.twistd import run
+
+from leap.soledad import server, __version__
+
+
+STANDALONE = getattr(sys, 'frozen', False)
+
+
+def parse_args():
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--version', action='store_true',
+ help='Print the program version.')
+ return parser.parse_args()
+
+
+def here(module=None):
+ if STANDALONE:
+ # we are running in a |PyInstaller| bundle
+ return sys._MEIPASS
+ else:
+ if module:
+ return os.path.dirname(module.__file__)
+ else:
+ return os.path.dirname(__file__)
+
+
+def run_server():
+
+ # maybe print version and exit
+ args = parse_args()
+ if args.version:
+ print __version__
+ return
+
+ # launch soledad server using twistd
+ tac = os.path.join(here(server), 'server.tac')
+ args = [
+ '--nodaemon',
+ '--pidfile=',
+ '--syslog',
+ '--prefix=soledad-server',
+ '--python=%s' % tac,
+ ]
+ sys.argv[1:] = args
+ run()
+
+
+if __name__ == '__main__':
+ run_server()