mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-10-12 13:19:29 +00:00

* Refactory code / object handling * Next step * fix lint * Step 2 * Cleanup API code * cleanup addons code * cleanup data handling * Cleanup addons data handling * Cleanup docker api * clean docker api p2 * next cleanup round * cleanup start on snapshots * update format strings * fix setup * fix lint * fix lint * fix lint * fix tox * Fix wrong import of datetime module * Fix bug with attributes * fix extraction * Update core * Update logs * Expand scheduler * add support for time interval objects * next updates on tasks * Fix some things * Cleanup code / supervisor * fix lint * Fix some code styles * rename stuff * cleanup api call reload * fix lock replacment * fix lint * fix lint * fix bug * fix wrong config links * fix bugs * fix bug * Update version on startup * Fix some bugs * fix bug * Fix snapshot * Add wait boot options * fix lint * fix default config * fix snapshot * fix snapshot * load snapshots on startup * add log message at the end * Some cleanups * fix bug * add logger * add logger for supervisor update * Add more logger
58 lines
1.4 KiB
Python
58 lines
1.4 KiB
Python
"""Main file for HassIO."""
|
|
import asyncio
|
|
from concurrent.futures import ThreadPoolExecutor
|
|
import logging
|
|
import sys
|
|
|
|
import hassio.bootstrap as bootstrap
|
|
import hassio.core as core
|
|
|
|
_LOGGER = logging.getLogger(__name__)
|
|
|
|
|
|
def attempt_use_uvloop():
|
|
"""Attempt to use uvloop."""
|
|
try:
|
|
import uvloop
|
|
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())
|
|
except ImportError:
|
|
pass
|
|
|
|
|
|
# pylint: disable=invalid-name
|
|
if __name__ == "__main__":
|
|
bootstrap.initialize_logging()
|
|
attempt_use_uvloop()
|
|
loop = asyncio.get_event_loop()
|
|
|
|
if not bootstrap.check_environment():
|
|
sys.exit(1)
|
|
|
|
# init executor pool
|
|
executor = ThreadPoolExecutor(thread_name_prefix="SyncWorker")
|
|
loop.set_default_executor(executor)
|
|
|
|
_LOGGER.info("Initialize Hassio setup")
|
|
coresys = bootstrap.initialize_coresys(loop)
|
|
hassio = core.HassIO(coresys)
|
|
|
|
bootstrap.migrate_system_env(coresys)
|
|
|
|
_LOGGER.info("Setup HassIO")
|
|
loop.run_until_complete(hassio.setup())
|
|
|
|
loop.call_soon_threadsafe(loop.create_task, hassio.start())
|
|
loop.call_soon_threadsafe(bootstrap.reg_signal, loop)
|
|
|
|
try:
|
|
_LOGGER.info("Run HassIO")
|
|
loop.run_forever()
|
|
finally:
|
|
_LOGGER.info("Stopping HassIO")
|
|
loop.run_until_complete(hassio.stop())
|
|
executor.shutdown(wait=False)
|
|
loop.close()
|
|
|
|
_LOGGER.info("Close Hassio")
|
|
sys.exit(0)
|