Index: tools/list_files.py |
diff --git a/tools/list_files.py b/tools/list_files.py |
index ad277e853f0a03c851b03b4f0ac9f37ca592c4f0..b63d6ab0e324f26aa367190d5fcdc3b4787df4e0 100755 |
--- a/tools/list_files.py |
+++ b/tools/list_files.py |
@@ -5,8 +5,12 @@ |
"""Tool for listing files whose name match a pattern. |
+If the first argument is 'relative', the script produces paths relative to the |
+current working directory. If the first argument is 'absolute', the script |
+produces absolute paths. |
+ |
Usage: |
- python tools/list_files.py PATTERN DIRECTORY... |
+ python tools/list_files.py {absolute, relative} PATTERN DIRECTORY... |
""" |
import os |
@@ -15,13 +19,21 @@ import sys |
def main(argv): |
- pattern = re.compile(argv[1]) |
- for directory in argv[2:]: |
+ mode = argv[1] |
+ if mode not in ['absolute', 'relative']: |
+ raise Exception("First argument must be 'absolute' or 'relative'") |
+ pattern = re.compile(argv[2]) |
+ for directory in argv[3:]: |
+ if mode in 'absolute' and not os.path.isabs(directory): |
+ directory = os.path.realpath(directory) |
for root, directories, files in os.walk(directory): |
if '.git' in directories: |
directories.remove('.git') |
for filename in files: |
- fullname = os.path.relpath(os.path.join(root, filename)) |
+ if mode in 'absolute': |
+ fullname = os.path.join(directory, root, filename) |
+ else: |
+ fullname = os.path.relpath(os.path.join(root, filename)) |
fullname = fullname.replace(os.sep, '/') |
if re.search(pattern, fullname): |
print fullname |