diff options
author | Xavier Claessens <xavier.claessens@collabora.com> | 2021-09-29 14:05:54 -0400 |
---|---|---|
committer | Xavier Claessens <xclaesse@gmail.com> | 2021-10-10 14:13:35 -0400 |
commit | 32b7cbd4a7cd8cffb47c5465301141eaad599eaa (patch) | |
tree | 245fb09ff61454d9afec8c37ef29957f04c5028e /mesonbuild | |
parent | 0a3a9fa0c3ebf45c94d9009a59cead571cbecf7b (diff) | |
download | meson-32b7cbd4a7cd8cffb47c5465301141eaad599eaa.zip meson-32b7cbd4a7cd8cffb47c5465301141eaad599eaa.tar.gz meson-32b7cbd4a7cd8cffb47c5465301141eaad599eaa.tar.bz2 |
clangformat: Only format files tracked by git by default
Diffstat (limited to 'mesonbuild')
-rw-r--r-- | mesonbuild/scripts/clangformat.py | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/mesonbuild/scripts/clangformat.py b/mesonbuild/scripts/clangformat.py index 518d44c..ff0304a 100644 --- a/mesonbuild/scripts/clangformat.py +++ b/mesonbuild/scripts/clangformat.py @@ -21,6 +21,7 @@ from concurrent.futures import ThreadPoolExecutor from ..environment import detect_clangformat from ..compilers import lang_suffixes +from ..mesonlib import Popen_safe import typing as T def parse_pattern_file(fname: Path) -> T.List[str]: @@ -52,9 +53,15 @@ def run_clang_format(exelist: T.List[str], fname: Path, check: bool) -> subproce def clangformat(exelist: T.List[str], srcdir: Path, builddir: Path, check: bool) -> int: patterns = parse_pattern_file(srcdir / '.clang-format-include') - if not patterns: - patterns = ['**/*'] - globs = [srcdir.glob(p) for p in patterns] + globs: T.Union[T.List[T.List[Path]], T.List[T.Generator[Path, None, None]]] + if patterns: + globs = [srcdir.glob(p) for p in patterns] + else: + p, o, _ = Popen_safe(['git', 'ls-files'], cwd=srcdir) + if p.returncode == 0: + globs = [[Path(srcdir, f) for f in o.splitlines()]] + else: + globs = [srcdir.glob('**/*')] patterns = parse_pattern_file(srcdir / '.clang-format-ignore') ignore = [str(builddir / '*')] ignore.extend([str(srcdir / p) for p in patterns]) @@ -70,7 +77,8 @@ def clangformat(exelist: T.List[str], srcdir: Path, builddir: Path, check: bool) any(fnmatch.fnmatch(strf, i) for i in ignore): continue futures.append(e.submit(run_clang_format, exelist, f, check)) - returncode = max(x.result().returncode for x in futures) + if futures: + returncode = max(x.result().returncode for x in futures) return returncode def run(args: T.List[str]) -> int: |