[core] Add 'packages' to the config (#5140)
* Initial * Merge dicts and lists * feedback * Move to homeassistant * feedback * increase_coverage * kick_the_hound
This commit is contained in:
parent
d58b901a78
commit
9f765836f8
6 changed files with 288 additions and 4 deletions
59
script/inspect_schemas.py
Executable file
59
script/inspect_schemas.py
Executable file
|
@ -0,0 +1,59 @@
|
|||
#!/usr/bin/env python3
|
||||
"""Inspect all component SCHEMAS."""
|
||||
import os
|
||||
import importlib
|
||||
import pkgutil
|
||||
|
||||
from homeassistant.config import _identify_config_schema
|
||||
from homeassistant.scripts.check_config import color
|
||||
|
||||
|
||||
def explore_module(package):
|
||||
"""Explore the modules."""
|
||||
module = importlib.import_module(package)
|
||||
if not hasattr(module, '__path__'):
|
||||
return []
|
||||
for _, name, _ in pkgutil.iter_modules(module.__path__, package + '.'):
|
||||
yield name
|
||||
|
||||
|
||||
def main():
|
||||
"""Main section of the script."""
|
||||
if not os.path.isfile('requirements_all.txt'):
|
||||
print('Run this from HA root dir')
|
||||
return
|
||||
|
||||
msg = {}
|
||||
|
||||
def add_msg(key, item):
|
||||
"""Add a message."""
|
||||
if key not in msg:
|
||||
msg[key] = []
|
||||
msg[key].append(item)
|
||||
|
||||
for package in explore_module('homeassistant.components'):
|
||||
module = importlib.import_module(package)
|
||||
module_name = getattr(module, 'DOMAIN', module.__name__)
|
||||
|
||||
if hasattr(module, 'PLATFORM_SCHEMA'):
|
||||
if hasattr(module, 'CONFIG_SCHEMA'):
|
||||
add_msg('WARNING', "Module {} contains PLATFORM and CONFIG "
|
||||
"schemas".format(module_name))
|
||||
add_msg('PLATFORM SCHEMA', module_name)
|
||||
continue
|
||||
|
||||
if not hasattr(module, 'CONFIG_SCHEMA'):
|
||||
add_msg('NO SCHEMA', module_name)
|
||||
continue
|
||||
|
||||
schema_type, schema = _identify_config_schema(module)
|
||||
|
||||
add_msg("CONFIG_SCHEMA " + schema_type, module_name + ' ' +
|
||||
color('cyan', str(schema)[:60]))
|
||||
|
||||
for key in sorted(msg):
|
||||
print("\n{}\n - {}".format(key, '\n - '.join(msg[key])))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
Loading…
Add table
Add a link
Reference in a new issue