1
0
mirror of https://github.com/deadc0de6/dotdrop.git synced 2026-02-04 21:29:43 +00:00
Files
dotdrop/scripts/yaml_to_toml.py
2023-08-06 21:39:14 +02:00

62 lines
1.3 KiB
Python
Executable File

#!/usr/bin/env python3
"""
author: deadc0de6 (https://github.com/deadc0de6)
Copyright (c) 2022, deadc0de6
convert yaml config file to toml
"""
import sys
# pip3 install ruamel.yaml
from ruamel.yaml import YAML as yaml
# pip3 install tomli_w
import tomli_w
def yaml_load(path):
"""load from yaml"""
with open(path, 'r', encoding='utf8') as file:
cont = yaml()
cont.typ = 'rt'
content = cont.load(file)
return content
def replace_none(content):
"""replace any occurence of None with empty string"""
new = {}
for k in content:
if content[k] is None:
if k == 'dotfiles':
continue
if k == 'profiles':
continue
new[k] = ""
continue
if isinstance(content[k], dict):
new[k] = replace_none(content[k])
continue
new[k] = content[k]
return new
def toml_dump(content):
"""dump toml to stdout"""
return tomli_w.dumps(content)
def main():
"""entry point"""
if len(sys.argv) < 2:
print(f"usage: {sys.argv[0]} <yaml-config-path>")
sys.exit(1)
data = yaml_load(sys.argv[1])
data = replace_none(data)
out = toml_dump(data)
print(out)
if __name__ == '__main__':
main()