Skip to content

Commit 62f668f

Browse files
committed
add types_or
1 parent 3112e08 commit 62f668f

File tree

13 files changed

+45
-10
lines changed

13 files changed

+45
-10
lines changed

pre_commit/clientlib.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ def _make_argparser(filenames_help: str) -> argparse.ArgumentParser:
6161
cfgv.Optional('files', check_string_regex, ''),
6262
cfgv.Optional('exclude', check_string_regex, '^$'),
6363
cfgv.Optional('types', cfgv.check_array(check_type_tag), ['file']),
64+
cfgv.Optional('types_or', cfgv.check_array(check_type_tag), ['file']),
6465
cfgv.Optional('exclude_types', cfgv.check_array(check_type_tag), []),
6566

6667
cfgv.Optional(

pre_commit/commands/run.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,20 +83,28 @@ def by_types(
8383
self,
8484
names: Sequence[str],
8585
types: Collection[str],
86+
types_or: Collection[str],
8687
exclude_types: Collection[str],
8788
) -> List[str]:
88-
types, exclude_types = frozenset(types), frozenset(exclude_types)
89+
types = frozenset(types)
90+
types_or = frozenset(types_or)
91+
exclude_types = frozenset(exclude_types)
8992
ret = []
9093
for filename in names:
9194
tags = self._types_for_file(filename)
92-
if tags >= types and not tags & exclude_types:
95+
if tags >= types and tags & types_or and not tags & exclude_types:
9396
ret.append(filename)
9497
return ret
9598

9699
def filenames_for_hook(self, hook: Hook) -> Tuple[str, ...]:
97100
names = self.filenames
98101
names = filter_by_include_exclude(names, hook.files, hook.exclude)
99-
names = self.by_types(names, hook.types, hook.exclude_types)
102+
names = self.by_types(
103+
names,
104+
hook.types,
105+
hook.types_or,
106+
hook.exclude_types,
107+
)
100108
return tuple(names)
101109

102110
@classmethod

pre_commit/hook.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ class Hook(NamedTuple):
2222
files: str
2323
exclude: str
2424
types: Sequence[str]
25+
types_or: Sequence[str]
2526
exclude_types: Sequence[str]
2627
additional_dependencies: Sequence[str]
2728
args: Sequence[str]

pre_commit/meta_hooks/check_useless_excludes.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,10 @@ def check_useless_excludes(config_file: str) -> int:
4747
# the defaults applied during runtime
4848
hook = apply_defaults(hook, MANIFEST_HOOK_DICT)
4949
names = classifier.filenames
50-
types, exclude_types = hook['types'], hook['exclude_types']
51-
names = classifier.by_types(names, types, exclude_types)
50+
types = hook['types']
51+
types_or = hook['types_or']
52+
exclude_types = hook['exclude_types']
53+
names = classifier.by_types(names, types, types_or, exclude_types)
5254
include, exclude = hook['files'], hook['exclude']
5355
if not exclude_matches_any(names, include, exclude):
5456
print(
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
#!/usr/bin/env bash
2-
echo $@
2+
echo "$@"
33
exit 1
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
#!/usr/bin/env bash
22
echo 'Fail'
3-
echo $@
3+
echo "$@"
44
exit 1
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
#!/usr/bin/env bash
2-
echo $@
2+
echo "$@"
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
#!/usr/bin/env bash
22

3-
echo $@
3+
echo "$@"
44
echo 'Hello World'
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
- id: python-cython-files
2+
name: Python and Cython files
3+
entry: bin/hook.sh
4+
language: script
5+
types: [file]
6+
types_or: [python, cython]
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/usr/bin/env bash
2+
echo "$@"
3+
exit 1

0 commit comments

Comments
 (0)