aboutsummaryrefslogtreecommitdiffstats
path: root/python/servo/devenv_commands.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/servo/devenv_commands.py')
-rw-r--r--python/servo/devenv_commands.py24
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())