home-assistant-addon/script/generate.py

55 lines
1.5 KiB
Python
Raw Normal View History

2019-04-24 17:09:50 +02:00
#!/usr/bin/env python3
import argparse
from pathlib import Path
from enum import Enum
from shutil import copyfile
import sys
2023-06-21 13:03:42 +02:00
import os
2019-04-24 17:09:50 +02:00
2024-04-17 05:32:13 +02:00
import yaml
2019-04-24 17:09:50 +02:00
class Channel(Enum):
stable = "stable"
beta = "beta"
dev = "dev"
2019-04-24 17:09:50 +02:00
def main(args):
parser = argparse.ArgumentParser(
description="Generate ESPHome Home Assistant config.json"
)
parser.add_argument("channels", nargs="+", type=Channel, choices=list(Channel))
args = parser.parse_args(args)
2019-04-24 17:09:50 +02:00
root = Path(__file__).parent.parent
templ = root / "template"
2019-04-24 17:09:50 +02:00
2024-04-17 05:32:13 +02:00
with open(templ / "addon_config.yaml", "r", encoding="utf-8") as f:
config = yaml.safe_load(f)
2019-04-24 17:09:50 +02:00
copyf = config["copy_files"]
2019-04-24 17:09:50 +02:00
for channel in args.channels:
conf = config[f"esphome-{channel.value}"]
dir_ = root / conf.pop("directory")
2022-03-24 05:23:36 +01:00
path = dir_ / "config.yaml"
2024-04-17 05:32:13 +02:00
with open(path, "w", encoding="utf-8") as f:
yaml.dump(conf, f, indent=2, sort_keys=False, explicit_start=True)
2023-06-21 13:03:42 +02:00
for file_ in copyf:
os.makedirs(dir_ / Path(file_).parent, exist_ok=True)
if Path.exists(templ / channel.value / file_):
copyfile(templ / channel.value / file_, dir_ / file_)
else:
copyfile(templ / file_, dir_ / file_)
path = dir_ / "FILES ARE GENERATED DO NOT EDIT"
2024-04-17 05:32:13 +02:00
with open(path, "w", encoding="utf-8") as f:
2021-02-14 20:45:10 +01:00
f.write("Any edits should be made to the files in the 'template' directory")
2019-04-24 17:09:50 +02:00
if __name__ == "__main__":
main(sys.argv[1:])