| A very simple pre-commit hook that, when passed one or more filenames |
| as arguments, will sort the lines in those files. |
| An example use case for this: you have a deploy-whitelist.txt file |
| in a repo that contains a list of filenames that is used to specify |
| files to be included in a docker container. This file has one filename |
| per line. Various users are adding/removing lines from this file; using |
| this hook on that file should reduce the instances of git merge |
| conflicts and keep the file nicely ordered. |
| from __future__ import print_function |
| def sort_file_contents(f): |
| before = [line.strip(b'\n\r') for line in f if line.strip()] |
| after_string = b'\n'.join(after) + b'\n' |
| parser = argparse.ArgumentParser() |
| parser.add_argument('filenames', nargs='+', help='Files to sort') |
| args = parser.parse_args(argv) |
| for arg in args.filenames: |
| with open(arg, 'rb+') as file_obj: |
| ret_for_file = sort_file_contents(file_obj) |
| print('Sorting {}'.format(arg)) |