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 id24402
push usergszorc@mozilla.com
push dateWed, 06 Mar 2013 18:00:47 +0000
treeherdermozilla-central@794ad1f82fd7 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjhammel
bugs847722
milestone22.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
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)
+