Making it possible to invoke pre-commit run --files some.file from a subdirectory of the repository

This commit is contained in:
Lucas Cimon
2016-02-03 09:03:59 +01:00
committed by Anthony Sottile
parent 894862462d
commit 941149942d
3 changed files with 11 additions and 3 deletions

View File

@@ -8,6 +8,7 @@ import pkg_resources
from pre_commit import color
from pre_commit import five
from pre_commit import git
from pre_commit.commands.autoupdate import autoupdate
from pre_commit.commands.clean import clean
from pre_commit.commands.install_uninstall import install
@@ -110,7 +111,8 @@ def main(argv=None):
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.',
'--files', nargs='*', default=[],
help='Specific filenames to run hooks on.',
)
help = subparsers.add_parser(
@@ -122,6 +124,11 @@ def main(argv=None):
if len(argv) == 0:
argv = ['run']
args = parser.parse_args(argv)
if args.command == 'run':
args.files = [
os.path.relpath(os.path.abspath(filename), git.get_root())
for filename in args.files
]
if args.command == 'help':
if args.help_cmd:

View File

@@ -24,7 +24,7 @@ class Runner(object):
def create(cls):
"""Creates a PreCommitRunner by doing the following:
- Finds the root of the current git repository
- chdirs to that directory
- chdir to that directory
"""
root = git.get_root()
os.chdir(root)

View File

@@ -83,7 +83,8 @@ def _do_run(repo, args, environ={}):
runner = Runner(repo)
write_mock = mock.Mock()
write_fn = functools.partial(sys_stdout_write_wrapper, stream=write_mock)
ret = run(runner, args, write=write_fn, environ=environ)
with cwd(runner.git_root): # replicates Runner.create behaviour
ret = run(runner, args, write=write_fn, environ=environ)
printed = get_write_mock_output(write_mock)
return ret, printed