diff options
Diffstat (limited to '')
-rw-r--r-- | python/mach/mach/base.py | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/python/mach/mach/base.py b/python/mach/mach/base.py new file mode 100644 index 0000000000..fac17e9b03 --- /dev/null +++ b/python/mach/mach/base.py @@ -0,0 +1,73 @@ +# 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/. + + +class CommandContext(object): + """Holds run-time state so it can easily be passed to command providers.""" + + def __init__( + self, cwd: str, settings=None, log_manager=None, commands=None, **kwargs + ): + self.cwd = cwd + self.settings = settings + self.log_manager = log_manager + self.commands = commands + self.is_interactive = None # Filled in after args are parsed + self.telemetry = None # Filled in after args are parsed + self.command_attrs = {} + + for k, v in kwargs.items(): + setattr(self, k, v) + + +class MachError(Exception): + """Base class for all errors raised by mach itself.""" + + +class NoCommandError(MachError): + """No command was passed into mach.""" + + def __init__(self, namespace): + MachError.__init__(self) + self.namespace = namespace + + +class UnknownCommandError(MachError): + """Raised when we attempted to execute an unknown command.""" + + def __init__(self, command, verb, suggested_commands=None): + MachError.__init__(self) + + self.command = command + self.verb = verb + self.suggested_commands = suggested_commands or [] + + +class UnrecognizedArgumentError(MachError): + """Raised when an unknown argument is passed to mach.""" + + def __init__(self, command, arguments): + MachError.__init__(self) + + self.command = command + self.arguments = arguments + + +class FailedCommandError(Exception): + """Raised by commands to signal a handled failure to be printed by mach + + When caught by mach a FailedCommandError will print message and exit + with ''exit_code''. The optional ''reason'' is a string in cases where + other scripts may wish to handle the exception, though this is generally + intended to communicate failure to mach. + """ + + def __init__(self, message, exit_code=1, reason=""): + Exception.__init__(self, message) + self.exit_code = exit_code + self.reason = reason + + +class MissingFileError(MachError): + """Attempted to load a mach commands file that doesn't exist.""" |