diff options
Diffstat (limited to 'python/servo/devenv_commands.py')
-rw-r--r-- | python/servo/devenv_commands.py | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/python/servo/devenv_commands.py b/python/servo/devenv_commands.py index 7caac6e33bd..1f9456b0866 100644 --- a/python/servo/devenv_commands.py +++ b/python/servo/devenv_commands.py @@ -1,5 +1,5 @@ from __future__ import print_function, unicode_literals -from os import path, getcwd +from os import path, getcwd, listdir import subprocess @@ -76,3 +76,25 @@ class MachCommands(CommandBase): category='devenv') def rust_root(self): print(self.config["tools"]["rust-root"]) + + @Command('grep', + description='`git grep` for selected directories.', + category='devenv') + @CommandArgument( + 'params', default=None, nargs='...', + help="Command-line arguments to be passed through to `git grep`") + def grep(self, params): + if not params: + params = [] + # get all directories under tests/ + tests_dirs = listdir('tests') + # Remove 'wpt' from obtained dir list + tests_dirs = filter(lambda dir: dir != 'wpt', tests_dirs) + # Set of directories in project root + root_dirs = ['components', 'ports', 'python', 'etc', 'resources'] + # Generate absolute paths for directories in tests/ and project-root/ + tests_dirs_abs = [path.join(self.context.topdir, 'tests', s) for s in tests_dirs] + root_dirs_abs = [path.join(self.context.topdir, s) for s in root_dirs] + # Absolute paths for all directories to be considered + grep_paths = root_dirs_abs + tests_dirs_abs + return subprocess.call(["git"] + ["grep"] + params + ['--'] + grep_paths, env=self.build_env()) |