--- a/tools/mach_commands.py
+++ b/tools/mach_commands.py
@@ -18,57 +18,57 @@ from mach.decorators import (
)
from mozbuild.base import MachCommandBase, MozbuildObject
@CommandProvider
class SearchProvider(object):
@Command('dxr', category='misc',
- description='Search for something in DXR.')
+ description='Search for something in DXR.')
@CommandArgument('term', nargs='+', help='Term(s) to search for.')
def dxr(self, term):
import webbrowser
term = ' '.join(term)
uri = 'http://dxr.mozilla.org/mozilla-central/search?q=%s&redirect=true' % term
webbrowser.open_new_tab(uri)
@Command('mdn', category='misc',
- description='Search for something on MDN.')
+ description='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', category='misc',
- description='Search for something on Google.')
+ description='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', category='misc',
- description='Search for something on the Internets. '
- 'This will open 3 new browser tabs and search for the term on Google, '
- 'MDN, and DXR.')
+ description='Search for something on the Internets. '
+ 'This will open 3 new browser tabs and search for the term on Google, '
+ 'MDN, and DXR.')
@CommandArgument('term', nargs='+', help='Term(s) to search for.')
def search(self, term):
self.google(term)
self.mdn(term)
self.dxr(term)
@CommandProvider
class UUIDProvider(object):
@Command('uuid', category='misc',
- description='Generate a uuid.')
+ description='Generate a uuid.')
@CommandArgument('--format', '-f', choices=['idl', 'cpp', 'c++'],
help='Output format for the generated uuid.')
def uuid(self, format=None):
import uuid
u = uuid.uuid4()
if format in [None, 'idl']:
print(u)
if format is None:
@@ -120,62 +120,61 @@ class RageProvider(MachCommandBase):
pass
if not user:
try:
user = getpass.getuser()
except Exception:
pass
- url = 'https://docs.google.com/a/mozilla.com/forms/d/e/1FAIpQLSeDVC3IXJu5d33Hp_ZTCOw06xEUiYH1pBjAqJ1g_y63sO2vvA/viewform'
+ url = 'https://docs.google.com/a/mozilla.com/forms/d/e/1FAIpQLSeDVC3IXJu5d33Hp_ZTCOw06xEUiYH1pBjAqJ1g_y63sO2vvA/viewform' # noqa: E501
if user:
url += '?entry.1281044204=%s' % urllib.quote(user)
print('Please leave your feedback in the opened web form')
webbrowser.open_new_tab(url)
@CommandProvider
class PastebinProvider(object):
@Command('pastebin', category='misc',
- description='Command line interface to pastebin.mozilla.org.')
+ description='Command line interface to pastebin.mozilla.org.')
@CommandArgument('--language', default=None,
help='Language to use for syntax highlighting')
@CommandArgument('--poster', default='',
help='Specify your name for use with pastebin.mozilla.org')
@CommandArgument('--duration', default='day',
choices=['d', 'day', 'm', 'month', 'f', 'forever'],
help='Keep for specified duration (default: %(default)s)')
@CommandArgument('file', nargs='?', default=None,
help='Specify the file to upload to pastebin.mozilla.org')
-
def pastebin(self, language, poster, duration, file):
import urllib
import urllib2
URL = 'https://pastebin.mozilla.org/'
FILE_TYPES = [{'value': 'text', 'name': 'None', 'extension': 'txt'},
- {'value': 'bash', 'name': 'Bash', 'extension': 'sh'},
- {'value': 'c', 'name': 'C', 'extension': 'c'},
- {'value': 'cpp', 'name': 'C++', 'extension': 'cpp'},
- {'value': 'html4strict', 'name': 'HTML', 'extension': 'html'},
- {'value': 'javascript', 'name': 'Javascript', 'extension': 'js'},
- {'value': 'javascript', 'name': 'Javascript', 'extension': 'jsm'},
- {'value': 'lua', 'name': 'Lua', 'extension': 'lua'},
- {'value': 'perl', 'name': 'Perl', 'extension': 'pl'},
- {'value': 'php', 'name': 'PHP', 'extension': 'php'},
- {'value': 'python', 'name': 'Python', 'extension': 'py'},
- {'value': 'ruby', 'name': 'Ruby', 'extension': 'rb'},
- {'value': 'css', 'name': 'CSS', 'extension': 'css'},
- {'value': 'diff', 'name': 'Diff', 'extension': 'diff'},
- {'value': 'ini', 'name': 'INI file', 'extension': 'ini'},
- {'value': 'java', 'name': 'Java', 'extension': 'java'},
- {'value': 'xml', 'name': 'XML', 'extension': 'xml'},
- {'value': 'xml', 'name': 'XML', 'extension': 'xul'}]
+ {'value': 'bash', 'name': 'Bash', 'extension': 'sh'},
+ {'value': 'c', 'name': 'C', 'extension': 'c'},
+ {'value': 'cpp', 'name': 'C++', 'extension': 'cpp'},
+ {'value': 'html4strict', 'name': 'HTML', 'extension': 'html'},
+ {'value': 'javascript', 'name': 'Javascript', 'extension': 'js'},
+ {'value': 'javascript', 'name': 'Javascript', 'extension': 'jsm'},
+ {'value': 'lua', 'name': 'Lua', 'extension': 'lua'},
+ {'value': 'perl', 'name': 'Perl', 'extension': 'pl'},
+ {'value': 'php', 'name': 'PHP', 'extension': 'php'},
+ {'value': 'python', 'name': 'Python', 'extension': 'py'},
+ {'value': 'ruby', 'name': 'Ruby', 'extension': 'rb'},
+ {'value': 'css', 'name': 'CSS', 'extension': 'css'},
+ {'value': 'diff', 'name': 'Diff', 'extension': 'diff'},
+ {'value': 'ini', 'name': 'INI file', 'extension': 'ini'},
+ {'value': 'java', 'name': 'Java', 'extension': 'java'},
+ {'value': 'xml', 'name': 'XML', 'extension': 'xml'},
+ {'value': 'xml', 'name': 'XML', 'extension': 'xul'}]
lang = ''
if file:
try:
with open(file, 'r') as f:
content = f.read()
# TODO: Use mime-types instead of extensions; suprocess('file <f_name>')
@@ -190,17 +189,16 @@ class PastebinProvider(object):
return 1
else:
content = sys.stdin.read()
duration = duration[0]
if language:
lang = language
-
params = [
('parent_pid', ''),
('format', lang),
('code2', content),
('poster', poster),
('expiry', duration),
('paste', 'Send')]
@@ -209,29 +207,29 @@ class PastebinProvider(object):
try:
req = urllib2.Request(URL, data)
response = urllib2.urlopen(req)
http_response_code = response.getcode()
if http_response_code == 200:
print(response.geturl())
else:
print('Could not upload the file, '
- 'HTTP Response Code %s' %(http_response_code))
+ 'HTTP Response Code %s' % (http_response_code))
except urllib2.URLError:
print('ERROR. Could not connect to pastebin.mozilla.org.')
return 1
return 0
@CommandProvider
class FormatProvider(MachCommandBase):
@Command('clang-format', category='misc',
- description='Run clang-format on current changes')
- @CommandArgument('--show', '-s', action = 'store_true',
- help = 'Show diff output on instead of applying changes')
+ description='Run clang-format on current changes')
+ @CommandArgument('--show', '-s', action='store_true',
+ help='Show diff output on instead of applying changes')
def clang_format(self, show=False):
import urllib2
plat = platform.system()
fmt = plat.lower() + "/clang-format-4.0"
fmt_diff = "clang-format-diff-4.0"
# We are currently using an unmodified snapshot of upstream clang-format.
@@ -258,49 +256,50 @@ class FormatProvider(MachCommandBase):
except urllib2.HTTPError as e:
print("HTTP error {0}: {1}".format(e.code, e.reason))
return 1
from subprocess import Popen, PIPE
if os.path.exists(".hg"):
diff_process = Popen(["hg", "diff", "-U0", "-r", "tip^",
- "--include", "glob:**.c", "--include", "glob:**.cpp", "--include", "glob:**.h",
+ "--include", "glob:**.c", "--include", "glob:**.cpp",
+ "--include", "glob:**.h",
"--exclude", "listfile:.clang-format-ignore"], stdout=PIPE)
else:
git_process = Popen(["git", "diff", "--no-color", "-U0", "HEAD^"], stdout=PIPE)
try:
diff_process = Popen(["filterdiff", "--include=*.h", "--include=*.cpp",
"--exclude-from-file=.clang-format-ignore"],
stdin=git_process.stdout, stdout=PIPE)
except OSError as e:
if e.errno == errno.ENOENT:
print("Can't find filterdiff. Please install patchutils.")
else:
print("OSError {0}: {1}".format(e.code, e.reason))
return 1
-
args = [sys.executable, clang_format_diff, "-p1"]
if not show:
- args.append("-i")
+ args.append("-i")
cf_process = Popen(args, stdin=diff_process.stdout)
return cf_process.communicate()[0]
def locate_or_fetch(self, root, python_script=False):
import urllib2
import hashlib
bin_sha = {
"Windows": "51ad909026e7adcc9342a199861ab4882d5ecbbd24ec76aee1d620ed5ee93c94079485214a7e4656180fb889ced11fc137aff9b1e08b474af5c21a2506407b7d", # noqa: E501
"Linux": "3f85905248f103c7c6761e622a2a374fa26fe0b90cb78e65496596f39788621871fcf2619092975d362c2001c544fa662ebdca227042ef40369a16f564fe51a8", # noqa: E501
"Darwin": "b07ed6bbb08bf71d8e9985b68e60fc8e9abda05d4b16f2123a188eb35fabb3f0b0123b9224aea7e51cae4cc59ddc25ffce55007fc841a8c30b195961841f850c", # noqa: E501
"python_script": "00d6d6628c9e1af4a250bae09bef27bcb9ba9e325c7ae11de9413d247fa327c512e4a17dd82ba871532038dfd48985a01c4c21f0cb868c531b852d04160cd757", # noqa: E501
}
target = os.path.join(self._mach_context.state_dir, os.path.basename(root))
+
if not os.path.exists(target):
tooltool_url = "https://api.pub.build.mozilla.org/tooltool/sha512/"
if self.prompt and raw_input("Download clang-format executables from {0} (yN)? ".format(tooltool_url)).lower() != 'y': # noqa: E501,F821
print("Download aborted.")
return 1
self.prompt = False
plat = platform.system()
if python_script:
@@ -320,16 +319,17 @@ class FormatProvider(MachCommandBase):
return 1
with open(temp, "wb") as fh:
fh.write(data)
fh.close()
os.chmod(temp, os.stat(temp).st_mode | stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH)
os.rename(temp, target)
return target
+
def mozregression_import():
# Lazy loading of mozregression.
# Note that only the mach_interface module should be used from this file.
try:
import mozregression.mach_interface
except ImportError:
return None
return mozregression.mach_interface