Anthony Sottile | 8f61529 | 2022-01-15 19:24:05 -0500 | [diff] [blame] | 1 | from __future__ import annotations |
| 2 | |
Jeremiah Gowdy | d18bd5b | 2020-10-04 18:45:54 -0700 | [diff] [blame] | 3 | import argparse |
Jeremiah Gowdy | d18bd5b | 2020-10-04 18:45:54 -0700 | [diff] [blame] | 4 | from typing import Sequence |
| 5 | |
| 6 | |
Anthony Sottile | 8f61529 | 2022-01-15 19:24:05 -0500 | [diff] [blame] | 7 | def main(argv: Sequence[str] | None = None) -> int: |
Jeremiah Gowdy | d18bd5b | 2020-10-04 18:45:54 -0700 | [diff] [blame] | 8 | parser = argparse.ArgumentParser() |
| 9 | parser.add_argument('filenames', nargs='*', help='Filenames to check') |
| 10 | args = parser.parse_args(argv) |
| 11 | |
| 12 | retv = 0 |
| 13 | |
| 14 | for filename in args.filenames: |
| 15 | with open(filename, 'rb') as f_b: |
| 16 | bts = f_b.read(3) |
| 17 | |
| 18 | if bts == b'\xef\xbb\xbf': |
| 19 | with open(filename, newline='', encoding='utf-8-sig') as f: |
| 20 | contents = f.read() |
| 21 | with open(filename, 'w', newline='', encoding='utf-8') as f: |
| 22 | f.write(contents) |
| 23 | |
| 24 | print(f'{filename}: removed byte-order marker') |
| 25 | retv = 1 |
| 26 | |
| 27 | return retv |
| 28 | |
| 29 | |
| 30 | if __name__ == '__main__': |
Anthony Sottile | 39ab2ed | 2021-10-23 13:23:50 -0400 | [diff] [blame] | 31 | raise SystemExit(main()) |