зеркало из https://github.com/AvaloniaUI/angle.git
63 строки
1.5 KiB
Python
63 строки
1.5 KiB
Python
import fnmatch
|
|
import os
|
|
import sys
|
|
|
|
dirs = [ ]
|
|
types = [ ]
|
|
excludes = [ ]
|
|
files = [ ]
|
|
|
|
# Default to accepting a list of directories first
|
|
curArray = dirs
|
|
|
|
# Iterate over the arguments and add them to the arrays
|
|
for i in range(1, len(sys.argv)):
|
|
arg = sys.argv[i]
|
|
|
|
if arg == "-dirs":
|
|
curArray = dirs
|
|
continue
|
|
|
|
if arg == "-types":
|
|
curArray = types
|
|
continue
|
|
|
|
if arg == "-excludes":
|
|
curArray = excludes
|
|
continue
|
|
|
|
curArray.append(arg)
|
|
|
|
# If no directories were specified, use the current directory
|
|
if len(dirs) == 0:
|
|
dirs.append(".")
|
|
|
|
# If no types were specified, accept all types
|
|
if len(types) == 0:
|
|
types.append("*")
|
|
|
|
# Walk the directories listed and compare with type and exclude lists
|
|
for rootdir in dirs:
|
|
for root, dirnames, filenames in os.walk(rootdir):
|
|
for file in filenames:
|
|
# Skip files that are "hidden"
|
|
if file.startswith("."):
|
|
continue;
|
|
|
|
fullPath = os.path.join(root, file).replace("\\", "/")
|
|
for type in types:
|
|
if fnmatch.fnmatchcase(fullPath, type):
|
|
excluded = False
|
|
for exclude in excludes:
|
|
if fnmatch.fnmatchcase(fullPath, exclude):
|
|
excluded = True
|
|
break
|
|
|
|
if not excluded:
|
|
files.append(fullPath)
|
|
break
|
|
|
|
files.sort()
|
|
for file in files:
|
|
print file
|