summary refs log blame commit diff
path: root/pkgs/build-support/rust/cargo-vendor-normalise.py
blob: 19463696856418cf2257016bd13ce667ba5a15e9 (plain) (tree)































                                                                                   
#!/usr/bin/env python

import toml
import sys

def escape(s):
    return '"'+s.replace('"', r'\"').replace("\n", r"\n").replace("\\", "\\\\")+'"'

data = toml.load(sys.stdin)

assert list(data.keys()) == [ "source" ]

# this value is non deterministic
data["source"]["vendored-sources"]["directory"] = "@vendor@"

result = ""
inner = data["source"]
for source in sorted(inner.keys()):
    result += '[source.{}]\n'.format(escape(source))
    if source == "vendored-sources":
        result += '"directory" = "@vendor@"\n'
    else:
        for key in sorted(inner[source].keys()):
            result += '{} = {}\n'.format(escape(key), escape(inner[source][key]))
    result += "\n"

real = toml.loads(result)
assert real == data, "output = {} while input = {}".format(real, data)

print(result)