Mercurial > dotfiles
comparison unixSoft/bin/patchpipe @ 523:a5a4f9e12c9f
patchpipe: py3 support
| author | Augie Fackler <raf@durin42.com> |
|---|---|
| date | Sat, 06 Aug 2022 10:41:27 -0400 |
| parents | c7a9cd793e37 |
| children |
comparison
equal
deleted
inserted
replaced
| 522:7983184eb8d8 | 523:a5a4f9e12c9f |
|---|---|
| 3 import os | 3 import os |
| 4 import subprocess | 4 import subprocess |
| 5 import sys | 5 import sys |
| 6 import tempfile | 6 import tempfile |
| 7 | 7 |
| 8 _PATCHHDR = '# HG changeset patch' | 8 _PATCHHDR = b'# HG changeset patch' |
| 9 | 9 |
| 10 _BASE64_MAGIC = 'Content-Transfer-Encoding: base64' | 10 _BASE64_MAGIC = b'Content-Transfer-Encoding: base64' |
| 11 | 11 |
| 12 | 12 |
| 13 def main(argv): | 13 def main(argv): |
| 14 tf = tempfile.NamedTemporaryFile(suffix='.diff') | 14 tf = tempfile.NamedTemporaryFile(suffix='.diff') |
| 15 d = sys.stdin.read() | 15 d = sys.stdin.buffer.read() |
| 16 if _PATCHHDR in d: | 16 if _PATCHHDR in d: |
| 17 junk, d = d.split(_PATCHHDR, 1) | 17 junk, d = d.split(_PATCHHDR, 1) |
| 18 d = _PATCHHDR + d | 18 d = _PATCHHDR + d |
| 19 elif _BASE64_MAGIC in d: | 19 elif _BASE64_MAGIC in d: |
| 20 junk, d = d.split('\n\n', 1) | 20 junk, d = d.split('\n\n', 1) |
| 21 d = d.decode('base64') | 21 d = d.decode('base64') |
| 22 tf.write(d) | 22 tf.write(d) |
| 23 tf.flush() | 23 tf.flush() |
| 24 subprocess.check_call([os.environ['EDITOR'], tf.name], | 24 subprocess.check_call([os.environ['EDITOR'], tf.name], |
| 25 stdout=sys.stderr) | 25 stdout=sys.stderr) |
| 26 sys.stdout.write(open(tf.name).read()) | 26 sys.stdout.buffer.write(open(tf.name, 'rb').read()) |
| 27 | 27 |
| 28 | 28 |
| 29 if __name__ == '__main__': | 29 if __name__ == '__main__': |
| 30 main(argv=sys.argv) | 30 main(argv=sys.argv) |
