#!python

import os
import argparse
import configparser
import time

from omnik import DataLogger, RepeatedJob

def main(c, debug, every=None):
  clazz = DataLogger(c, debug)

  if every:
    # running repeatedly, every X seconds
    print(f'> running every {every} second(s). Press CTRL-C to stop.')
    rt = RepeatedJob(every, clazz.process)
    try:
      while True:
        # FIXME: add check for kill switch ... this does _not_ work
        # if 'OMNIK_KILL_SWITCH' in os.environ:
        #   print('> found kill switch: stopping all threads')
        #   rt.stop()
        #   os.sys.exit(1)
        time.sleep(0.5)
    except KeyboardInterrupt:
      print('> stopping all threads')
      rt.stop()
    
  else:
    # running only once
    clazz.process()

if __name__ == '__main__':
  home   = os.path.expanduser('~')
  parser = argparse.ArgumentParser()
  
  parser.add_argument('--config', default=os.path.join(home, '.omnik/config.ini'), help='Path to configuration file', metavar="FILE")
  parser.add_argument('--every', type=int, help='Execute every n seconds')
  parser.add_argument('-d', '--debug', action='store_true', help='Debug mode')

  args = parser.parse_args()

  if not os.path.isfile(args.config):
    print("Unable to find config at '{}'".format(args.config))
    parser.print_help()
    os.sys.exit(1)

  if args.config:
    c = configparser.ConfigParser(converters={'list': lambda x: [i.strip() for i in x.split(',')]})
    c.read([args.config], encoding='utf-8')

  main(c, args.debug, args.every)