#!/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:
    if os.path.exists('/tmp/wader.err'):
        sh("rm -f /tmp/wader.err")

    tap_path = os.path.join(DATA_DIR, 'core-tap.py')
    sh("/usr/bin/twistd --nodaemon --python=%s --logfile=%s "
       "--pidfile=%s --reactor=glib2 2>/tmp/wader.err" % (tap_path, LOG_PATH, PID_PATH))

