Mercurial > hgrepos > Python > apps > py-cutils
diff cutils/treesum.py @ 219:19eaba51c632
Refactored the printing of FLAGS: print flags always and explicitely print symlink behaviour and encoding configuration
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Sat, 25 Jan 2025 13:49:12 +0100 |
| parents | dee891ed2307 |
| children | 8db78850d800 |
line wrap: on
line diff
--- a/cutils/treesum.py Sat Jan 25 09:56:19 2025 +0100 +++ b/cutils/treesum.py Sat Jan 25 13:49:12 2025 +0100 @@ -515,22 +515,23 @@ flags.append("with-metadata-mode") if self._with_metadata_mtime: flags.append("with-metadata-mtime") - if self._follow_symlinks.command_line: - flags.append("follow-symlinks-commandline") - if self._follow_symlinks.directory: - flags.append("follow-symlinks-directory") - if self._follow_symlinks.file: - flags.append("follow-symlinks-file") + flags.append("follow-symlinks-commandline" + if self._follow_symlinks.command_line + else "no-follow-symlinks-commandline") + flags.append("follow-symlinks-directory" + if self._follow_symlinks.directory + else "no-follow-symlinks-directory") + flags.append("follow-symlinks-file" + if self._follow_symlinks.file + else "no-follow-symlinks-file") if self._size_only: flags.append("size-only") - if self._utf8_mode: - flags.append("utf8-mode") + flags.append("utf8-encoding" if self._utf8_mode else "fs-encoding") if self._print_size: flags.append("print-size") - if flags: - flags.sort() - self._outfp.write( - format_bsd_line("FLAGS", ",".join(flags), None, False)) + flags.sort() + self._outfp.write( + format_bsd_line("FLAGS", ",".join(flags), None, False)) if self._minimal is None: # Write execution timestamps in POSIX epoch and ISO format @@ -865,6 +866,10 @@ "SIZE", None, opath, False, dir_size)) else: if dir_tainted: + # + # IMPORTANT: Print errors BEFORE the associated digest line. + # Otherwise the "info" command has a problem. + # self._outfp.write(format_bsd_line( b"ERROR", None, b"directory is tainted", False, None)) logging.error("Directory has filename problems: %r", opath) @@ -1240,6 +1245,7 @@ with reader: root = generator = flags = fsencoding = algorithm = digest \ = size = None + errors = set() comments = [] in_block = False block_no = 0 @@ -1261,6 +1267,8 @@ root = record[1] elif record[0] == "COMMENT": comments.append(record[1]) + elif record[0] == "ERROR": + errors.add(record[1]) elif record[0] in ("TIMESTAMP", "ISOTIMESTAMP"): pass elif record[0] == "CRC32": @@ -1283,22 +1291,25 @@ print_block_data( block_no, root, generator, fsencoding, flags, comments, - algorithm, digest, size) - root = flags = algorithm = digest = size = None + errors, algorithm, digest, size) + root = generator = flags = fsencoding = algorithm \ + = digest = size = None + errors = set() + comments = [] in_block = False if print_only_last_block: if not in_block: if digest is not None or size is not None: print_block_data( block_no, - root, generator, fsencoding, flags, comments, + root, generator, fsencoding, flags, comments, errors, algorithm, digest, size) else: logging.warning("missing block end") def print_block_data(block_no, tag, generator, fsencoding, flags, comments, - algorithm, digest, size): + errors, algorithm, digest, size): digeststr = util.n(binascii.hexlify(digest)) if digest else "<no digest>" sizestr = str(size) if size is not None else "<no size>" print("BLOCK No %d:" % (block_no,)) @@ -1312,6 +1323,7 @@ if algorithm != "SIZE": print(" Digest:", digeststr) print(" Size:", sizestr) + print(" Errors:", errors if errors else "<none>") if __name__ == "__main__":
