From e7c6d2c9d96124ce50940664bece4367dba0c972 Mon Sep 17 00:00:00 2001 From: Mark Haines Date: Thu, 13 Nov 2014 14:39:11 +0000 Subject: [PATCH] SYN-138: Rewrite synctl in python and include it in the python distribution --- setup.py | 1 + synapse/app/synctl.py | 66 +++++++++++++++++++++++++++++++++++++++++++ synctl | 35 ----------------------- 3 files changed, 67 insertions(+), 35 deletions(-) create mode 100755 synapse/app/synctl.py delete mode 100755 synctl diff --git a/setup.py b/setup.py index f5976cd76..7f46ce990 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 000000000..e85073b06 --- /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='\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 c227a9e1e..000000000 --- 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='" - 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