lister: Make excluding directories work on Windows.
@@ -3,7 +3,6 @@ from __future__ import print_function
from __future__ import absolute_import
import os
-from os.path import abspath
import sys
import subprocess
import re
@@ -54,7 +53,7 @@ def list_files(targets=[], ftypes=[], use_shebang=True, modified_only=False,
If ftypes is [], all files are included.
use_shebang - Determine file type of extensionless files from their shebang.
modified_only - Only include files which have been modified.
- exclude - List of paths to be excluded, relative to repository root.
+ exclude - List of files or directories to be excluded, relative to repository root.
group_by_ftype - If True, returns a dict of lists keyed by file type.
If False, returns a flat list of files.
extless_only - Only include extensionless files in output.
@@ -66,7 +65,7 @@ def list_files(targets=[], ftypes=[], use_shebang=True, modified_only=False,
# sys.argv as str, so that battle is already lost. Settle for hoping
# everything is UTF-8.
repository_root = subprocess.check_output(['git', 'rev-parse', '--show-toplevel']).strip().decode('utf-8')
- exclude_abspaths = [os.path.normpath(os.path.join(repository_root, fpath)) for fpath in exclude]
+ exclude_abspaths = [os.path.abspath(os.path.join(repository_root, fpath)) for fpath in exclude]
cmdline = ['git', 'ls-files'] + targets
if modified_only:
@@ -84,8 +83,8 @@ def list_files(targets=[], ftypes=[], use_shebang=True, modified_only=False,
ext = os.path.splitext(fpath)[1]
if extless_only and ext:
continue
- absfpath = abspath(fpath)
- if any(absfpath == expath or absfpath.startswith(expath + '/')
+ absfpath = os.path.abspath(fpath)
+ if any(absfpath == expath or absfpath.startswith(os.path.abspath(expath) + os.sep)
for expath in exclude_abspaths):
continue
