13af6ab5fSopenharmony_ci#!/usr/bin/env python3
23af6ab5fSopenharmony_ci# coding=utf-8
33af6ab5fSopenharmony_ci#
43af6ab5fSopenharmony_ci# Copyright (c) 2024 Huawei Device Co., Ltd.
53af6ab5fSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License");
63af6ab5fSopenharmony_ci# you may not use this file except in compliance with the License.
73af6ab5fSopenharmony_ci# You may obtain a copy of the License at
83af6ab5fSopenharmony_ci#
93af6ab5fSopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0
103af6ab5fSopenharmony_ci#
113af6ab5fSopenharmony_ci# Unless required by applicable law or agreed to in writing, software
123af6ab5fSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS,
133af6ab5fSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
143af6ab5fSopenharmony_ci# See the License for the specific language governing permissions and
153af6ab5fSopenharmony_ci# limitations under the License.
163af6ab5fSopenharmony_ci
173af6ab5fSopenharmony_ci
183af6ab5fSopenharmony_ci"""Module provides system functions like logging and open files."""
193af6ab5fSopenharmony_ciimport os
203af6ab5fSopenharmony_ci
213af6ab5fSopenharmony_ciLOGGING = 0
223af6ab5fSopenharmony_ciDEBUG_LOGGING = 0
233af6ab5fSopenharmony_ciINFO_LOGGING = 1
243af6ab5fSopenharmony_ciWARNING_LOGGING = 1
253af6ab5fSopenharmony_ciERROR_LOGGIN = 1
263af6ab5fSopenharmony_ciPARSING_LOGGING = 0
273af6ab5fSopenharmony_ci
283af6ab5fSopenharmony_ci
293af6ab5fSopenharmony_ciLIB_GEN_FOLDER: str = ""
303af6ab5fSopenharmony_ci
313af6ab5fSopenharmony_ci
323af6ab5fSopenharmony_cidef init_log(lib_gen_folder: str) -> None:
333af6ab5fSopenharmony_ci    global LIB_GEN_FOLDER  # pylint: disable=W0603
343af6ab5fSopenharmony_ci    LIB_GEN_FOLDER = lib_gen_folder
353af6ab5fSopenharmony_ci    os.makedirs(os.path.join(LIB_GEN_FOLDER, "./gen/logs"), exist_ok=True)
363af6ab5fSopenharmony_ci
373af6ab5fSopenharmony_ci
383af6ab5fSopenharmony_cidef debug_log(msg: str) -> None:
393af6ab5fSopenharmony_ci    if DEBUG_LOGGING:
403af6ab5fSopenharmony_ci        print(msg)
413af6ab5fSopenharmony_ci
423af6ab5fSopenharmony_ci
433af6ab5fSopenharmony_cidef console_log(msg: str) -> None:
443af6ab5fSopenharmony_ci    if LOGGING:
453af6ab5fSopenharmony_ci        print(msg)
463af6ab5fSopenharmony_ci
473af6ab5fSopenharmony_ci
483af6ab5fSopenharmony_cidef info_log(msg: str) -> None:
493af6ab5fSopenharmony_ci    if INFO_LOGGING:
503af6ab5fSopenharmony_ci        print(msg)
513af6ab5fSopenharmony_ci
523af6ab5fSopenharmony_ci
533af6ab5fSopenharmony_cidef warning_log(msg: str) -> None:
543af6ab5fSopenharmony_ci    path = os.path.join(LIB_GEN_FOLDER, "./gen/logs/warning_logs.txt")
553af6ab5fSopenharmony_ci    if WARNING_LOGGING:
563af6ab5fSopenharmony_ci        with os.fdopen(os.open(path, os.O_WRONLY | os.O_CREAT | os.O_APPEND, mode=511), "a", encoding="utf-8") as f:
573af6ab5fSopenharmony_ci            f.write("Warning! " + msg + "\n")
583af6ab5fSopenharmony_ci
593af6ab5fSopenharmony_ci
603af6ab5fSopenharmony_cidef error_log(msg: str) -> None:
613af6ab5fSopenharmony_ci    path = os.path.join(LIB_GEN_FOLDER, "./gen/logs/error_logs.txt")
623af6ab5fSopenharmony_ci    if ERROR_LOGGIN:
633af6ab5fSopenharmony_ci        with os.fdopen(os.open(path, os.O_WRONLY | os.O_CREAT | os.O_APPEND, mode=511), "a", encoding="utf-8") as f:
643af6ab5fSopenharmony_ci            f.write(msg)
653af6ab5fSopenharmony_ci
663af6ab5fSopenharmony_ci
673af6ab5fSopenharmony_cidef parsing_log(msg: str) -> None:
683af6ab5fSopenharmony_ci    if PARSING_LOGGING:
693af6ab5fSopenharmony_ci        print(msg)
703af6ab5fSopenharmony_ci
713af6ab5fSopenharmony_ci
723af6ab5fSopenharmony_cidef tmp_log(msg: str) -> None:
733af6ab5fSopenharmony_ci    print(msg)
743af6ab5fSopenharmony_ci
753af6ab5fSopenharmony_ci
763af6ab5fSopenharmony_cidef dump_to_file(file_name: str, msg: str) -> None:
773af6ab5fSopenharmony_ci    path = LIB_GEN_FOLDER + file_name
783af6ab5fSopenharmony_ci    with os.fdopen(os.open(path, os.O_WRONLY | os.O_CREAT, mode=511), "w", encoding="utf-8") as f:
793af6ab5fSopenharmony_ci        f.write(msg)
803af6ab5fSopenharmony_ci    console_log("Data dumped to '" + path + "'")
81