#!/usr/bin/python

import datetime
import os
import stardice.daemon_servers
import siderealtechnology

if __name__ == "__main__":
    now = datetime.datetime.now()
    logdir = os.path.join(os.getenv("HOME"), "logs")
    logname = os.path.join(logdir, 
                           'sitech-server-%s.log' % now.date().isoformat())
    logsymlink = os.path.join(logdir, "sitech-server.log")
    if os.path.islink(logsymlink):
        try:
            os.unlink(logsymlink)
            os.symlink(logname, logsymlink)
        except OSError:
            pass

    import optparse 
    parser = optparse.OptionParser(usage="%prog [-l log] [-d]")
    parser.add_option('-d', '--daemon', default=False, 
                      action='store_true', 
                      help='Run as a background daemon')
    parser.add_option('--dummy', default=False, 
                      action='store_true', 
                      help='Run a fake instance instead')
    parser.add_option('-p', '--port', default=8010, 
                      action='store', type='int', 
                      help='Listen on port')
    parser.add_option('-H', '--hostname', default='localhost', 
                      action='store', 
                      help='server address')
    parser.add_option('-l', '--log-file', default=logname, 
                      action='store', 
                      help='specify a log file')
    parser.add_option('-t', '--tty', default='/dev/sitech', 
                      dest='tty', action='store', 
                      help='specify the serial port')
    (options, args) = parser.parse_args()
    
    SERVER_HOSTNAME = options.hostname
    SERVER_PORT = options.port
    
    name = 'sitech-server'
    stardice.daemon_servers.setup_logging(name, logfile=options.log_file)
         
    sitechserver = siderealtechnology.ServoII(port=options.tty)
    
    server = stardice.daemon_servers.BasicServer((SERVER_HOSTNAME, SERVER_PORT), name, sitechserver)
    
    if options.daemon:
        stardice.daemon_servers.daemonize(options, args, server)
    else:
        #pass
        server.main(options, args)
