__all__ = ["configs", "result_dict", "collector_config", "sub_com_dict"]
import os
import sys
import argparse
import json
import logging
from typing import Any, Tuple, Dict, Text
import preprocess
from pkgs.simple_yaml_tool import SimpleYamlTool
from pkgs.basic_tool import do_nothing, BasicTool
from get_subsystem_component import SC
from misc import TargetNameParser, SOPostHandler, APostHandler, DefaultPostHandler, LiteLibPostHandler, \
LiteComponentPostHandler, UnittestPostHandler, HAPPostHandler, HapPackPostHandler, lite_lib_s2m_post_handler, \
target_s2m_post_handler, extension_handler, target_type_handler, hap_name_handler, mod_handler
from template_processor import BaseProcessor, DefaultProcessor, StrResourceProcessor, ListResourceProcessor
def parse_args():
parser = argparse.ArgumentParser(
description="analysis rom size of L0 and L1 product")
parser.add_argument("-p", "--product_name", type=str,
help="product name. eg: -p ipcamera_hispark_taurus")
parser.add_argument("-o", "--oh_path", type=str,
default=".", help="root path of openharmony")
parser.add_argument("-g", "--recollect_gn",
action="store_false", help="recollect gn info or not(-g)")
parser.add_argument("-s", "--recollect_sc", action="store_false",
help="recollect subsystem_component info or not(-s)")
parser.add_argument("-b", "--baseline", action="store_true",
help="add baseline of component to the result(-b) or not.")
parser.add_argument("-u", "--unit_adaptive",
action="store_true", help="unit adaptive")
parser.add_argument("-f", "--output_file", type=str, default="rom_analysis_result",
help="basename of output file, default: rom_analysis_result. eg: rom_analysis_result")
args = parser.parse_args()
return args
logging.basicConfig(level=logging.NOTSET)
_args = parse_args()
configs = SimpleYamlTool.read_yaml("config.yaml")
result_dict: Dict[str, Any] = dict()
product_name = _args.product_name
if product_name not in configs.keys():
print(f"error: product_name '{product_name}' illegal")
exit(-1)
project_path = BasicTool.abspath(_args.oh_path)
recollect_gn = _args.recollect_gn
baseline = _args.baseline
unit_adapt = _args.unit_adaptive
output_file = _args.output_file
_recollect_sc = _args.recollect_sc
_sc_json: Dict[Text, Text] = configs.get("subsystem_component")
_sc_save = _sc_json.get("save")
_target_type = configs["target_type"]
_sc_output_path = _sc_json.get("filename")
if _recollect_sc:
logging.info(
"satrt scanning subsystem_name and component via get_subsystem_comonent.py")
sub_com_dict: Dict = SC.run(project_path, _sc_output_path, _sc_save)
else:
with open(_sc_output_path, 'r', encoding='utf-8') as f:
sub_com_dict = json.load(f)
collector_config: Tuple[BaseProcessor] = (
DefaultProcessor(project_path=project_path,
result_dict=result_dict,
target_type=_target_type[0],
match_pattern=fr"^( *){_target_type[0]}\(.*?\)",
sub_com_dict=sub_com_dict,
target_name_parser=TargetNameParser.single_parser,
other_info_handlers={
"extension": extension_handler,
},
unit_post_handler=SOPostHandler()
),
DefaultProcessor(project_path=project_path,
result_dict=result_dict,
target_type=_target_type[1],
match_pattern=fr"^( *){_target_type[1]}\(.*?\)",
sub_com_dict=sub_com_dict,
target_name_parser=TargetNameParser.single_parser,
other_info_handlers={
"extension": extension_handler,
},
unit_post_handler=SOPostHandler(),
),
DefaultProcessor(project_path=project_path,
result_dict=result_dict,
target_type=_target_type[2],
match_pattern=fr"^( *){_target_type[2]}\(.*?\)",
sub_com_dict=sub_com_dict,
target_name_parser=TargetNameParser.single_parser,
other_info_handlers={
"extension": extension_handler,
},
unit_post_handler=APostHandler(),
),
DefaultProcessor(project_path=project_path,
result_dict=result_dict,
target_type=_target_type[3],
match_pattern=fr"^( *){_target_type[3]}\(.*?\)",
sub_com_dict=sub_com_dict,
target_name_parser=TargetNameParser.single_parser,
other_info_handlers={
"extension": extension_handler,
},
unit_post_handler=APostHandler(),
),
DefaultProcessor(project_path=project_path,
result_dict=result_dict,
target_type=_target_type[4],
match_pattern=fr"^( *){_target_type[4]}\(.*?\)",
sub_com_dict=sub_com_dict,
target_name_parser=TargetNameParser.single_parser,
other_info_handlers={
"extension": extension_handler,
},
unit_post_handler=DefaultPostHandler(),
),
DefaultProcessor(project_path=project_path,
result_dict=result_dict,
target_type=_target_type[5],
match_pattern=fr"^( *){_target_type[5]}\(.*?\)",
sub_com_dict=sub_com_dict,
target_name_parser=TargetNameParser.single_parser,
other_info_handlers={
"extension": extension_handler,
},
unit_post_handler=DefaultPostHandler(),
),
DefaultProcessor(project_path=project_path,
result_dict=result_dict,
target_type=_target_type[6],
match_pattern=fr"^( *){_target_type[6]}\(.*?\)",
sub_com_dict=sub_com_dict,
target_name_parser=TargetNameParser.single_parser,
other_info_handlers={
"real_target_type": target_type_handler,
"extension": extension_handler,
},
unit_post_handler=LiteLibPostHandler(),
ud_post_handler=lite_lib_s2m_post_handler,
),
DefaultProcessor(project_path=project_path,
result_dict=result_dict,
target_type=_target_type[7],
match_pattern=fr"^( *){_target_type[7]}\(.*?\)",
sub_com_dict=sub_com_dict,
target_name_parser=TargetNameParser.single_parser,
other_info_handlers={
"hap_name": hap_name_handler,
"extension": extension_handler,
},
unit_post_handler=HAPPostHandler(),
),
StrResourceProcessor(project_path=project_path,
result_dict=result_dict,
target_type=_target_type[8],
match_pattern=fr"^( *){_target_type[8]}\(.*?\)",
sub_com_dict=sub_com_dict,
target_name_parser=TargetNameParser.single_parser,
other_info_handlers={
"extension": extension_handler,
},
unit_post_handler=DefaultPostHandler(),
resource_field="source"
),
StrResourceProcessor(project_path=project_path,
result_dict=result_dict,
target_type=_target_type[9],
match_pattern=fr"^( *){_target_type[9]}\(.*?\)",
sub_com_dict=sub_com_dict,
target_name_parser=TargetNameParser.single_parser,
other_info_handlers={
"extension": extension_handler,
},
unit_post_handler=DefaultPostHandler(),
resource_field="source"
),
ListResourceProcessor(project_path=project_path,
result_dict=result_dict,
target_type=_target_type[10],
match_pattern=fr"^( *){_target_type[10]}\(.*?\)",
sub_com_dict=sub_com_dict,
target_name_parser=TargetNameParser.single_parser,
other_info_handlers={
"extension": extension_handler,
},
unit_post_handler=DefaultPostHandler(),
resource_field="sources"
),
StrResourceProcessor(project_path=project_path,
result_dict=result_dict,
target_type=_target_type[11],
match_pattern=fr"^( *){_target_type[11]}\(.*?\)",
sub_com_dict=sub_com_dict,
target_name_parser=TargetNameParser.single_parser,
other_info_handlers={
},
unit_post_handler=DefaultPostHandler(),
resource_field="source"
),
DefaultProcessor(project_path=project_path,
result_dict=result_dict,
target_type=_target_type[12],
match_pattern=fr"^( *){_target_type[12]}\(.*?\)",
sub_com_dict=sub_com_dict,
target_name_parser=TargetNameParser.single_parser,
other_info_handlers={
"real_target_type": target_type_handler,
},
unit_post_handler=LiteComponentPostHandler(),
),
DefaultProcessor(project_path=project_path,
result_dict=result_dict,
target_type=_target_type[13],
match_pattern=fr"^( *){_target_type[13]}\(.*?\, .*?\)",
sub_com_dict=sub_com_dict,
target_name_parser=TargetNameParser.second_parser,
other_info_handlers={
},
unit_post_handler=DefaultPostHandler(),
ud_post_handler=target_s2m_post_handler
),
DefaultProcessor(project_path=project_path,
result_dict=result_dict,
target_type=_target_type[14],
match_pattern=fr"^( *){_target_type[14]}\(.*?\)",
sub_com_dict=sub_com_dict,
target_name_parser=TargetNameParser.single_parser,
other_info_handlers={
"output_extension":extension_handler
},
unit_post_handler=UnittestPostHandler(),
),
DefaultProcessor(project_path=project_path,
result_dict=result_dict,
target_type=_target_type[15],
match_pattern=fr"^( *){_target_type[15]}\(.*?\)",
sub_com_dict=sub_com_dict,
target_name_parser=TargetNameParser.single_parser,
other_info_handlers={
"hap_name": hap_name_handler,
"mode": mod_handler,
},
unit_post_handler=HapPackPostHandler(),
),
ListResourceProcessor(project_path=project_path,
result_dict=result_dict,
target_type=_target_type[16],
match_pattern=fr"^( *){_target_type[16]}\(.*?\)",
sub_com_dict=sub_com_dict,
target_name_parser=TargetNameParser.single_parser,
other_info_handlers={
},
unit_post_handler=DefaultPostHandler(),
resource_field="sources"
),
)