Files

26 lines
1.2 KiB
Python
Raw Permalink Normal View History

"""Explicit one-time migration; runtime never reads the monitor configuration."""
import argparse
import configparser
from pathlib import Path
from settings import SCHEMA,load,validated,check,save
def migrate(source):
c=configparser.ConfigParser()
if not c.read(source):raise ValueError('monitor config missing')
result={s:{k:v['default'] for k,v in spec.items()} for s,spec in SCHEMA.items()}
for section,old in (('fan','fan'),('rgb','led')):
if c.has_section(old):
values={k:v for k,v in c.items(old) if k in SCHEMA[section]}
result[section].update(validated({section:values})[section])
for old,key in (('oled_refresh_interval','refresh_seconds'),('page_interval','page_seconds')):
if c.has_option('timing',old):result['oled'].update(validated({'oled':{key:c.get('timing',old)}})['oled'])
check(result)
return result
if __name__=='__main__':
p=argparse.ArgumentParser();p.add_argument('source');p.add_argument('--check',action='store_true');p.add_argument('--output');a=p.parse_args()
result=migrate(a.source)
if a.output:save(a.output,result)
else:print('migration valid; no files changed')