mirror of
https://github.com/pre-commit/pre-commit.git
synced 2026-02-17 08:14:42 +04:00
Add ability to pass filenames as arguments.
This commit is contained in:
parent
cfd86d5faa
commit
d8d7893cf7
3 changed files with 23 additions and 6 deletions
|
|
@ -49,7 +49,9 @@ def _print_user_skipped(hook, write, args):
|
||||||
|
|
||||||
|
|
||||||
def _run_single_hook(runner, repository, hook, args, write, skips=set()):
|
def _run_single_hook(runner, repository, hook, args, write, skips=set()):
|
||||||
if args.all_files:
|
if args.files:
|
||||||
|
get_filenames = git.get_files_matching(lambda: args.files)
|
||||||
|
elif args.all_files:
|
||||||
get_filenames = git.get_all_files_matching
|
get_filenames = git.get_all_files_matching
|
||||||
elif git.is_in_merge_conflict():
|
elif git.is_in_merge_conflict():
|
||||||
get_filenames = git.get_conflicted_files_matching
|
get_filenames = git.get_conflicted_files_matching
|
||||||
|
|
@ -136,7 +138,8 @@ def run(runner, args, write=sys_stdout_write_wrapper, environ=os.environ):
|
||||||
logger.error('Unmerged files. Resolve before committing.')
|
logger.error('Unmerged files. Resolve before committing.')
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
if args.no_stash or args.all_files:
|
# Don't stash if specified or files are specified
|
||||||
|
if args.no_stash or args.all_files or args.files:
|
||||||
ctx = noop_context()
|
ctx = noop_context()
|
||||||
else:
|
else:
|
||||||
ctx = staged_files_only(runner.cmd_runner)
|
ctx = staged_files_only(runner.cmd_runner)
|
||||||
|
|
|
||||||
|
|
@ -55,10 +55,6 @@ def main(argv=None):
|
||||||
|
|
||||||
run_parser = subparsers.add_parser('run', help='Run hooks.')
|
run_parser = subparsers.add_parser('run', help='Run hooks.')
|
||||||
run_parser.add_argument('hook', nargs='?', help='A single hook-id to run')
|
run_parser.add_argument('hook', nargs='?', help='A single hook-id to run')
|
||||||
run_parser.add_argument(
|
|
||||||
'--all-files', '-a', action='store_true', default=False,
|
|
||||||
help='Run on all the files in the repo. Implies --no-stash.',
|
|
||||||
)
|
|
||||||
run_parser.add_argument(
|
run_parser.add_argument(
|
||||||
'--color', default='auto', type=color.use_color,
|
'--color', default='auto', type=color.use_color,
|
||||||
help='Whether to use color in output. Defaults to `auto`',
|
help='Whether to use color in output. Defaults to `auto`',
|
||||||
|
|
@ -70,6 +66,14 @@ def main(argv=None):
|
||||||
run_parser.add_argument(
|
run_parser.add_argument(
|
||||||
'--verbose', '-v', action='store_true', default=False,
|
'--verbose', '-v', action='store_true', default=False,
|
||||||
)
|
)
|
||||||
|
run_mutex_group = run_parser.add_mutually_exclusive_group(required=False)
|
||||||
|
run_mutex_group.add_argument(
|
||||||
|
'--all-files', '-a', action='store_true', default=False,
|
||||||
|
help='Run on all the files in the repo. Implies --no-stash.',
|
||||||
|
)
|
||||||
|
run_mutex_group.add_argument(
|
||||||
|
'--files', nargs='*', help='Specific filenames to run hooks on.',
|
||||||
|
)
|
||||||
|
|
||||||
help = subparsers.add_parser(
|
help = subparsers.add_parser(
|
||||||
'help', help='Show help for a specific command.'
|
'help', help='Show help for a specific command.'
|
||||||
|
|
|
||||||
|
|
@ -43,13 +43,17 @@ def get_write_mock_output(write_mock):
|
||||||
|
|
||||||
def _get_opts(
|
def _get_opts(
|
||||||
all_files=False,
|
all_files=False,
|
||||||
|
files=(),
|
||||||
color=False,
|
color=False,
|
||||||
verbose=False,
|
verbose=False,
|
||||||
hook=None,
|
hook=None,
|
||||||
no_stash=False,
|
no_stash=False,
|
||||||
):
|
):
|
||||||
|
# These are mutually exclusive
|
||||||
|
assert not (all_files and files)
|
||||||
return auto_namedtuple(
|
return auto_namedtuple(
|
||||||
all_files=all_files,
|
all_files=all_files,
|
||||||
|
files=files,
|
||||||
color=color,
|
color=color,
|
||||||
verbose=verbose,
|
verbose=verbose,
|
||||||
hook=hook,
|
hook=hook,
|
||||||
|
|
@ -100,6 +104,12 @@ def test_run_all_hooks_failing(
|
||||||
0,
|
0,
|
||||||
True,
|
True,
|
||||||
),
|
),
|
||||||
|
(
|
||||||
|
{'files': ('foo.py',), 'verbose': True},
|
||||||
|
('foo.py'),
|
||||||
|
0,
|
||||||
|
True,
|
||||||
|
),
|
||||||
({}, ('Bash hook', '(no files to check)', 'Skipped'), 0, False),
|
({}, ('Bash hook', '(no files to check)', 'Skipped'), 0, False),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue