"""音创系列版本号和版本操作函数"""
# 统计：致命（三级）错误：0个；警告（二级）错误：0个；语法（一级）错误：24个


from msctspt.bugReporter import version
import os

# 以下下两个值请在 msctspt/bugReporter 的version类中修改
VER = version.version
"""当前版本"""

LIBS = version.libraries
"""当前所需库"""


# 判断版本、临时文件与补全库
def compver(ver1, ver2):
    """
    传入不带英文的版本号,特殊情况："10.12.2.6.5">"10.12.2.6"
    :param ver1: 版本号1
    :param ver2: 版本号2
    :return: ver1< = >ver2返回-1/0/1
    """
    list1 = str(ver1).split(".")
    list2 = str(ver2).split(".")
    # 循环次数为短的列表的len
    for i in range(len(list1)) if len(list1) < len(list2) else range(len(list2)):
        if int(list1[i]) == int(list2[i]):
            pass
        elif int(list1[i]) < int(list2[i]):
            return -1
        else:
            return 1
    # 循环结束，哪个列表长哪个版本号高
    if len(list1) == len(list2):
        return 0
    elif len(list1) < len(list2):
        return -1
    else:
        return 1


#
# ————————————————
# 版权声明：上面的函数compver为CSDN博主「基友死得早」的原创文章中的函数，遵循CC 4.0 BY-SA版权协议，转载请附上原文出处链接及本声明。
# 原文链接：https://blog.csdn.net/tinyjm/article/details/93514261
# ————————————————
#


def InstallLibs(now, LIBS1):
    """比对库信息并安装库"""
    from os import system as run
    for i in LIBS1:
        if i not in now:
            print("安装库：" + i)
            run("python -m pip install " + i + " -i https://pypi.tuna.tsinghua.edu.cn/simple")


def chkver(ver=VER, libs=LIBS):
    """通过文件比对版本信息并安装库"""
    if not os.path.exists(os.getenv('APPDATA') + '\\Musicreater\\msct.ActiveDatas.msct'):
        print("新安装库")
        os.makedirs(os.getenv('APPDATA') + '\\Musicreater\\')
        with open(os.getenv('APPDATA') + '\\Musicreater\\msct.ActiveDatas.msct', 'w') as f:
            f.write(ver[0] + '\n')
            for i in libs:
                f.write(i + '\n')
        InstallLibs([], libs)
    else:
        with open(os.getenv('APPDATA') + '\\Musicreater\\msct.ActiveDatas.msct', 'r') as f:
            v = f.readlines()
        cp = compver(ver[0], v[0])
        if cp != 0:
            InstallLibs(v[1:], libs)
            with open(os.getenv('APPDATA') + '\\Musicreater\\msct.ActiveDatas.msct', 'w') as f:
                f.write(ver[0] + '\n')
                for i in libs:
                    f.write(i + '\n')
        del cp


def resetver():
    """重置版本信息"""
    import shutil
    shutil.rmtree(os.getenv('APPDATA') + '\\Musicreater\\')
