Files
phs_v1.0.1.0/build/hb/resolver/tool_args_resolver.py

115 lines
4.5 KiB
Python
Raw Permalink Normal View History

2024-09-27 19:16:49 +08:00
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (c) 2023 Huawei Device Co., Ltd.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
from containers.arg import Arg
from containers.status import throw_exception
from exceptions.ohos_exception import OHOSException
from services.gn import CMDTYPE
from resolver.interface.args_resolver_interface import ArgsResolverInterface
from modules.interface.tool_module_interface import ToolModuleInterface
from util.component_util import ComponentUtil
class ToolArgsResolver(ArgsResolverInterface):
def __init__(self, args_dict: dict):
super().__init__(args_dict)
@staticmethod
def resolve_list_targets(target_arg: Arg, tool_module: ToolModuleInterface):
out_dir = ''
args_list = []
for arg in target_arg.arg_value:
if '-' not in arg and len(out_dir) == 0:
out_dir = arg
else:
args_list.append(arg)
tool_module.gn.execute_gn_cmd(
cmd_type=CMDTYPE.LS, out_dir=out_dir, args_list=args_list)
@staticmethod
def resolve_desc_targets(target_arg: Arg, tool_module: ToolModuleInterface):
out_dir = ''
args_list = []
for arg in target_arg.arg_value:
if ':' in arg:
try:
component_name, module_name = arg.split(':')
args_list.append(ComponentUtil.get_component_module_full_name(
out_dir, component_name, module_name))
except Exception:
raise OHOSException(
'Invalid desc args: {} ,need <component:module>'.format(arg))
elif '-' not in arg and len(out_dir) == 0:
out_dir = arg
else:
args_list.append(arg)
tool_module.gn.execute_gn_cmd(
cmd_type=CMDTYPE.DESC, out_dir=out_dir, args_list=args_list)
@staticmethod
def resolve_path_targets(target_arg: Arg, tool_module: ToolModuleInterface):
out_dir = ''
args_list = []
for arg in target_arg.arg_value:
if ':' in arg:
try:
component_name, module_name = arg.split(':')
args_list.append(ComponentUtil.get_component_module_full_name(
out_dir, component_name, module_name))
except Exception:
raise OHOSException(
'Invalid path args: {} ,need <component:module>'.format(arg))
elif '-' not in arg and len(out_dir) == 0:
out_dir = arg
else:
args_list.append(arg)
tool_module.gn.execute_gn_cmd(
cmd_type=CMDTYPE.PATH, out_dir=out_dir, args_list=args_list)
@staticmethod
def resolve_refs_targets(target_arg: Arg, tool_module: ToolModuleInterface):
out_dir = ''
args_list = []
for arg in target_arg.arg_value:
if ':' in arg:
try:
component_name, module_name = arg.split(':')
args_list.append(ComponentUtil.get_component_module_full_name(
out_dir, component_name, module_name))
except Exception:
raise OHOSException(
'Invalid refs args: {} ,need <component:module>'.format(arg))
elif '-' not in arg and len(out_dir) == 0:
out_dir = arg
else:
args_list.append(arg)
tool_module.gn.execute_gn_cmd(
cmd_type=CMDTYPE.REFS, out_dir=out_dir, args_list=args_list)
@staticmethod
def resolve_format_targets(target_arg: Arg, tool_module: ToolModuleInterface):
tool_module.gn.execute_gn_cmd(
cmd_type=CMDTYPE.FORMAT, args_list=target_arg.arg_value)
@staticmethod
def resolve_clean_targets(target_arg: Arg, tool_module: ToolModuleInterface):
out_dir = ''
out_dir = target_arg.arg_value[0]
tool_module.gn.execute_gn_cmd(cmd_type=CMDTYPE.CLEAN, out_dir=out_dir)