summary refs log tree commit diff
diff options
context:
space:
mode:
authorMark Haines <mark.haines@matrix.org>2014-11-13 14:39:11 +0000
committerMark Haines <mark.haines@matrix.org>2014-11-13 14:39:30 +0000
commite7c6d2c9d96124ce50940664bece4367dba0c972 (patch)
treea8c75449d721a64af12b2723dc65cd6d1dbbef0e
parentMerge with Matthew's killing of ng-animate (diff)
downloadsynapse-e7c6d2c9d96124ce50940664bece4367dba0c972.tar.xz
SYN-138: Rewrite synctl in python and include it in the python distribution
-rwxr-xr-xsetup.py1
-rwxr-xr-xsynapse/app/synctl.py66
-rwxr-xr-xsynctl35
3 files changed, 67 insertions, 35 deletions
diff --git a/setup.py b/setup.py
index f5976cd762..7f46ce990f 100755
--- a/setup.py
+++ b/setup.py
@@ -55,6 +55,7 @@ setup(
     long_description=read("README.rst"),
     entry_points="""
     [console_scripts]
+    synctl=synapse.app.synctl:main
     synapse-homeserver=synapse.app.homeserver:run
     """
 )
diff --git a/synapse/app/synctl.py b/synapse/app/synctl.py
new file mode 100755
index 0000000000..e85073b06b
--- /dev/null
+++ b/synapse/app/synctl.py
@@ -0,0 +1,66 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# Copyright 2014 OpenMarket Ltd
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+import sys
+import os
+import subprocess
+import signal
+
+SYNAPSE = ["python", "-m", "synapse.app.homeserver"]
+
+CONFIGFILE="homeserver.yaml"
+PIDFILE="homeserver.pid"
+
+GREEN="\x1b[1;32m"
+NORMAL="\x1b[m"
+
+def start():
+    if not os.path.exists(CONFIGFILE):
+        sys.stderr.write(
+            "No config file found\n"
+            "To generate a config file, run '%s -c %s --generate-config"
+            " --server-name=<server name>'\n" % (
+                " ".join(SYNAPSE), CONFIGFILE
+            )
+        )
+        sys.exit(1)
+    print "Starting ...",
+    args = SYNAPSE
+    args.extend(["--daemonize", "-c", CONFIGFILE, "--pid-file", PIDFILE])
+    subprocess.check_call(args)
+    print GREEN + "started" + NORMAL
+
+def stop():
+    if os.path.exists(PIDFILE):
+        pid = int(open(PIDFILE).read())
+        os.kill(pid, signal.SIGTERM)
+        print GREEN + "stopped" + NORMAL
+
+def main():
+    action = sys.argv[1] if sys.argv[1:] else "usage"
+    if action == "start":
+        start()
+    elif action == "stop":
+        stop()
+    elif action == "restart":
+        start()
+        stop()
+    else:
+        sys.stderr.write("Usage: %s [start|stop|restart]\n" % (sys.argv[0],))
+        sys.exit(1)
+
+if __name__=='__main__':
+    main()
diff --git a/synctl b/synctl
deleted file mode 100755
index c227a9e1e4..0000000000
--- a/synctl
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/bash
-
-SYNAPSE="python -m synapse.app.homeserver"
-
-CONFIGFILE="homeserver.yaml"
-PIDFILE="homeserver.pid"
-
-GREEN=$'\e[1;32m'
-NORMAL=$'\e[m'
-
-set -e
-
-case "$1" in
-  start)
-    if [ ! -f "$CONFIGFILE" ]; then
-      echo "No config file found"
-      echo "To generate a config file, run '$SYNAPSE -c $CONFIGFILE --generate-config --server-name=<server name>'"
-      exit 1
-    fi
-
-    echo -n "Starting ..."
-    $SYNAPSE --daemonize -c "$CONFIGFILE" --pid-file "$PIDFILE"
-    echo "${GREEN}started${NORMAL}"
-    ;;
-  stop)
-    echo -n "Stopping ..."
-    test -f $PIDFILE && kill `cat $PIDFILE` && echo "${GREEN}stopped${NORMAL}"
-    ;;
-  restart)
-    $0 stop && $0 start
-    ;;
-  *)
-    echo "Usage: $0 [start|stop|restart]" >&2
-    exit 1
-esac