Source code for asv.commands.machine
# Licensed under a 3-clause BSD style license - see LICENSE.rst
from .. import machine
from . import Command
[docs]
class Machine(Command):
@classmethod
[docs]
def setup_arguments(cls, subparsers):
parser = subparsers.add_parser(
"machine",
help="Define information about this machine",
description="""
Defines information about this machine. If no arguments
are provided, an interactive console session will be used
to ask questions about the machine.
""",
)
defaults = machine.Machine.get_defaults()
for name, description in machine.Machine.fields:
parser.add_argument('--' + name, default=defaults[name], help=description)
parser.add_argument(
'--yes', default=False, action='store_true', help="Accept all questions"
)
parser.set_defaults(func=cls.run_from_args)
return parser
@classmethod
[docs]
def run_from_conf_args(cls, conf, args):
return cls.run(**vars(args))
@classmethod
[docs]
def run(cls, **kwargs):
different = {}
defaults = machine.Machine.get_defaults()
for key, val in defaults.items():
if kwargs.get(key) != val:
different[key] = kwargs.get(key)
use_defaults = kwargs['yes']
machine.Machine.load(
force_interactive=(len(different) == 0), use_defaults=use_defaults, **different
)