diff options
Diffstat (limited to 'nixpkgs/pkgs/build-support/docker/detjson.py')
-rw-r--r-- | nixpkgs/pkgs/build-support/docker/detjson.py | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/build-support/docker/detjson.py b/nixpkgs/pkgs/build-support/docker/detjson.py new file mode 100644 index 000000000000..fe82cbea11bb --- /dev/null +++ b/nixpkgs/pkgs/build-support/docker/detjson.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +# Deterministic layer json: https://github.com/docker/hub-feedback/issues/488 + +import sys +reload(sys) +sys.setdefaultencoding('UTF8') +import json + +# If any of the keys below are equal to a certain value +# then we can delete it because it's the default value +SAFEDELS = { + "Size": 0, + "config": { + "ExposedPorts": None, + "MacAddress": "", + "NetworkDisabled": False, + "PortSpecs": None, + "VolumeDriver": "" + } +} +SAFEDELS["container_config"] = SAFEDELS["config"] + +def makedet(j, safedels): + for k,v in safedels.items(): + if k not in j: + continue + if type(v) == dict: + makedet(j[k], v) + elif j[k] == v: + del j[k] + +def main(): + j = json.load(sys.stdin) + makedet(j, SAFEDELS) + json.dump(j, sys.stdout, sort_keys=True) + +if __name__ == '__main__': + main() |