Add JSON files validation to hassfest (#29799)

pull/29809/head
Franck Nijhof 2019-12-09 22:43:38 +01:00 committed by GitHub
parent 454cc684e4
commit 38a6fffecb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 49 additions and 2 deletions

View File

@ -2,10 +2,28 @@
import pathlib
import sys
from . import codeowners, config_flow, dependencies, manifest, services, ssdp, zeroconf
from . import (
codeowners,
config_flow,
dependencies,
json,
manifest,
services,
ssdp,
zeroconf,
)
from .model import Config, Integration
PLUGINS = [codeowners, config_flow, dependencies, manifest, services, ssdp, zeroconf]
PLUGINS = [
json,
codeowners,
config_flow,
dependencies,
manifest,
services,
ssdp,
zeroconf,
]
def get_config() -> Config:

29
script/hassfest/json.py Normal file
View File

@ -0,0 +1,29 @@
"""Validate integration JSON files."""
import json
from typing import Dict
from .model import Integration
def validate_json_files(integration: Integration):
"""Validate JSON files for integration."""
for json_file in integration.path.glob("**/*.json"):
if not json_file.is_file():
continue
try:
json.loads(json_file.read_text())
except json.JSONDecodeError:
relative_path = json_file.relative_to(integration.path)
integration.add_error("json", f"Invalid JSON file {relative_path}")
return
def validate(integrations: Dict[str, Integration], config):
"""Handle JSON files inside integrations."""
for integration in integrations.values():
if not integration.manifest:
continue
validate_json_files(integration)