2022-09-22 22:46:44 +08:00
|
|
|
# Copyright (c) 2023 Google
|
|
|
|
#
|
|
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
|
|
import argparse
|
|
|
|
import os
|
|
|
|
import sys
|
|
|
|
|
|
|
|
from west import log
|
|
|
|
from west.commands import WestCommand
|
|
|
|
|
|
|
|
from zephyr_ext_common import ZEPHYR_SCRIPTS
|
|
|
|
|
|
|
|
# Resolve path to twister libs and add imports
|
|
|
|
twister_path = ZEPHYR_SCRIPTS
|
|
|
|
os.environ["ZEPHYR_BASE"] = str(twister_path.parent)
|
|
|
|
|
|
|
|
sys.path.insert(0, str(twister_path))
|
|
|
|
sys.path.insert(0, str(twister_path / "pylib" / "twister"))
|
|
|
|
|
|
|
|
from twisterlib.environment import add_parse_arguments, parse_arguments
|
|
|
|
from twisterlib.twister_main import main
|
|
|
|
|
|
|
|
TWISTER_DESCRIPTION = """\
|
|
|
|
Convenience wrapper for twister. The below options are shared with the twister
|
|
|
|
script and have the same effects as if you ran twister directly. Refer to the
|
|
|
|
twister documentation for more information.
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
class Twister(WestCommand):
|
|
|
|
def __init__(self):
|
|
|
|
super(Twister, self).__init__(
|
|
|
|
"twister",
|
|
|
|
# Keep this in sync with the string in west-commands.yml.
|
|
|
|
"west twister wrapper",
|
|
|
|
TWISTER_DESCRIPTION,
|
|
|
|
accepts_unknown_args=True,
|
|
|
|
)
|
|
|
|
|
|
|
|
def do_add_parser(self, parser_adder):
|
|
|
|
parser = parser_adder.add_parser(
|
|
|
|
self.name,
|
|
|
|
help=self.help,
|
|
|
|
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
|
|
description=self.description,
|
|
|
|
allow_abbrev=False
|
|
|
|
)
|
|
|
|
|
|
|
|
parser = add_parse_arguments(parser)
|
|
|
|
|
|
|
|
return parser
|
|
|
|
|
|
|
|
def do_run(self, args, remainder):
|
|
|
|
log.dbg(
|
|
|
|
"args: {} remainder: {}".format(args, remainder), level=log.VERBOSE_EXTREME
|
|
|
|
)
|
|
|
|
|
2024-05-16 04:22:38 +08:00
|
|
|
options = parse_arguments(self.parser, args=remainder, options=args)
|
|
|
|
default_options = parse_arguments(self.parser, args=[], on_init=False)
|
|
|
|
ret = main(options, default_options)
|
2023-02-06 22:33:40 +08:00
|
|
|
sys.exit(ret)
|
2022-09-22 22:46:44 +08:00
|
|
|
|
|
|
|
def _parse_arguments(self, args, options):
|
|
|
|
"""Helper function for testing purposes"""
|
|
|
|
return parse_arguments(self.parser, args, options)
|