Skip to content

Commit

Permalink
Merge pull request #1967 from vkomarov-r7/feature/directory-hooks
Browse files Browse the repository at this point in the history
Add the ability to restrict which directories isort works against
  • Loading branch information
timothycrosley authored Jan 26, 2023
2 parents 06d8ef5 + 920e9ea commit ae0cc1c
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions isort/hooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import os
import subprocess # nosec - Needed for hook
from pathlib import Path
from typing import List
from typing import List, Optional

from isort import Config, api, exceptions

Expand All @@ -32,7 +32,8 @@ def get_lines(command: List[str]) -> List[str]:


def git_hook(
strict: bool = False, modify: bool = False, lazy: bool = False, settings_file: str = ""
strict: bool = False, modify: bool = False, lazy: bool = False, settings_file: str = "",
directories: Optional[List[str]] = None,
) -> int:
"""Git pre-commit hook to check staged files for isort errors
Expand All @@ -50,13 +51,16 @@ def git_hook(
When settings_file is the empty string, the configuration file
will be searched starting at the directory containing the first
staged file, if any, and going upward in the directory structure.
:param list[str] directories - A list of directories to restrict the hook to.
:return number of errors if in strict mode, 0 otherwise.
"""
# Get list of files modified and staged
diff_cmd = ["git", "diff-index", "--cached", "--name-only", "--diff-filter=ACMRTUXB", "HEAD"]
if lazy:
diff_cmd.remove("--cached")
if directories:
diff_cmd.extend(directories)

files_modified = get_lines(diff_cmd)
if not files_modified:
Expand Down

0 comments on commit ae0cc1c

Please sign in to comment.