import os
import sys
import signal
import time
import event_processor


class SkoolOSDaemon:
    """Constructor"""
    def __init__(self, work_dir='/tmp'):
        self.work_dir = work_dir
        self.start_time = None
        self.end_time = None
        self.log_file = None
    def __write_pid_file(self):
        try:
            dirName = "/tmp/skooloslogs"
            # Create log Directory
            os.mkdir(dirName)
        except FileExistsError:
            pass
        pid = str(os.getpid())
        file_ = open('/tmp/skoolosdaemonpid', 'w')
        file_.write(pid)
        file_.close()
    def readable_time(self, input_time):
        return time.strftime("%A, %B %d, %Y %H:%M:%S", time.localtime(input_time))
    def start(self):
        self.__write_pid_file()
        self.start_time = time.time()
        self.log_file = open('/tmp/skooloslogs/' + str(self.start_time), 'w')
        self.log_file.write("Start time: \n" + self.readable_time(self.start_time) + "\n\n")
        sys.stdout = self.log_file
        event_processor.watch_dir(self.work_dir)
    def stop(self):
        event_processor.stop_watching()
        self.end_time = time.time()
        self.log_file.write("Stop time: \n" + self.readable_time(self.end_time))
        self.log_file.write("Total work time: " + 
                            time.strftime("%H:%M:%S", time.gmtime(self.end_time - self.start_time)))




logger = None

def Main():
    def signal_handler(signum, frame):
        logger.stop()
    signal.signal(signal.SIGINT, signal_handler)
    # signal.signal(signal.SIGTERM, signal_handler)
    global logger
    logger = SkoolOSDaemon("/tmp")
    logger.start()


if __name__ == "__main__":
    Main()