@@ -29,27 +29,51 @@ jobs:
2929 import os
3030 from pathlib import Path
3131
32- configs = sorted(
33- str(path.name)
34- for path in Path(".").glob("*.yaml")
35- if path.name != "secrets.yaml"
36- )
32+ def first_friendly_name(path: Path) -> str | None:
33+ with path.open("r", encoding="utf-8", errors="ignore") as f:
34+ for raw in f:
35+ line = raw.strip()
36+ if not line or line.startswith("#"):
37+ continue
38+ if line.startswith("friendly_name:"):
39+ value = line.split(":", 1)[1].strip()
40+ if (value.startswith('"') and value.endswith('"')) or (
41+ value.startswith("'") and value.endswith("'")
42+ ):
43+ value = value[1:-1].strip()
44+ return value or None
45+ return None
46+
47+ configs = []
48+
49+ for path in sorted(Path(".").glob("*.yaml")):
50+ friendly_name = first_friendly_name(path)
51+ if not friendly_name:
52+ continue
53+
54+ configs.append(
55+ {
56+ "file": str(path),
57+ "friendly_name": friendly_name,
58+ }
59+ )
3760
3861 if not configs:
39- raise SystemExit("No ESPHome configs found in the repository root .")
62+ raise SystemExit("No ESPHome configs with 'friendly_name' found .")
4063
4164 with open(os.environ["GITHUB_OUTPUT"], "a", encoding="utf-8") as fh:
42- fh.write(f"configs={json.dumps(configs)}\n")
65+ fh.write(f"configs={json.dumps(configs)}\n")
4366 PY
4467
45- esphome-config :
46- name : Validate ${{ matrix.config }}
68+ validate :
69+ name : Validate ${{ matrix.config.friendly_name }}
4770 runs-on : ubuntu-latest
4871 needs : list-configs
4972 strategy :
5073 fail-fast : false
5174 matrix :
5275 config : ${{ fromJson(needs.list-configs.outputs.configs) }}
76+
5377 steps :
5478 - name : Check out repository
5579 uses : actions/checkout@v4
@@ -58,17 +82,18 @@ jobs:
5882 uses : actions/setup-python@v5
5983 with :
6084 python-version : " 3.13"
61- cache : pip
62- - run : pip install esphome
85+
86+ - name : Install ESPHome
87+ run : pip install esphome
6388
6489 - name : Provide stub secrets.yaml
6590 run : |
6691 cat <<'EOF' > secrets.yaml
6792 wifi_ssid: "dummy-ssid"
6893 wifi_password: "dummy-password"
69- api_key: "dummy-api-key "
94+ api_key: "ZHVtbXktYXBpLWtleTEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI= "
7095 ota_password: "dummy-ota-password"
7196 EOF
7297
7398 - name : Run esphome config
74- run : esphome config "${{ matrix.config }}"
99+ run : esphome config "${{ matrix.config.file }}"
0 commit comments