Bug 847722 - Mach commands to search The Internets; r=jhammel
authorGregory Szorc <gps@mozilla.com>
Wed, 06 Mar 2013 09:58:40 -0800
changeset 123929 794ad1f82fd7f2dc6350d942c25bcf223f41330c
parent 123928 635f2c7660c8abb1c814314447088b69c91b5d11
child 123930 f64b3dbe0b53ee23fab755234c83cb0669254553
push idunknown
push userunknown
push dateunknown
reviewersjhammel
bugs847722
milestone22.0a1
Bug 847722 - Mach commands to search The Internets; r=jhammel DONTBUILD (NPOTB)
build/mach_bootstrap.py
tools/mach_commands.py
--- a/build/mach_bootstrap.py
+++ b/build/mach_bootstrap.py
@@ -33,16 +33,17 @@ MACH_MODULES = [
     'layout/tools/reftest/mach_commands.py',
     'python/mach/mach/commands/commandinfo.py',
     'python/mozboot/mozboot/mach_commands.py',
     'python/mozbuild/mozbuild/config.py',
     'python/mozbuild/mozbuild/mach_commands.py',
     'python/mozbuild/mozbuild/frontend/mach_commands.py',
     'testing/mochitest/mach_commands.py',
     'testing/xpcshell/mach_commands.py',
+    'tools/mach_commands.py',
 ]
 
 def bootstrap(topsrcdir):
     # Ensure we are running Python 2.7+. We put this check here so we generate a
     # user-friendly error message rather than a cryptic stack trace on module
     # import.
     if sys.version_info[0] != 2 or sys.version_info[1] < 7:
         print('Python 2.7 or above (but not Python 3) is required to run mach.')
new file mode 100644
--- /dev/null
+++ b/tools/mach_commands.py
@@ -0,0 +1,48 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, # You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from __future__ import unicode_literals
+
+from mach.decorators import (
+    CommandArgument,
+    CommandProvider,
+    Command,
+)
+
+
+@CommandProvider
+class SearchProvider(object):
+    @Command('mxr', help='Search for something in MXR.')
+    @CommandArgument('term', nargs='+', help='Term(s) to search for.')
+    def mxr(self, term):
+        import webbrowser
+        term = ' '.join(term)
+        uri = 'https://mxr.mozilla.org/mozilla-central/search?string=%s' % term
+        webbrowser.open_new_tab(uri)
+
+    @Command('mdn', help='Search for something on MDN.')
+    @CommandArgument('term', nargs='+', help='Term(s) to search for.')
+    def mdn(self, term):
+        import webbrowser
+        term = ' '.join(term)
+        uri = 'https://developer.mozilla.org/search?q=%s' % term
+        webbrowser.open_new_tab(uri)
+
+    @Command('google', help='Search for something on Google.')
+    @CommandArgument('term', nargs='+', help='Term(s) to search for.')
+    def google(self, term):
+        import webbrowser
+        term = ' '.join(term)
+        uri = 'https://www.google.com/search?q=%s' % term
+        webbrowser.open_new_tab(uri)
+
+    @Command('search', help='Search for something on the Internets. '
+        'This will open 3 new browser tabs and search for the term on Google, '
+        'MDN, and MXR.')
+    @CommandArgument('term', nargs='+', help='Term(s) to search for.')
+    def search(self, term):
+        self.google(term)
+        self.mdn(term)
+        self.mxr(term)
+