#!/usr/bin/env python3
# -*- encoding: utf-8 -*-
'''
@File    :   __init__.py
@Time    :   2020/10/11 14:43:10
@Author  :   Kyomotoi
@Contact :   kyomotoiowo@gmail.com
@Github  :   https://github.com/Kyomotoi
@License :   Copyright © 2018-2020 Kyomotoi, All Rights Reserved.
'''
__author__ = 'kyomotoi'

import json
import string
from pathlib import Path
from random import sample
from typing import Optional
from datetime import datetime
from traceback import format_exc


def errorRepo(repo_msg: Optional[str] = None) -> str:
    '''
    出错时返回错误堆栈

    :return: str
    '''
    file_error = Path('.') / 'ATRI' / 'data' / 'data_Error' / 'error.json'
    try:
        with open(file_error, 'r') as f:
            data_error = json.load(f)
    except FileNotFoundError:
        data_error = {}

    key_error = ''.join(sample(string.ascii_letters + string.digits, 16))
    msg_error = f"{datetime.now()}\n"
    msg_error = f"{format_exc()}"
    data_error[f"{key_error}"] = f"{msg_error}"

    with open(file_error, 'w') as f:
        f.write(json.dumps(data_error))
        f.close()

    if repo_msg:
        pass
    else:
        repo_msg = 'unknown'

    msg0 = f'ERROR! Reason: [{repo_msg}]\n'
    msg0 += f'trackID: {key_error}\n'
    msg0 += "请使用[来杯红茶]功能以联系维护者\n"
    msg0 += "并附上 trackID"

    return msg0