42 lines
1023 B
Python
Executable File
42 lines
1023 B
Python
Executable File
#!/usr/bin/env python
|
|
|
|
import sys
|
|
|
|
import toml
|
|
|
|
|
|
def quote(s: str) -> str:
|
|
escaped = s.replace('"', r"\"").replace("\n", r"\n").replace("\\", "\\\\")
|
|
return '"{}"'.format(escaped)
|
|
|
|
|
|
def main() -> None:
|
|
data = toml.load(sys.stdin)
|
|
|
|
assert list(data.keys()) == ["source"]
|
|
|
|
# this value is non deterministic
|
|
data["source"]["vendored-sources"]["directory"] = "@vendor@"
|
|
|
|
lines = []
|
|
inner = data["source"]
|
|
for source, attrs in sorted(inner.items()):
|
|
lines.append("[source.{}]".format(quote(source)))
|
|
if source == "vendored-sources":
|
|
lines.append('"directory" = "@vendor@"\n')
|
|
else:
|
|
for key, value in sorted(attrs.items()):
|
|
attr = "{} = {}".format(quote(key), quote(value))
|
|
lines.append(attr)
|
|
lines.append("")
|
|
|
|
result = "\n".join(lines)
|
|
real = toml.loads(result)
|
|
assert real == data, "output = {} while input = {}".format(real, data)
|
|
|
|
print(result)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|