home-assistant-addon/script/generate.py

56 lines
1.5 KiB
Python
Raw Normal View History

2019-04-24 17:09:50 +02:00
#!/usr/bin/env python3
import argparse
import yaml
from pathlib import Path
from enum import Enum
import json
from shutil import copyfile
import sys
2019-04-24 17:09:50 +02:00
class Channel(Enum):
stable = 'stable'
beta = 'beta'
dev = 'dev'
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
with open(templ / "config.yaml", 'r') 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}']
base_image = conf.pop('base_image')
dir_ = root / conf.pop('directory')
path = dir_ / 'config.json'
2019-04-24 17:09:50 +02:00
with open(path, 'w') as f:
json.dump(conf, f, indent=2, sort_keys=True)
for file_, conf_ in copyf.items():
copyfile(templ / file_, dir_ / file_)
if channel == Channel.dev:
path = dir_ / 'build.json'
build_conf = {
'squash': False,
"build_from": {arch: base_image.format(arch=arch) for arch in conf['arch']},
"args": {}
}
with open(path, 'w') as f:
json.dump(build_conf, f, indent=2, sort_keys=True)
print(f"Wrote {path}")
2019-04-24 17:09:50 +02:00
if __name__ == '__main__':
main(sys.argv[1:])