57 lines
2.0 KiB
Python
57 lines
2.0 KiB
Python
import os
|
|
import traceback
|
|
|
|
import yaml
|
|
|
|
from . import logger
|
|
|
|
|
|
class SupportYaml(object):
|
|
@classmethod
|
|
def write_yaml(cls, filepath, data):
|
|
with open(filepath, 'w', encoding='utf8') as f:
|
|
yaml.dump(data, f, default_flow_style=False, allow_unicode=True)
|
|
|
|
@classmethod
|
|
def read_yaml(self, filepath):
|
|
with open(filepath, encoding='utf8') as file:
|
|
data = yaml.load(file, Loader=yaml.FullLoader)
|
|
return data
|
|
|
|
|
|
@classmethod
|
|
def copy_section(cls, source_file, target_file, section_name):
|
|
from support import SupportFile
|
|
try:
|
|
if os.path.exists(source_file) == False:
|
|
return 'not_exist_source_file'
|
|
if os.path.exists(target_file) == False:
|
|
return 'not_exist_target_file'
|
|
lines = SupportFile.read_file(source_file).split('\n')
|
|
section = {}
|
|
current_section_name = None
|
|
current_section_data = None
|
|
|
|
for line in lines:
|
|
line = line.strip()
|
|
if line.startswith('# SECTION START : '):
|
|
current_section_name = line.split(':')[1].strip()
|
|
current_section_data = []
|
|
if current_section_data is not None:
|
|
current_section_data.append(line)
|
|
if line.startswith('# SECTION END'):
|
|
section[current_section_name] = current_section_data
|
|
current_section_name = current_section_data = None
|
|
|
|
if section_name not in section:
|
|
return 'not_include_section'
|
|
|
|
data = '\n'.join(section[section_name])
|
|
source_data = SupportFile.read_file(target_file)
|
|
source_data = source_data + f"\n{data}\n"
|
|
SupportFile.write_file(target_file, source_data)
|
|
return 'success'
|
|
except Exception as e:
|
|
logger.error(f"Exception:{str(e)}")
|
|
logger.error(traceback.format_exc())
|
|
return 'exception' |