Add ability to pass filenames as arguments.

This commit is contained in:
Anthony Sottile
2014-09-16 17:27:40 -07:00
parent cfd86d5faa
commit d8d7893cf7
3 changed files with 23 additions and 6 deletions

View File

@@ -49,7 +49,9 @@ def _print_user_skipped(hook, write, args):
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
elif git.is_in_merge_conflict():
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.')
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()
else:
ctx = staged_files_only(runner.cmd_runner)

View File

@@ -55,10 +55,6 @@ def main(argv=None):
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(
'--all-files', '-a', action='store_true', default=False,
help='Run on all the files in the repo. Implies --no-stash.',
)
run_parser.add_argument(
'--color', default='auto', type=color.use_color,
help='Whether to use color in output. Defaults to `auto`',
@@ -70,6 +66,14 @@ def main(argv=None):
run_parser.add_argument(
'--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', help='Show help for a specific command.'