|
8 | 8 | SUPPORTED = frozenset(('black', 'flake8')) |
9 | 9 |
|
10 | 10 |
|
| 11 | +_ARGUMENT_HELP_TEMPLATE = ( |
| 12 | + 'The `{}` argument to the YAML dumper. ' |
| 13 | + 'See https://yaml.readthedocs.io/en/latest/detail/' |
| 14 | + '#indentation-of-block-sequences' |
| 15 | +) |
| 16 | + |
| 17 | + |
11 | 18 | def main(argv: Sequence[str] | None = None) -> int: |
12 | 19 | parser = argparse.ArgumentParser() |
13 | | - parser.add_argument('filename', default='.pre-commit-config.yaml') |
| 20 | + parser.add_argument( |
| 21 | + 'filename', default='.pre-commit-config.yaml', |
| 22 | + help='The pre-commit config file to sync to.', |
| 23 | + ) |
| 24 | + |
| 25 | + # defaults below match pre-commit config as documented |
| 26 | + # TODO - support round-tripping |
| 27 | + parser.add_argument( |
| 28 | + '--yaml-mapping', type=int, default=4, |
| 29 | + help=_ARGUMENT_HELP_TEMPLATE.format('mapping'), |
| 30 | + ) |
| 31 | + parser.add_argument( |
| 32 | + '--yaml-sequence', type=int, default=4, |
| 33 | + help=_ARGUMENT_HELP_TEMPLATE.format('sequence'), |
| 34 | + ) |
| 35 | + parser.add_argument( |
| 36 | + '--yaml-offset', type=int, default=0, |
| 37 | + help=_ARGUMENT_HELP_TEMPLATE.format('offset'), |
| 38 | + ) |
14 | 39 |
|
15 | 40 | args = parser.parse_args(argv) |
16 | 41 | filename: str = args.filename |
| 42 | + yaml_mapping: int = args.yaml_mapping |
| 43 | + yaml_sequence: int = args.yaml_sequence |
| 44 | + yaml_offset: int = args.yaml_offset |
17 | 45 |
|
18 | | - # match pre-commit config as documented |
19 | | - # TODO - support round-tripping |
20 | 46 | yaml = ruamel.yaml.YAML() |
21 | 47 | yaml.preserve_quotes = True |
22 | | - yaml.indent(mapping=4, sequence=4) |
| 48 | + yaml.indent(yaml_mapping, yaml_sequence, yaml_offset) |
23 | 49 |
|
24 | 50 | with open(filename) as f: |
25 | 51 | loaded = yaml.load(f) |
|
0 commit comments