#!/usr/bin/env python3 """ dumprec.py - extract one record from a *.mw4, decoded. python3 dumprec.py "" [outfile] The entry name is matched case-insensitively with backslashes normalised to '/', e.g. "mechs/atlas/atlas.subsystems". With no outfile the bytes go to stdout. Pass "--list" as the entry name to print every entry name instead. """ import sys, os sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) from mw4db import read_records, norm def main(): if len(sys.argv) < 3: sys.exit(__doc__) path, want = sys.argv[1], norm(sys.argv[2]) _content, recs = read_records(path) if want == "--list": for rid, name, dlen, rlen, _blob in recs: print(f"{rid}\t{name}\t{dlen}\t{rlen}") return for _rid, name, _dlen, _rlen, blob in recs: if norm(name) == want: if len(sys.argv) > 3: open(sys.argv[3], "wb").write(blob) else: sys.stdout.buffer.write(blob) return sys.exit(f"not found: {want}") if __name__ == "__main__": main()