Mercurial > hgrepos > Python > apps > py-cutils
comparison cutils/shasum.py @ 185:f04d4b1c14b3
FIX: "digest" had overwritteh the digest module
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Tue, 14 Jan 2025 11:35:18 +0100 |
| parents | ffd14e2de130 |
| children | 48430941c18c |
comparison
equal
deleted
inserted
replaced
| 184:6154b8e4ba94 | 185:f04d4b1c14b3 |
|---|---|
| 22 import re | 22 import re |
| 23 import sys | 23 import sys |
| 24 | 24 |
| 25 from . import (__version__, __revision__) | 25 from . import (__version__, __revision__) |
| 26 from . import util | 26 from . import util |
| 27 from .util import digest | 27 from .util import digest as digestmod |
| 28 | 28 |
| 29 | 29 |
| 30 def main(argv=None): | 30 def main(argv=None): |
| 31 aparser = argparse.ArgumentParser( | 31 aparser = argparse.ArgumentParser( |
| 32 description="Python implementation of shasum", | 32 description="Python implementation of shasum", |
| 175 dirnames.sort() | 175 dirnames.sort() |
| 176 dirfiles.sort() | 176 dirfiles.sort() |
| 177 for fn in dirfiles: | 177 for fn in dirfiles: |
| 178 path = os.path.join(dirpath, fn) | 178 path = os.path.join(dirpath, fn) |
| 179 out(opts.dest or sys.stdout, | 179 out(opts.dest or sys.stdout, |
| 180 digest.compute_digest_file( | 180 digestmod.compute_digest_file( |
| 181 opts.algorithm[0], path, use_mmap=opts.mmap), | 181 opts.algorithm[0], path, use_mmap=opts.mmap), |
| 182 path, | 182 path, |
| 183 opts.algorithm[1], | 183 opts.algorithm[1], |
| 184 True, | 184 True, |
| 185 opts.base64) | 185 opts.base64) |
| 191 msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY) | 191 msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY) |
| 192 source = sys.stdin | 192 source = sys.stdin |
| 193 else: | 193 else: |
| 194 source = sys.stdin.buffer | 194 source = sys.stdin.buffer |
| 195 out(sys.stdout, | 195 out(sys.stdout, |
| 196 digest.compute_digest_stream(opts.algorithm[0], source), | 196 digestmod.compute_digest_stream(opts.algorithm[0], source), |
| 197 None, | 197 None, |
| 198 opts.algorithm[1], | 198 opts.algorithm[1], |
| 199 True, | 199 True, |
| 200 opts.base64) | 200 opts.base64) |
| 201 else: | 201 else: |
| 202 for fn in opts.files: | 202 for fn in opts.files: |
| 203 out(opts.dest or sys.stdout, | 203 out(opts.dest or sys.stdout, |
| 204 digest.compute_digest_file( | 204 digestmod.compute_digest_file( |
| 205 opts.algorithm[0], fn, use_mmap=opts.mmap), | 205 opts.algorithm[0], fn, use_mmap=opts.mmap), |
| 206 fn, | 206 fn, |
| 207 opts.algorithm[1], | 207 opts.algorithm[1], |
| 208 True, | 208 True, |
| 209 opts.base64) | 209 opts.base64) |
| 265 if pl is None: | 265 if pl is None: |
| 266 exit_code = 1 | 266 exit_code = 1 |
| 267 print("-: MISSING", file=dest) | 267 print("-: MISSING", file=dest) |
| 268 else: | 268 else: |
| 269 tag, algo, cl_filename, cl_digest = pl | 269 tag, algo, cl_filename, cl_digest = pl |
| 270 computed_digest = digest.compute_digest_stream(algo, source) | 270 computed_digest = digestmod.compute_digest_stream(algo, source) |
| 271 if compare_digests_equal(computed_digest, cl_digest, algo): | 271 if compare_digests_equal(computed_digest, cl_digest, algo): |
| 272 res = "OK" | 272 res = "OK" |
| 273 else: | 273 else: |
| 274 res = "FAILED" | 274 res = "FAILED" |
| 275 exit_code = 1 | 275 exit_code = 1 |
| 281 if pl is None: | 281 if pl is None: |
| 282 print("{}: MISSING".format(fn), file=dest) | 282 print("{}: MISSING".format(fn), file=dest) |
| 283 exit_code = 1 | 283 exit_code = 1 |
| 284 else: | 284 else: |
| 285 tag, algo, cl_filename, cl_digest = pl | 285 tag, algo, cl_filename, cl_digest = pl |
| 286 computed_digest = digest.compute_digest_file( | 286 computed_digest = digestmod.compute_digest_file( |
| 287 algo, fn, use_mmap=opts.mmap) | 287 algo, fn, use_mmap=opts.mmap) |
| 288 if compare_digests_equal(computed_digest, cl_digest, algo): | 288 if compare_digests_equal(computed_digest, cl_digest, algo): |
| 289 res = "OK" | 289 res = "OK" |
| 290 else: | 290 else: |
| 291 exit_code = 1 | 291 exit_code = 1 |
| 338 tag, algo, fn, digest = parts | 338 tag, algo, fn, digest = parts |
| 339 if tag in ("SIZE", "TIMESTAMP"): | 339 if tag in ("SIZE", "TIMESTAMP"): |
| 340 assert opts.allow_distinfo | 340 assert opts.allow_distinfo |
| 341 return (None, None, tag) | 341 return (None, None, tag) |
| 342 try: | 342 try: |
| 343 d = digest.compute_digest_file(algo, fn, use_mmap=opts.mmap) | 343 d = digestmod.compute_digest_file(algo, fn, use_mmap=opts.mmap) |
| 344 if compare_digests_equal(d, digest, algo): | 344 if compare_digests_equal(d, digest, algo): |
| 345 return ("ok", fn, tag) | 345 return ("ok", fn, tag) |
| 346 else: | 346 else: |
| 347 return ("failed", fn, tag) | 347 return ("failed", fn, tag) |
| 348 except EnvironmentError: | 348 except EnvironmentError: |
