#!/usr/bin/env python

import os
from optparse import OptionParser
import sys

from wader.common.consts import (APP_VERSION, LOG_PATH, DATA_DIR, PID_PATH,
                                 BASE_DIR)

from twisted.python.release import sh


def stop_core():
    if os.path.exists(PID_PATH):
        sh("kill -9 `cat %s`" % PID_PATH)


parser = OptionParser()
parser.add_option ("-v", "--version", action="store_true",
                   dest="show_version", default=False,
                   help="Show version and exit")
parser.add_option ("-r", "--restart", action="store_true",
                   dest="should_restart", default=False,
                   help="Restart wader-core")
parser.add_option ("-s", "--start", action="store_true",
                   dest="should_start", default=True,
                   help="Start wader-core")
parser.add_option ("-t", "--stop", action="store_true",
                   dest="should_stop", default=False,
                   help="Stop wader-core")

options, args = parser.parse_args()

if options.show_version:
    print "%s: version %s" % (os.path.basename(sys.argv[0]), APP_VERSION)
    sys.exit(0)

if options.should_stop:
    stop_core()

if options.should_restart:
    stop_core()

    sh("dbus-send --system --dest=org.freedesktop.ModemManager /org/freedesktop/ModemManager org.freedesktop.ModemManager.EnumerateDevices")

elif options.should_start:
    tap_path = os.path.join(DATA_DIR, 'core-tap.py')
    twistd_path = os.path.join(BASE_DIR, 'usr', 'bin', 'twistd')
    args = dict(twistd=twistd_path, tap=tap_path, log=LOG_PATH, pid=PID_PATH,
                rundir=BASE_DIR)
    sh("%(twistd)s --python=%(tap)s --logfile=%(log)s "
       "--pidfile=%(pid)s --rundir=%(rundir)s --reactor=glib2" % args)
