This should have no direct user impact.
We currently have two ways of sorting `#import` and `#include`
statements:
1. With our precommit script
2. With `clang-format` (via `git-clang-format`)
It *looks* like we aren't using `clang-format` (because of the
`SortIncludes: false` option in `.clang-format`) but we are,
which you can see by running `clang-format --dump-config`. As a separate
issue, it seems like we're not picking up the `clang-format`
configuration file (`clang-format --style=file:.clang-format
--dump-config` gives different results).
I've run into situations where the two of them "fight", so I think the
best thing to do is pick one. After some discussion, we decided to pick
`clang-format`.
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