mirror of
https://github.com/esphome/esphome.git
synced 2024-12-24 06:24:53 +01:00
commit
a75da54455
4 changed files with 25 additions and 16 deletions
|
@ -4,7 +4,7 @@ import requests
|
||||||
import esphome.codegen as cg
|
import esphome.codegen as cg
|
||||||
import esphome.config_validation as cv
|
import esphome.config_validation as cv
|
||||||
from esphome.components.packages import validate_source_shorthand
|
from esphome.components.packages import validate_source_shorthand
|
||||||
from esphome.const import CONF_WIFI
|
from esphome.const import CONF_WIFI, CONF_REF
|
||||||
from esphome.wizard import wizard_file
|
from esphome.wizard import wizard_file
|
||||||
from esphome.yaml_util import dump
|
from esphome.yaml_util import dump
|
||||||
from esphome import git
|
from esphome import git
|
||||||
|
@ -21,19 +21,32 @@ CODEOWNERS = ["@esphome/core"]
|
||||||
def validate_import_url(value):
|
def validate_import_url(value):
|
||||||
value = cv.string_strict(value)
|
value = cv.string_strict(value)
|
||||||
value = cv.Length(max=255)(value)
|
value = cv.Length(max=255)(value)
|
||||||
# ignore result, only check if it's a valid shorthand
|
|
||||||
validate_source_shorthand(value)
|
validate_source_shorthand(value)
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
|
||||||
|
def validate_full_url(config):
|
||||||
|
if not config[CONF_IMPORT_FULL_CONFIG]:
|
||||||
|
return config
|
||||||
|
source = validate_source_shorthand(config[CONF_PACKAGE_IMPORT_URL])
|
||||||
|
if CONF_REF not in source:
|
||||||
|
raise cv.Invalid(
|
||||||
|
"Must specify a ref (branch or tag) to import from when importing full config"
|
||||||
|
)
|
||||||
|
return config
|
||||||
|
|
||||||
|
|
||||||
CONF_PACKAGE_IMPORT_URL = "package_import_url"
|
CONF_PACKAGE_IMPORT_URL = "package_import_url"
|
||||||
CONF_IMPORT_FULL_CONFIG = "import_full_config"
|
CONF_IMPORT_FULL_CONFIG = "import_full_config"
|
||||||
|
|
||||||
CONFIG_SCHEMA = cv.Schema(
|
CONFIG_SCHEMA = cv.All(
|
||||||
{
|
cv.Schema(
|
||||||
cv.Required(CONF_PACKAGE_IMPORT_URL): validate_import_url,
|
{
|
||||||
cv.Optional(CONF_IMPORT_FULL_CONFIG, default=False): cv.boolean,
|
cv.Required(CONF_PACKAGE_IMPORT_URL): validate_import_url,
|
||||||
}
|
cv.Optional(CONF_IMPORT_FULL_CONFIG, default=False): cv.boolean,
|
||||||
|
}
|
||||||
|
),
|
||||||
|
validate_full_url,
|
||||||
)
|
)
|
||||||
|
|
||||||
WIFI_CONFIG = """
|
WIFI_CONFIG = """
|
||||||
|
@ -49,7 +62,7 @@ async def to_code(config):
|
||||||
url = config[CONF_PACKAGE_IMPORT_URL]
|
url = config[CONF_PACKAGE_IMPORT_URL]
|
||||||
if config[CONF_IMPORT_FULL_CONFIG]:
|
if config[CONF_IMPORT_FULL_CONFIG]:
|
||||||
url += "?full_config"
|
url += "?full_config"
|
||||||
cg.add(dashboard_import_ns.set_package_import_url(config[CONF_PACKAGE_IMPORT_URL]))
|
cg.add(dashboard_import_ns.set_package_import_url(url))
|
||||||
|
|
||||||
|
|
||||||
def import_config(
|
def import_config(
|
||||||
|
|
|
@ -706,11 +706,7 @@ void ESPBTDevice::parse_adv_(const esp_ble_gap_cb_param_t::ble_scan_result_evt_p
|
||||||
while (offset + 2 < len) {
|
while (offset + 2 < len) {
|
||||||
const uint8_t field_length = payload[offset++]; // First byte is length of adv record
|
const uint8_t field_length = payload[offset++]; // First byte is length of adv record
|
||||||
if (field_length == 0) {
|
if (field_length == 0) {
|
||||||
if (offset < param.adv_data_len && param.scan_rsp_len > 0) { // Zero padded advertisement data
|
continue; // Possible zero padded advertisement data
|
||||||
offset = param.adv_data_len;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// first byte of adv record is adv record type
|
// first byte of adv record is adv record type
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
"""Constants used by esphome."""
|
"""Constants used by esphome."""
|
||||||
|
|
||||||
__version__ = "2022.12.1"
|
__version__ = "2022.12.2"
|
||||||
|
|
||||||
ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_"
|
ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_"
|
||||||
|
|
||||||
|
|
|
@ -129,9 +129,9 @@ class GitFile:
|
||||||
def raw_url(self) -> str:
|
def raw_url(self) -> str:
|
||||||
if self.ref is None:
|
if self.ref is None:
|
||||||
raise ValueError("URL has no ref")
|
raise ValueError("URL has no ref")
|
||||||
if self.domain == "github":
|
if self.domain == "github.com":
|
||||||
return f"https://raw.githubusercontent.com/{self.owner}/{self.repo}/{self.ref}/{self.filename}"
|
return f"https://raw.githubusercontent.com/{self.owner}/{self.repo}/{self.ref}/{self.filename}"
|
||||||
if self.domain == "gitlab":
|
if self.domain == "gitlab.com":
|
||||||
return f"https://gitlab.com/{self.owner}/{self.repo}/-/raw/{self.ref}/{self.filename}"
|
return f"https://gitlab.com/{self.owner}/{self.repo}/-/raw/{self.ref}/{self.filename}"
|
||||||
raise NotImplementedError(f"Git domain {self.domain} not supported")
|
raise NotImplementedError(f"Git domain {self.domain} not supported")
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue