зеркало из https://github.com/mozilla/gecko-dev.git
Backed out changeset 4b889750da57 (bug 1696251) for causing lint failures. CLOSED TREE
This commit is contained in:
Родитель
7a3361b3fd
Коммит
6bb47ac424
|
@ -24,6 +24,10 @@ class Settings(MachCommandBase):
|
||||||
people create configs via a wizard, etc.
|
people create configs via a wizard, etc.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super(Settings, self).__init__(*args, **kwargs)
|
||||||
|
self._settings = self._mach_context.settings
|
||||||
|
|
||||||
@Command(
|
@Command(
|
||||||
"settings", category="devenv", description="Show available config settings."
|
"settings", category="devenv", description="Show available config settings."
|
||||||
)
|
)
|
||||||
|
@ -38,12 +42,12 @@ class Settings(MachCommandBase):
|
||||||
"""List available settings."""
|
"""List available settings."""
|
||||||
types = {v: k for k, v in TYPE_CLASSES.items()}
|
types = {v: k for k, v in TYPE_CLASSES.items()}
|
||||||
wrapper = TextWrapper(initial_indent="# ", subsequent_indent="# ")
|
wrapper = TextWrapper(initial_indent="# ", subsequent_indent="# ")
|
||||||
for i, section in enumerate(sorted(self._mach_context.settings)):
|
for i, section in enumerate(sorted(self._settings)):
|
||||||
if not short:
|
if not short:
|
||||||
print("%s[%s]" % ("" if i == 0 else "\n", section))
|
print("%s[%s]" % ("" if i == 0 else "\n", section))
|
||||||
|
|
||||||
for option in sorted(self._mach_context.settings[section]._settings):
|
for option in sorted(self._settings[section]._settings):
|
||||||
meta = self._mach_context.settings[section].get_meta(option)
|
meta = self._settings[section].get_meta(option)
|
||||||
desc = meta["description"]
|
desc = meta["description"]
|
||||||
|
|
||||||
if short:
|
if short:
|
||||||
|
|
|
@ -42,6 +42,11 @@ class ConditionsProvider(MachCommandBase):
|
||||||
|
|
||||||
@CommandProvider
|
@CommandProvider
|
||||||
class ConditionsContextProvider(MachCommandBase):
|
class ConditionsContextProvider(MachCommandBase):
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super(ConditionsContextProvider, self).__init__(*args, **kwargs)
|
||||||
|
self.foo = self._mach_context.foo
|
||||||
|
self.bar = self._mach_context.bar
|
||||||
|
|
||||||
@Command("cmd_foo_ctx", category="testing", conditions=[is_foo])
|
@Command("cmd_foo_ctx", category="testing", conditions=[is_foo])
|
||||||
def run_foo(self, command_context):
|
def run_foo(self, command_context):
|
||||||
pass
|
pass
|
||||||
|
|
|
@ -54,8 +54,9 @@ def setup():
|
||||||
|
|
||||||
@CommandProvider
|
@CommandProvider
|
||||||
class RemoteCommands(MachCommandBase):
|
class RemoteCommands(MachCommandBase):
|
||||||
def remotedir(self):
|
def __init__(self, *args, **kwargs):
|
||||||
return os.path.join(self.topsrcdir, "remote")
|
super(RemoteCommands, self).__init__(*args, **kwargs)
|
||||||
|
self.remotedir = os.path.join(self.topsrcdir, "remote")
|
||||||
|
|
||||||
@Command(
|
@Command(
|
||||||
"remote", category="misc", description="Remote protocol related operations."
|
"remote", category="misc", description="Remote protocol related operations."
|
||||||
|
@ -88,11 +89,11 @@ class RemoteCommands(MachCommandBase):
|
||||||
help="Do not install the just-pulled Puppeteer package,",
|
help="Do not install the just-pulled Puppeteer package,",
|
||||||
)
|
)
|
||||||
def vendor_puppeteer(self, command_context, repository, commitish, install):
|
def vendor_puppeteer(self, command_context, repository, commitish, install):
|
||||||
puppeteer_dir = os.path.join(self.remotedir(), "test", "puppeteer")
|
puppeteer_dir = os.path.join(self.remotedir, "test", "puppeteer")
|
||||||
|
|
||||||
# Preserve our custom mocha reporter
|
# Preserve our custom mocha reporter
|
||||||
shutil.move(
|
shutil.move(
|
||||||
os.path.join(puppeteer_dir, "json-mocha-reporter.js"), self.remotedir()
|
os.path.join(puppeteer_dir, "json-mocha-reporter.js"), self.remotedir
|
||||||
)
|
)
|
||||||
shutil.rmtree(puppeteer_dir, ignore_errors=True)
|
shutil.rmtree(puppeteer_dir, ignore_errors=True)
|
||||||
os.makedirs(puppeteer_dir)
|
os.makedirs(puppeteer_dir)
|
||||||
|
@ -123,7 +124,7 @@ class RemoteCommands(MachCommandBase):
|
||||||
shutil.rmtree(dir_path)
|
shutil.rmtree(dir_path)
|
||||||
|
|
||||||
shutil.move(
|
shutil.move(
|
||||||
os.path.join(self.remotedir(), "json-mocha-reporter.js"), puppeteer_dir
|
os.path.join(self.remotedir, "json-mocha-reporter.js"), puppeteer_dir
|
||||||
)
|
)
|
||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
|
|
|
@ -20,7 +20,6 @@ from pprint import pprint
|
||||||
|
|
||||||
from mach.registrar import Registrar
|
from mach.registrar import Registrar
|
||||||
from mozbuild.base import MachCommandBase
|
from mozbuild.base import MachCommandBase
|
||||||
from mozbuild.util import memoize
|
|
||||||
from mach.decorators import (
|
from mach.decorators import (
|
||||||
Command,
|
Command,
|
||||||
CommandArgument,
|
CommandArgument,
|
||||||
|
@ -38,6 +37,13 @@ BASE_LINK = "http://gecko-docs.mozilla.org-l1.s3-website.us-west-2.amazonaws.com
|
||||||
class Documentation(MachCommandBase):
|
class Documentation(MachCommandBase):
|
||||||
"""Helps manage in-tree documentation."""
|
"""Helps manage in-tree documentation."""
|
||||||
|
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
super(Documentation, self).__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
self._manager = None
|
||||||
|
self._project = None
|
||||||
|
self._version = None
|
||||||
|
|
||||||
@Command(
|
@Command(
|
||||||
"doc",
|
"doc",
|
||||||
category="devenv",
|
category="devenv",
|
||||||
|
@ -266,10 +272,12 @@ class Documentation(MachCommandBase):
|
||||||
return sphinx.cmd.build.build_main(args)
|
return sphinx.cmd.build.build_main(args)
|
||||||
|
|
||||||
def manager(self):
|
def manager(self):
|
||||||
|
if not self._manager:
|
||||||
from moztreedocs import manager
|
from moztreedocs import manager
|
||||||
return manager
|
|
||||||
|
|
||||||
@memoize
|
self._manager = manager
|
||||||
|
return self._manager
|
||||||
|
|
||||||
def _read_project_properties(self):
|
def _read_project_properties(self):
|
||||||
import imp
|
import imp
|
||||||
|
|
||||||
|
@ -283,13 +291,18 @@ class Documentation(MachCommandBase):
|
||||||
if not project:
|
if not project:
|
||||||
project = conf.project.replace(" ", "_")
|
project = conf.project.replace(" ", "_")
|
||||||
|
|
||||||
return {"project": project, "version": getattr(conf, "version", None)}
|
self._project = project
|
||||||
|
self._version = getattr(conf, "version", None)
|
||||||
|
|
||||||
def project(self):
|
def project(self):
|
||||||
return self._read_project_properties()["project"]
|
if not self._project:
|
||||||
|
self._read_project_properties()
|
||||||
|
return self._project
|
||||||
|
|
||||||
def version(self):
|
def version(self):
|
||||||
return self._read_project_properties()["version"]
|
if not self._version:
|
||||||
|
self._read_project_properties()
|
||||||
|
return self._version
|
||||||
|
|
||||||
def _node_path(self):
|
def _node_path(self):
|
||||||
from mozbuild.nodeutil import find_node_executable
|
from mozbuild.nodeutil import find_node_executable
|
||||||
|
|
|
@ -18,7 +18,6 @@ from mach.decorators import (
|
||||||
)
|
)
|
||||||
from mozboot.util import get_state_dir
|
from mozboot.util import get_state_dir
|
||||||
from mozbuild.base import BuildEnvironmentNotFoundException, MachCommandBase
|
from mozbuild.base import BuildEnvironmentNotFoundException, MachCommandBase
|
||||||
from mozbuild.util import memoize
|
|
||||||
|
|
||||||
|
|
||||||
CONFIG_ENVIRONMENT_NOT_FOUND = """
|
CONFIG_ENVIRONMENT_NOT_FOUND = """
|
||||||
|
@ -72,13 +71,19 @@ class TryConfig(object):
|
||||||
|
|
||||||
@CommandProvider
|
@CommandProvider
|
||||||
class TrySelect(MachCommandBase):
|
class TrySelect(MachCommandBase):
|
||||||
def init(self):
|
def __init__(self, *args, **kwargs):
|
||||||
|
super(TrySelect, self).__init__(*args, **kwargs)
|
||||||
from tryselect import push
|
from tryselect import push
|
||||||
|
|
||||||
push.MAX_HISTORY = self._mach_context.settings["try"]["maxhistory"]
|
push.MAX_HISTORY = self._mach_context.settings["try"]["maxhistory"]
|
||||||
|
self.subcommand = self._mach_context.handler.subcommand
|
||||||
|
self.parser = self._mach_context.handler.parser
|
||||||
|
self._presets = None
|
||||||
|
|
||||||
@memoize
|
|
||||||
def presets(self):
|
def presets(self):
|
||||||
|
if self._presets:
|
||||||
|
return self._presets
|
||||||
|
|
||||||
from tryselect.preset import MergedHandler
|
from tryselect.preset import MergedHandler
|
||||||
|
|
||||||
# Create our handler using both local and in-tree presets. The first
|
# Create our handler using both local and in-tree presets. The first
|
||||||
|
@ -93,7 +98,8 @@ class TrySelect(MachCommandBase):
|
||||||
os.path.join(self.topsrcdir, "tools", "tryselect", "try_presets.yml"),
|
os.path.join(self.topsrcdir, "tools", "tryselect", "try_presets.yml"),
|
||||||
]
|
]
|
||||||
|
|
||||||
return MergedHandler(*preset_paths)
|
self._presets = MergedHandler(*preset_paths)
|
||||||
|
return self._presets
|
||||||
|
|
||||||
def handle_presets(self, preset_action=None, save=None, preset=None, **kwargs):
|
def handle_presets(self, preset_action=None, save=None, preset=None, **kwargs):
|
||||||
"""Handle preset related arguments.
|
"""Handle preset related arguments.
|
||||||
|
@ -113,14 +119,12 @@ class TrySelect(MachCommandBase):
|
||||||
user_presets.edit()
|
user_presets.edit()
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
|
||||||
parser = self._mach_context.handler.parser
|
if "preset" not in self.parser.common_groups:
|
||||||
subcommand = self._mach_context.handler.subcommand
|
|
||||||
if "preset" not in parser.common_groups:
|
|
||||||
return kwargs
|
return kwargs
|
||||||
|
|
||||||
default = parser.get_default
|
default = self.parser.get_default
|
||||||
if save:
|
if save:
|
||||||
selector = subcommand or self._mach_context.settings["try"]["default"]
|
selector = self.subcommand or self._mach_context.settings["try"]["default"]
|
||||||
|
|
||||||
# Only save non-default values for simplicity.
|
# Only save non-default values for simplicity.
|
||||||
kwargs = {k: v for k, v in kwargs.items() if v != default(k)}
|
kwargs = {k: v for k, v in kwargs.items() if v != default(k)}
|
||||||
|
@ -130,18 +134,16 @@ class TrySelect(MachCommandBase):
|
||||||
|
|
||||||
if preset:
|
if preset:
|
||||||
if preset not in self.presets():
|
if preset not in self.presets():
|
||||||
self._mach_context.parser.error(
|
self.parser.error("preset '{}' does not exist".format(preset))
|
||||||
"preset '{}' does not exist".format(preset)
|
|
||||||
)
|
|
||||||
|
|
||||||
name = preset
|
name = preset
|
||||||
preset = self.presets()[name]
|
preset = self.presets()[name]
|
||||||
selector = preset.pop("selector")
|
selector = preset.pop("selector")
|
||||||
preset.pop("description", None) # description isn't used by any selectors
|
preset.pop("description", None) # description isn't used by any selectors
|
||||||
|
|
||||||
if not subcommand:
|
if not self.subcommand:
|
||||||
subcommand = selector
|
self.subcommand = selector
|
||||||
elif subcommand != selector:
|
elif self.subcommand != selector:
|
||||||
print(
|
print(
|
||||||
"error: preset '{}' exists for a different selector "
|
"error: preset '{}' exists for a different selector "
|
||||||
"(did you mean to run 'mach try {}' instead?)".format(
|
"(did you mean to run 'mach try {}' instead?)".format(
|
||||||
|
@ -169,7 +171,7 @@ class TrySelect(MachCommandBase):
|
||||||
|
|
||||||
to_validate = []
|
to_validate = []
|
||||||
kwargs.setdefault("try_config", {})
|
kwargs.setdefault("try_config", {})
|
||||||
for cls in six.itervalues(self._mach_context.handler.parser.task_configs):
|
for cls in six.itervalues(self.parser.task_configs):
|
||||||
try_config = cls.try_config(**kwargs)
|
try_config = cls.try_config(**kwargs)
|
||||||
if try_config is not None:
|
if try_config is not None:
|
||||||
to_validate.append(cls)
|
to_validate.append(cls)
|
||||||
|
@ -187,12 +189,10 @@ class TrySelect(MachCommandBase):
|
||||||
def run(self, **kwargs):
|
def run(self, **kwargs):
|
||||||
kwargs = self.handle_presets(**kwargs)
|
kwargs = self.handle_presets(**kwargs)
|
||||||
|
|
||||||
if self._mach_context.handler.parser.task_configs:
|
if self.parser.task_configs:
|
||||||
kwargs = self.handle_try_config(**kwargs)
|
kwargs = self.handle_try_config(**kwargs)
|
||||||
|
|
||||||
mod = importlib.import_module(
|
mod = importlib.import_module("tryselect.selectors.{}".format(self.subcommand))
|
||||||
"tryselect.selectors.{}".format(self._mach_context.handler.subcommand)
|
|
||||||
)
|
|
||||||
return mod.run(**kwargs)
|
return mod.run(**kwargs)
|
||||||
|
|
||||||
@Command(
|
@Command(
|
||||||
|
@ -213,20 +213,16 @@ class TrySelect(MachCommandBase):
|
||||||
default. Run |mach try auto --help| for more information on
|
default. Run |mach try auto --help| for more information on
|
||||||
scheduling with the `auto` selector.
|
scheduling with the `auto` selector.
|
||||||
"""
|
"""
|
||||||
self.init()
|
|
||||||
subcommand = self._mach_context.handler.subcommand
|
|
||||||
# We do special handling of presets here so that `./mach try --preset foo`
|
# We do special handling of presets here so that `./mach try --preset foo`
|
||||||
# works no matter what subcommand 'foo' was saved with.
|
# works no matter what subcommand 'foo' was saved with.
|
||||||
preset = kwargs["preset"]
|
preset = kwargs["preset"]
|
||||||
if preset:
|
if preset:
|
||||||
if preset not in self.presets():
|
if preset not in self.presets():
|
||||||
self._mach_context.handler.parser.error(
|
self.parser.error("preset '{}' does not exist".format(preset))
|
||||||
"preset '{}' does not exist".format(preset)
|
|
||||||
)
|
|
||||||
|
|
||||||
subcommand = self.presets()[preset]["selector"]
|
self.subcommand = self.presets()[preset]["selector"]
|
||||||
|
|
||||||
sub = subcommand or self._mach_context.settings["try"]["default"]
|
sub = self.subcommand or self._mach_context.settings["try"]["default"]
|
||||||
return self._mach_context.commands.dispatch(
|
return self._mach_context.commands.dispatch(
|
||||||
"try", self._mach_context, subcommand=sub, argv=argv, **kwargs
|
"try", self._mach_context, subcommand=sub, argv=argv, **kwargs
|
||||||
)
|
)
|
||||||
|
@ -312,7 +308,6 @@ class TrySelect(MachCommandBase):
|
||||||
For more detailed documentation, please see:
|
For more detailed documentation, please see:
|
||||||
https://firefox-source-docs.mozilla.org/tools/try/selectors/fuzzy.html
|
https://firefox-source-docs.mozilla.org/tools/try/selectors/fuzzy.html
|
||||||
"""
|
"""
|
||||||
self.init()
|
|
||||||
if kwargs.pop("interactive"):
|
if kwargs.pop("interactive"):
|
||||||
kwargs["query"].append("INTERACTIVE")
|
kwargs["query"].append("INTERACTIVE")
|
||||||
|
|
||||||
|
@ -349,7 +344,6 @@ class TrySelect(MachCommandBase):
|
||||||
has been made, pressing the 'Push' button will automatically push the
|
has been made, pressing the 'Push' button will automatically push the
|
||||||
selection to try.
|
selection to try.
|
||||||
"""
|
"""
|
||||||
self.init()
|
|
||||||
self.activate_virtualenv()
|
self.activate_virtualenv()
|
||||||
path = os.path.join(
|
path = os.path.join(
|
||||||
"tools", "tryselect", "selectors", "chooser", "requirements.txt"
|
"tools", "tryselect", "selectors", "chooser", "requirements.txt"
|
||||||
|
@ -367,7 +361,6 @@ class TrySelect(MachCommandBase):
|
||||||
parser=get_parser("auto"),
|
parser=get_parser("auto"),
|
||||||
)
|
)
|
||||||
def try_auto(self, command_context, **kwargs):
|
def try_auto(self, command_context, **kwargs):
|
||||||
self.init()
|
|
||||||
return self.run(**kwargs)
|
return self.run(**kwargs)
|
||||||
|
|
||||||
@SubCommand(
|
@SubCommand(
|
||||||
|
@ -377,7 +370,6 @@ class TrySelect(MachCommandBase):
|
||||||
parser=get_parser("again"),
|
parser=get_parser("again"),
|
||||||
)
|
)
|
||||||
def try_again(self, command_context, **kwargs):
|
def try_again(self, command_context, **kwargs):
|
||||||
self.init()
|
|
||||||
return self.run(**kwargs)
|
return self.run(**kwargs)
|
||||||
|
|
||||||
@SubCommand(
|
@SubCommand(
|
||||||
|
@ -395,7 +387,6 @@ class TrySelect(MachCommandBase):
|
||||||
via Treeherder's Add New Jobs feature, located in the per-push
|
via Treeherder's Add New Jobs feature, located in the per-push
|
||||||
menu.
|
menu.
|
||||||
"""
|
"""
|
||||||
self.init()
|
|
||||||
return self.run(**kwargs)
|
return self.run(**kwargs)
|
||||||
|
|
||||||
@SubCommand(
|
@SubCommand(
|
||||||
|
@ -442,7 +433,6 @@ class TrySelect(MachCommandBase):
|
||||||
(installable from mach vcs-setup).
|
(installable from mach vcs-setup).
|
||||||
|
|
||||||
"""
|
"""
|
||||||
self.init()
|
|
||||||
try:
|
try:
|
||||||
if self.substs.get("MOZ_ARTIFACT_BUILDS"):
|
if self.substs.get("MOZ_ARTIFACT_BUILDS"):
|
||||||
kwargs["local_artifact_build"] = True
|
kwargs["local_artifact_build"] = True
|
||||||
|
@ -467,7 +457,6 @@ class TrySelect(MachCommandBase):
|
||||||
)
|
)
|
||||||
def try_coverage(self, command_context, **kwargs):
|
def try_coverage(self, command_context, **kwargs):
|
||||||
"""Select which tasks to use using coverage data."""
|
"""Select which tasks to use using coverage data."""
|
||||||
self.init()
|
|
||||||
return self.run(**kwargs)
|
return self.run(**kwargs)
|
||||||
|
|
||||||
@SubCommand(
|
@SubCommand(
|
||||||
|
@ -478,7 +467,6 @@ class TrySelect(MachCommandBase):
|
||||||
)
|
)
|
||||||
def try_release(self, command_context, **kwargs):
|
def try_release(self, command_context, **kwargs):
|
||||||
"""Push the current tree to try, configured for a staging release."""
|
"""Push the current tree to try, configured for a staging release."""
|
||||||
self.init()
|
|
||||||
return self.run(**kwargs)
|
return self.run(**kwargs)
|
||||||
|
|
||||||
@SubCommand(
|
@SubCommand(
|
||||||
|
@ -492,5 +480,4 @@ class TrySelect(MachCommandBase):
|
||||||
|
|
||||||
Requires VPN and shipit access.
|
Requires VPN and shipit access.
|
||||||
"""
|
"""
|
||||||
self.init()
|
|
||||||
return self.run(**kwargs)
|
return self.run(**kwargs)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче