import os
from urllib.parse import urlparse

import initdatabase
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand

try:
    import config
except ImportError:
    print('It seems like this is the first time running the server.')
    print('First let us generate a proper configuration file.')
    try:
        from generateconfig import generate_config
        generate_config()
        import config
        print('Initializing database "%s".' % config.SQLALCHEMY_DATABASE_URI)
        initdatabase.init_database()
    except Exception as e:
        print(e)
        print('An error ocurred. Please fix the errors and try again.')
        print('Deleting "config.py" file.')
        try:
            os.remove('config.py')
            os.remove('config.pyc')
        finally:
            raise SystemExit('Exiting now.')

from mhn import mhn, db

if __name__ == '__main__':
    migrate = Migrate(mhn, db)
    manager = Manager(mhn)
    manager.add_command('db', MigrateCommand)

    @manager.command
    def run():
        # Takes run parameters from configuration.
        serverurl = urlparse(config.SERVER_BASE_URL)
        mhn.run(debug=config.DEBUG, host='0.0.0.0',
                port=serverurl.port)

    @manager.command
    def runlocal():
        serverurl = urlparse(config.SERVER_BASE_URL)
        mhn.run(debug=config.DEBUG, host='0.0.0.0',
                port=serverurl.port)

    manager.run()