diff options
author | Steve Dower <steve.dower@microsoft.com> | 2018-12-07 05:09:20 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-07 05:09:20 (GMT) |
commit | 468a15aaf9206448a744fc5eab3fc21f51966aad (patch) | |
tree | 75c8f2aae7835ae7ca718ef8660a4c0899837bd3 /PC/layout/support/catalog.py | |
parent | c9566b8c454120e3d0ddb5ab970f262a6cd80077 (diff) | |
download | cpython-468a15aaf9206448a744fc5eab3fc21f51966aad.zip cpython-468a15aaf9206448a744fc5eab3fc21f51966aad.tar.gz cpython-468a15aaf9206448a744fc5eab3fc21f51966aad.tar.bz2 |
bpo-34977: Add Windows App Store package (GH-10245)
Diffstat (limited to 'PC/layout/support/catalog.py')
-rw-r--r-- | PC/layout/support/catalog.py | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/PC/layout/support/catalog.py b/PC/layout/support/catalog.py new file mode 100644 index 0000000..4312118 --- /dev/null +++ b/PC/layout/support/catalog.py @@ -0,0 +1,44 @@ +""" +File generation for catalog signing non-binary contents. +""" + +__author__ = "Steve Dower <steve.dower@python.org>" +__version__ = "3.8" + + +import sys + +__all__ = ["PYTHON_CAT_NAME", "PYTHON_CDF_NAME"] + + +def public(f): + __all__.append(f.__name__) + return f + + +PYTHON_CAT_NAME = "python.cat" +PYTHON_CDF_NAME = "python.cdf" + + +CATALOG_TEMPLATE = r"""[CatalogHeader] +Name={target.stem}.cat +ResultDir={target.parent} +PublicVersion=1 +CatalogVersion=2 +HashAlgorithms=SHA256 +PageHashes=false +EncodingType= + +[CatalogFiles] +""" + + +def can_sign(file): + return file.is_file() and file.stat().st_size + + +@public +def write_catalog(target, files): + with target.open("w", encoding="utf-8") as cat: + cat.write(CATALOG_TEMPLATE.format(target=target)) + cat.writelines("<HASH>{}={}\n".format(n, f) for n, f in files if can_sign(f)) |