diff options
author | Jörg Thalheim <joerg@thalheim.io> | 2018-09-11 21:49:16 +0100 |
---|---|---|
committer | Symphorien Gibol <symphorien+git@xlumurb.eu> | 2018-09-11 23:44:14 +0200 |
commit | 7bfa20198afce7830ff2daccb4400f03c9f40e0c (patch) | |
tree | 6a1c7cb5e77afe44d55c5f9c67687bb2a1978b5c /pkgs/build-support/rust | |
parent | f20b229aa19e92914aba7fe990201be730c07a10 (diff) | |
download | nixpkgs-7bfa20198afce7830ff2daccb4400f03c9f40e0c.tar nixpkgs-7bfa20198afce7830ff2daccb4400f03c9f40e0c.tar.gz nixpkgs-7bfa20198afce7830ff2daccb4400f03c9f40e0c.tar.bz2 nixpkgs-7bfa20198afce7830ff2daccb4400f03c9f40e0c.tar.lz nixpkgs-7bfa20198afce7830ff2daccb4400f03c9f40e0c.tar.xz nixpkgs-7bfa20198afce7830ff2daccb4400f03c9f40e0c.tar.zst nixpkgs-7bfa20198afce7830ff2daccb4400f03c9f40e0c.zip |
fetchcargo: add type checking to cargo-vendor-normalise.py
Diffstat (limited to 'pkgs/build-support/rust')
-rwxr-xr-x | pkgs/build-support/rust/cargo-vendor-normalise.py | 49 |
1 files changed, 29 insertions, 20 deletions
diff --git a/pkgs/build-support/rust/cargo-vendor-normalise.py b/pkgs/build-support/rust/cargo-vendor-normalise.py index 19463696856..2d7a1895718 100755 --- a/pkgs/build-support/rust/cargo-vendor-normalise.py +++ b/pkgs/build-support/rust/cargo-vendor-normalise.py @@ -1,32 +1,41 @@ #!/usr/bin/env python -import toml import sys -def escape(s): - return '"'+s.replace('"', r'\"').replace("\n", r"\n").replace("\\", "\\\\")+'"' +import toml + + +def quote(s: str) -> str: + escaped = s.replace('"', r"\"").replace("\n", r"\n").replace("\\", "\\\\") + return '"{}"'.format(escaped) + -data = toml.load(sys.stdin) +def main() -> None: + data = toml.load(sys.stdin) -assert list(data.keys()) == [ "source" ] + assert list(data.keys()) == ["source"] -# this value is non deterministic -data["source"]["vendored-sources"]["directory"] = "@vendor@" + # 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" + 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("") -real = toml.loads(result) -assert real == data, "output = {} while input = {}".format(real, data) + result = "\n".join(lines) + real = toml.loads(result) + assert real == data, "output = {} while input = {}".format(real, data) -print(result) + print(result) +if __name__ == "__main__": + main() |