Check if a script requirement is available before install (#20517)
* Check if a script requirement is available before install * PackageLoadable * hound * req
This commit is contained in:
parent
f3c9327ccf
commit
90d3f517d8
2 changed files with 16 additions and 9 deletions
|
@ -9,7 +9,8 @@ from typing import List
|
||||||
|
|
||||||
from homeassistant.bootstrap import async_mount_local_lib_path
|
from homeassistant.bootstrap import async_mount_local_lib_path
|
||||||
from homeassistant.config import get_default_config_dir
|
from homeassistant.config import get_default_config_dir
|
||||||
from homeassistant import requirements
|
from homeassistant.core import HomeAssistant
|
||||||
|
from homeassistant.requirements import pip_kwargs, PackageLoadable
|
||||||
from homeassistant.util.package import install_package, is_virtual_env
|
from homeassistant.util.package import install_package, is_virtual_env
|
||||||
|
|
||||||
|
|
||||||
|
@ -39,16 +40,25 @@ def run(args: List) -> int:
|
||||||
|
|
||||||
config_dir = extract_config_dir()
|
config_dir = extract_config_dir()
|
||||||
|
|
||||||
if not is_virtual_env():
|
loop = asyncio.get_event_loop()
|
||||||
asyncio.get_event_loop().run_until_complete(
|
|
||||||
async_mount_local_lib_path(config_dir))
|
|
||||||
|
|
||||||
pip_kwargs = requirements.pip_kwargs(config_dir)
|
if not is_virtual_env():
|
||||||
|
loop.run_until_complete(async_mount_local_lib_path(config_dir))
|
||||||
|
|
||||||
|
_pip_kwargs = pip_kwargs(config_dir)
|
||||||
|
|
||||||
logging.basicConfig(stream=sys.stdout, level=logging.INFO)
|
logging.basicConfig(stream=sys.stdout, level=logging.INFO)
|
||||||
|
|
||||||
|
hass = HomeAssistant(loop)
|
||||||
|
pkgload = PackageLoadable(hass)
|
||||||
for req in getattr(script, 'REQUIREMENTS', []):
|
for req in getattr(script, 'REQUIREMENTS', []):
|
||||||
returncode = install_package(req, **pip_kwargs)
|
try:
|
||||||
|
loop.run_until_complete(pkgload.loadable(req))
|
||||||
|
continue
|
||||||
|
except ImportError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
returncode = install_package(req, **_pip_kwargs)
|
||||||
|
|
||||||
if not returncode:
|
if not returncode:
|
||||||
print('Aborting script, could not install dependency', req)
|
print('Aborting script, could not install dependency', req)
|
||||||
|
|
|
@ -5,7 +5,6 @@ import logging
|
||||||
import os
|
import os
|
||||||
from collections import OrderedDict, namedtuple
|
from collections import OrderedDict, namedtuple
|
||||||
from glob import glob
|
from glob import glob
|
||||||
from platform import system
|
|
||||||
from typing import Dict, List, Sequence
|
from typing import Dict, List, Sequence
|
||||||
from unittest.mock import patch
|
from unittest.mock import patch
|
||||||
|
|
||||||
|
@ -22,8 +21,6 @@ from homeassistant.util import yaml
|
||||||
from homeassistant.exceptions import HomeAssistantError
|
from homeassistant.exceptions import HomeAssistantError
|
||||||
|
|
||||||
REQUIREMENTS = ('colorlog==4.0.2',)
|
REQUIREMENTS = ('colorlog==4.0.2',)
|
||||||
if system() == 'Windows': # Ensure colorama installed for colorlog on Windows
|
|
||||||
REQUIREMENTS += ('colorama<=1',)
|
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
# pylint: disable=protected-access
|
# pylint: disable=protected-access
|
||||||
|
|
Loading…
Add table
Reference in a new issue