On my machine, the `./precommit.py --all` took 344.15 seconds (more than
5 minutes). This change speeds it up so that it takes less than 10
seconds.
It primarily achieves this by running `swiftlint` twice instead of twice
per file. There are some other smaller changes, too:
- Use a `set` for common operations
- Avoid a needless call to `text.split`
- Use built-in `pathlib.Path().parts` instead of a home-rolled solution
Tested this by running `./precommit.py` with all flags.
Python 3 removed the [`cmp` function][0] which this script relied on.
Calling it was unnecessary, so I removed it (and cleaned up some of the
surrounding code).
Tested this with the `--all`, `--path`, and `--ref` flags.
[0]: https://docs.python.org/2.7/library/functions.html#cmp
Fixes the `objc_keywords` list in `check_diff_for_keywords`.
This list stores strings and Python automagically concatenates strings if there is no comma between them.
As a result the first two items of the list: `OWSAbstractMethod\(` and `OWSAssert\(` were wrongly conacatenated into `"OWSAbstractMethod\(OWSAssert\("`.
This has been found with LGTM 0ddaedbfad/files/Scripts/precommit.py (x84c147336239d4b6):1