/usr/lib/python3/dist-packages/plainbox/impl/box.py is in python3-plainbox 0.25-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 | # This file is part of Checkbox.
#
# Copyright 2012-2014 Canonical Ltd.
# Written by:
# Zygmunt Krynicki <zygmunt.krynicki@canonical.com>
#
# Checkbox is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 3,
# as published by the Free Software Foundation.
#
# Checkbox is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Checkbox. If not, see <http://www.gnu.org/licenses/>.
"""
:mod:`plainbox.impl.box` -- command line interface
==================================================
.. warning::
THIS MODULE DOES NOT HAVE STABLE PUBLIC API
"""
import collections
import logging
import os
from plainbox import __version__ as plainbox_version
from plainbox.i18n import gettext as _
from plainbox.impl.applogic import PlainBoxConfig
from plainbox.impl.clitools import LazyLoadingToolMixIn
from plainbox.impl.commands import PlainBoxToolBase
from plainbox.impl.logging import setup_logging
from plainbox.impl.secure.plugins import LazyPlugInCollection
logger = logging.getLogger("plainbox.box")
class PlainBoxTool(LazyLoadingToolMixIn, PlainBoxToolBase):
"""
Command line interface to PlainBox
"""
def get_command_collection(self):
p = "plainbox.impl.commands."
return LazyPlugInCollection(collections.OrderedDict([
('run', (p + "cmd_run:RunCommand", self._load_providers,
self._load_config)),
('session', (p + "cmd_session:SessionCommand",
self._load_providers)),
('device', (p + "cmd_device:DeviceCommand",)),
('self-test', (p + "cmd_selftest:PlainboxSelfTestCommand",)),
('check-config', (p + "cmd_check_config:CheckConfigCommand",
self._load_config,)),
('dev', (p + "dev:DevCommand", self._load_providers,
self._load_config)),
('startprovider', (p + "cmd_startprovider:StartProviderCommand",)),
]))
@classmethod
def get_exec_name(cls):
"""
Get the name of this executable
"""
return "plainbox"
@classmethod
def get_exec_version(cls):
"""
Get the version reported by this executable
"""
return cls.format_version_tuple(plainbox_version)
def create_parser_object(self):
parser = super().create_parser_object()
parser.prog = self.get_exec_name()
# TRANSLATORS: '--help' and '--version' are not translatable,
# but '[options]' and '<command>' are.
parser.usage = _("{0} [--help] [--version] | [options] <command>"
" ...").format(self.get_exec_name())
return parser
@classmethod
def get_config_cls(cls):
"""
Get the Config class that is used by this implementation.
This can be overridden by subclasses to use a different config
class that is suitable for the particular application.
"""
return PlainBoxConfig
def get_gettext_domain(self):
return "plainbox"
def get_locale_dir(self):
return os.getenv("PLAINBOX_LOCALE_DIR", None)
class StubBoxTool(PlainBoxTool):
"""
Command line interface to StubBox
The 'stubbox' executable is just just like plainbox but it contains the
special stubbox provider with representative test jobs.
"""
@classmethod
def get_exec_name(cls):
return "stubbox"
def _load_providers(self):
logger.info("Loading stubbox provider...")
from plainbox.impl.providers.special import get_stubbox
from plainbox.impl.providers.special import get_exporters
return [get_stubbox(), get_exporters()]
def main(argv=None):
raise SystemExit(PlainBoxTool().main(argv))
def stubbox_main(argv=None):
raise SystemExit(StubBoxTool().main(argv))
def get_parser_for_sphinx():
return PlainBoxTool().construct_parser()
# Setup logging before anything else starts working.
# If we do it in main() or some other place then unit tests will see
# "leaked" log files which are really closed when the runtime shuts
# down but not when the tests are finishing
setup_logging()
|