Mercurial > hgrepos > Python > apps > py-cutils
changeset 128:7c646921a479
Add TIMESTAMP and ISOTIMESTAMP to the output
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Thu, 02 Jan 2025 18:23:10 +0100 |
| parents | 6a50d02fe0ca |
| children | bdd8ea43074b |
| files | cutils/treesum.py |
| diffstat | 1 files changed, 19 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/cutils/treesum.py Thu Jan 02 17:46:50 2025 +0100 +++ b/cutils/treesum.py Thu Jan 02 18:23:10 2025 +0100 @@ -16,8 +16,10 @@ import argparse import base64 import binascii +import datetime import os import sys +import time from . import (__version__, __revision__) from . import util @@ -138,6 +140,12 @@ if flags: outfp.write(format_bsd_line("FLAGS", None, b",".join(flags), False)) + # Write execution timestamps in POSIX epoch and ISO format + ts = time.time() + outfp.write(format_bsd_line("TIMESTAMP", ts, None, False)) + ts = (datetime.datetime.utcfromtimestamp(ts)).isoformat("T") + outfp.write(format_bsd_line("ISOTIMESTAMP", ts, None, False)) + dir_digests = {} if not handle_root_logical and os.path.islink(root): @@ -193,22 +201,28 @@ dir_digests[top] = dir_dgst.digest() -def format_bsd_line(digestname, digest, filename, use_base64): +def format_bsd_line(digestname, value, filename, use_base64): ls = os.linesep if isinstance(os.linesep, bytes) \ else os.linesep.encode("utf-8") if not isinstance(digestname, bytes): digestname = digestname.encode("ascii") + if digestname == b"TIMESTAMP": + return b"TIMESTAMP = %d%s" % (value, ls) + if digestname == b"ISOTIMESTAMP": + if not isinstance(value, bytes): + value = value.encode("ascii") + return b"ISOTIMESTAMP = %s%s" % (value, ls) if not isinstance(filename, bytes): filename = util.fsencode(filename) - if digest is None: + if value is None: return b"%s (%s)%s" % (digestname, filename, ls) if use_base64: - digest = base64.b64encode(digest) + value = base64.b64encode(value) else: - digest = binascii.hexlify(digest) + value = binascii.hexlify(value) if filename != b"/./@": filename = util.normalize_filename(filename, True) - return b"%s (%s) = %s%s" % (digestname, filename, digest, ls) + return b"%s (%s) = %s%s" % (digestname, filename, value, ls) if __name__ == "__main__":
