#!/opt/cycle/jetpack/system/python/bin/python3

import logging
import logging.handlers
import os
import sys
import time
import jetpack.util

PID_FILE = '/var/run/jetpackd.pid'
LOG_FILE = os.path.join(jetpack.util.jetpack_home(), "logs", "jetpackd.log")

# Set up logging that can appropriately detach from the main process with the daemon
logger = logging.getLogger()
logger.setLevel(logging.INFO)
logger.propagate = False
fh = jetpack.util.DirOwnedRotatingFileHandler(LOG_FILE, maxBytes=1024 * 1024 * 50, backupCount=5)
fh.setLevel(logging.INFO)
fh.setFormatter(logging.Formatter('%(asctime)s %(levelname)-8s %(message)s'))
logger.addHandler(fh)
keep_fds = [fh.stream.fileno()]
    
if __name__ == "__main__":

    if jetpack.util.is_linux():
        import jetpack.service
        from daemonize import Daemonize

        # Simple loop running the main thread
        def loop():
            jetpack.service.initialize()
            while True:
                jetpack.service.main()

        daemon = Daemonize(app="jetpackd", pid=PID_FILE, action=loop, keep_fds=keep_fds)
        daemon.start()

    else:
        import servicemanager
        from jetpack.winservice import JetpackService

        if len(sys.argv) == 1:
            servicemanager.Initialize()
            servicemanager.PrepareToHostSingle(JetpackService)
            servicemanager.StartServiceCtrlDispatcher()
        else:
            JetpackService.parse_command_line()
