17777dab0Sopenharmony_ci#!/usr/bin/env python
27777dab0Sopenharmony_ci# -*- coding: utf-8 -*-
37777dab0Sopenharmony_ci# Copyright (c) 2023 Huawei Device Co., Ltd.
47777dab0Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
57777dab0Sopenharmony_ci# you may not use this file except in compliance with the License.
67777dab0Sopenharmony_ci# You may obtain a copy of the License at
77777dab0Sopenharmony_ci#
87777dab0Sopenharmony_ci#     http://www.apache.org/licenses/LICENSE-2.0
97777dab0Sopenharmony_ci#
107777dab0Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software
117777dab0Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
127777dab0Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137777dab0Sopenharmony_ci# See the License for the specific language governing permissions and
147777dab0Sopenharmony_ci# limitations under the License.
157777dab0Sopenharmony_ci
167777dab0Sopenharmony_ciimport enum
177777dab0Sopenharmony_cifrom coreImpl.parser import parser
187777dab0Sopenharmony_cifrom coreImpl.check import check, check_syntax
197777dab0Sopenharmony_cifrom coreImpl.diff import diff
207777dab0Sopenharmony_ci
217777dab0Sopenharmony_ci
227777dab0Sopenharmony_ciclass ToolNameType(enum.Enum):
237777dab0Sopenharmony_ci    COLLECT = 'collect'
247777dab0Sopenharmony_ci    DIFF = 'diff'
257777dab0Sopenharmony_ci    CHECK = 'check'
267777dab0Sopenharmony_ci    COLLECT_H = 'collect_h'
277777dab0Sopenharmony_ci    COLLECT_FILE = 'collect_file'
287777dab0Sopenharmony_ci    CHECK_SYNTAX = 'check_syntax'
297777dab0Sopenharmony_ci
307777dab0Sopenharmony_ci
317777dab0Sopenharmony_citool_name_type_set = [
327777dab0Sopenharmony_ci    member.value for name_tool,
337777dab0Sopenharmony_ci    member in ToolNameType.__members__.items()
347777dab0Sopenharmony_ci]
357777dab0Sopenharmony_ci
367777dab0Sopenharmony_ci
377777dab0Sopenharmony_ciclass FormatType(enum.Enum):
387777dab0Sopenharmony_ci    JSON = 'json'
397777dab0Sopenharmony_ci    EXCEL = 'excel'
407777dab0Sopenharmony_ci
417777dab0Sopenharmony_ci
427777dab0Sopenharmony_ciformat_set = [
437777dab0Sopenharmony_ci    member.value for name_format,
447777dab0Sopenharmony_ci    member in FormatType.__members__.items()
457777dab0Sopenharmony_ci]
467777dab0Sopenharmony_ci
477777dab0Sopenharmony_ci
487777dab0Sopenharmony_cidef run_tools(options):
497777dab0Sopenharmony_ci    tool_name = options.tool_name
507777dab0Sopenharmony_ci    print(tool_name)
517777dab0Sopenharmony_ci    if tool_name == ToolNameType["COLLECT"].value:
527777dab0Sopenharmony_ci        parser.parser(options.parser_path)
537777dab0Sopenharmony_ci    elif tool_name == ToolNameType["DIFF"].value:
547777dab0Sopenharmony_ci        diff.process_dir(options.diff_path_old, options.diff_path_new, options.output_path)
557777dab0Sopenharmony_ci    elif tool_name == ToolNameType["CHECK"].value:
567777dab0Sopenharmony_ci        check.curr_entry(options.path, options.checker, options.output)
577777dab0Sopenharmony_ci    elif tool_name == ToolNameType['COLLECT_H'].value:
587777dab0Sopenharmony_ci        parser.parser_direct(options.parser_path, options.dependent_path)
597777dab0Sopenharmony_ci    elif tool_name == ToolNameType['COLLECT_FILE'].value:
607777dab0Sopenharmony_ci        parser.parser_file_level(options.output_path)
617777dab0Sopenharmony_ci    elif tool_name == ToolNameType['CHECK_SYNTAX'].value:
627777dab0Sopenharmony_ci        check_syntax.check_syntax_entrance(options.parser_path, options.dependent_path, options.output_path)
637777dab0Sopenharmony_ci    else:
647777dab0Sopenharmony_ci        print("工具名称错误")
657777dab0Sopenharmony_ci
667777dab0Sopenharmony_ci
677777dab0Sopenharmony_ciclass Config(object):
687777dab0Sopenharmony_ci    name = 'parser'
697777dab0Sopenharmony_ci    version = '0.1.0'
707777dab0Sopenharmony_ci    description = 'Compare the parser the NDKS'
717777dab0Sopenharmony_ci    commands = [
727777dab0Sopenharmony_ci        {
737777dab0Sopenharmony_ci            "name": "--tool-name",
747777dab0Sopenharmony_ci            "abbr": "-N",
757777dab0Sopenharmony_ci            "required": False,
767777dab0Sopenharmony_ci            "choices": tool_name_type_set,
777777dab0Sopenharmony_ci            "type": str,
787777dab0Sopenharmony_ci            "default": ToolNameType["CHECK"].value,
797777dab0Sopenharmony_ci            "help": "工具名称,命令中不写-N的话,默认为check工具"
807777dab0Sopenharmony_ci        },
817777dab0Sopenharmony_ci        {
827777dab0Sopenharmony_ci            "name": "--parser-path",
837777dab0Sopenharmony_ci            "abbr": "-P",
847777dab0Sopenharmony_ci            "required": False,
857777dab0Sopenharmony_ci            "type": str,
867777dab0Sopenharmony_ci            "help": "解析路径"
877777dab0Sopenharmony_ci        },
887777dab0Sopenharmony_ci        {
897777dab0Sopenharmony_ci            "name": "--output-path",
907777dab0Sopenharmony_ci            "abbr": "-O",
917777dab0Sopenharmony_ci            "required": False,
927777dab0Sopenharmony_ci            "type": str,
937777dab0Sopenharmony_ci            "help": "工具输出文件路径"
947777dab0Sopenharmony_ci        },
957777dab0Sopenharmony_ci        {
967777dab0Sopenharmony_ci            "name": "--dependent-path",
977777dab0Sopenharmony_ci            "abbr": "-D",
987777dab0Sopenharmony_ci            "required": False,
997777dab0Sopenharmony_ci            "type": str,
1007777dab0Sopenharmony_ci            "help": "依赖文件路径"
1017777dab0Sopenharmony_ci        },
1027777dab0Sopenharmony_ci        {
1037777dab0Sopenharmony_ci            "name": "--codecheck--path",
1047777dab0Sopenharmony_ci            "abbr": "--path",
1057777dab0Sopenharmony_ci            "required": False,
1067777dab0Sopenharmony_ci            "type": str,
1077777dab0Sopenharmony_ci            "help": "codecheck解析文件路径"
1087777dab0Sopenharmony_ci        },
1097777dab0Sopenharmony_ci        {
1107777dab0Sopenharmony_ci            "name": "--check-command",
1117777dab0Sopenharmony_ci            "abbr": "--checker",
1127777dab0Sopenharmony_ci            "required": False,
1137777dab0Sopenharmony_ci            "type": str,
1147777dab0Sopenharmony_ci            "help": "校验命令"
1157777dab0Sopenharmony_ci        },
1167777dab0Sopenharmony_ci        {
1177777dab0Sopenharmony_ci            "name": "--check-output",
1187777dab0Sopenharmony_ci            "abbr": "--output",
1197777dab0Sopenharmony_ci            "required": False,
1207777dab0Sopenharmony_ci            "type": str,
1217777dab0Sopenharmony_ci            "help": "输出路径"
1227777dab0Sopenharmony_ci        },
1237777dab0Sopenharmony_ci        {
1247777dab0Sopenharmony_ci            "name": "--diff-path-old",
1257777dab0Sopenharmony_ci            "abbr": "-old",
1267777dab0Sopenharmony_ci            "required": False,
1277777dab0Sopenharmony_ci            "type": str,
1287777dab0Sopenharmony_ci            "help": "旧文件路径"
1297777dab0Sopenharmony_ci        },
1307777dab0Sopenharmony_ci        {
1317777dab0Sopenharmony_ci            "name": "--diff-path-new",
1327777dab0Sopenharmony_ci            "abbr": "-new",
1337777dab0Sopenharmony_ci            "required": False,
1347777dab0Sopenharmony_ci            "type": str,
1357777dab0Sopenharmony_ci            "help": "新文件路径"
1367777dab0Sopenharmony_ci        }
1377777dab0Sopenharmony_ci
1387777dab0Sopenharmony_ci    ]
139