Anthony Sottile | 8f61529 | 2022-01-15 19:24:05 -0500 | [diff] [blame] | 1 | from __future__ import annotations |
| 2 | |
Semyon Maryasin | ae70f7e | 2019-03-28 01:13:45 +0300 | [diff] [blame] | 3 | import argparse |
Daniël van Noord | fc88f3f | 2022-05-24 08:44:13 +0200 | [diff] [blame] | 4 | import sys |
Semyon Maryasin | ae70f7e | 2019-03-28 01:13:45 +0300 | [diff] [blame] | 5 | from typing import Sequence |
| 6 | |
Daniël van Noord | fc88f3f | 2022-05-24 08:44:13 +0200 | [diff] [blame] | 7 | if sys.version_info >= (3, 11): # pragma: >=3.11 cover |
| 8 | import tomllib |
| 9 | else: # pragma: <3.11 cover |
| 10 | import tomli as tomllib |
Semyon Maryasin | ae70f7e | 2019-03-28 01:13:45 +0300 | [diff] [blame] | 11 | |
| 12 | |
Anthony Sottile | 8f61529 | 2022-01-15 19:24:05 -0500 | [diff] [blame] | 13 | def main(argv: Sequence[str] | None = None) -> int: |
Semyon Maryasin | ae70f7e | 2019-03-28 01:13:45 +0300 | [diff] [blame] | 14 | parser = argparse.ArgumentParser() |
| 15 | parser.add_argument('filenames', nargs='*', help='Filenames to check.') |
| 16 | args = parser.parse_args(argv) |
| 17 | |
| 18 | retval = 0 |
| 19 | for filename in args.filenames: |
| 20 | try: |
Daniël van Noord | fc88f3f | 2022-05-24 08:44:13 +0200 | [diff] [blame] | 21 | with open(filename, mode='rb') as fp: |
| 22 | tomllib.load(fp) |
| 23 | except tomllib.TOMLDecodeError as exc: |
Anthony Sottile | f5c42a0 | 2020-02-05 11:10:42 -0800 | [diff] [blame] | 24 | print(f'{filename}: {exc}') |
Semyon Maryasin | ae70f7e | 2019-03-28 01:13:45 +0300 | [diff] [blame] | 25 | retval = 1 |
| 26 | return retval |
| 27 | |
| 28 | |
| 29 | if __name__ == '__main__': |
Anthony Sottile | 39ab2ed | 2021-10-23 13:23:50 -0400 | [diff] [blame] | 30 | raise SystemExit(main()) |