You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.7 KiB
60 lines
1.7 KiB
"""HACS Startup constrains.""" |
|
# pylint: disable=bad-continuation |
|
import os |
|
import json |
|
|
|
from .const import CUSTOM_UPDATER_LOCATIONS, CUSTOM_UPDATER_WARNING |
|
from .helpers.misc import version_left_higher_then_right |
|
|
|
|
|
def check_constans(hacs): |
|
"""Check HACS constrains.""" |
|
if not constrain_translations(hacs): |
|
return False |
|
if not constrain_custom_updater(hacs): |
|
return False |
|
if not constrain_version(hacs): |
|
return False |
|
return True |
|
|
|
|
|
def constrain_custom_updater(hacs): |
|
"""Check if custom_updater exist.""" |
|
for location in CUSTOM_UPDATER_LOCATIONS: |
|
if os.path.exists(location.format(hacs.system.config_path)): |
|
msg = CUSTOM_UPDATER_WARNING.format( |
|
location.format(hacs.system.config_path) |
|
) |
|
hacs.logger.critical(msg) |
|
return False |
|
return True |
|
|
|
|
|
def constrain_version(hacs): |
|
"""Check if the version is valid.""" |
|
with open( |
|
f"{hacs.system.config_path}/custom_components/hacs/manifest.json", "r" |
|
) as read: |
|
manifest = json.loads(read.read()) |
|
|
|
# Check if HA is the required version. |
|
installed = hacs.system.ha_version |
|
minimum = manifest["homeassistant"] |
|
if not version_left_higher_then_right(installed, minimum): |
|
hacs.logger.critical( |
|
f"You need HA version {manifest['homeassistant']} or newer to use this integration." |
|
) |
|
return False |
|
return True |
|
|
|
|
|
def constrain_translations(hacs): |
|
"""Check if traslations exist.""" |
|
if not os.path.exists( |
|
f"{hacs.system.config_path}/custom_components/hacs/.translations" |
|
): |
|
hacs.logger.critical("You are missing the translations directory.") |
|
return False |
|
|
|
return True |
|
|
|
|