#!/usr/bin/python3
# -*- coding: utf-8 -*- 


# zm_database_init version 3.0.2
#
# Author: Dirk Hartmann
# this script is under the same license as the package itself.
#
# Please submit bugfixes or comments to monex@liquid-co.de

import sys
import argparse

from zm_dbinit.userprompt import UserPrompt
from zm_dbinit.configuration import *
from zm_dbinit.databaseinit import DatabaseInit  
from zm_dbinit.zm_config_reader import ZmConfigError

VERSION = "3.2.3"
 
def main():
  parser = argparse.ArgumentParser(description = "Handles Database installation and update for ZoneMinder Installations (Version " + VERSION + ")")
  parser.add_argument("-m", "--mysql_host", dest = "mysql_host", default = "localhost", metavar = "MYSQL_HOST",
                      help="Specify a different MYSQL_HOST (default: localhost)")
  parser.add_argument("-f", "--config-file", dest = "config_file", default = "/etc/zoneminder/zm_database_init.conf", 
                      metavar = "FILE",
                      help="Specify a different config FILE (default: /etc/zoneminder/zm_database_init.conf)")
  parser.add_argument("--non-interactive", dest = "non_interactive", 
                      action = "store_true",
                      help = "Run in non interactive mode for upgrades only (default: false)")

  args = parser.parse_args()
  prompt = UserPrompt(args.non_interactive)
  
  try:
    
    with Configuration(args.config_file) as config:
      config.setMysqlHost(args.mysql_host)
      
    init = DatabaseInit(prompt, config)
    init.initializeDatabase()
  
  except ZmConfigError as e:
    print("Error in ZoneMinder configuration file: ", e)
    sys.exit(1)
  
  except configparser.Error as e:
    print("Error in configuration file:", e)
    sys.exit(2)
  
  except KeyboardInterrupt:
    print("Interrupted exiting")
    sys.exit(0)
  
  except Exception as e:
    print("Error: ", e)
    sys.exit(3)
  
if __name__ == "__main__":
  main()
