From 8db3eb12414de87b7cceb5bde2b81264c75fc5cf Mon Sep 17 00:00:00 2001 From: Faker Date: Wed, 27 Mar 2024 23:23:50 +0800 Subject: [PATCH] expired --- jd_ql_log_scan.py | 270 --------------- jd_scripts_check_dependence.py | 606 --------------------------------- 2 files changed, 876 deletions(-) delete mode 100644 jd_ql_log_scan.py delete mode 100644 jd_scripts_check_dependence.py diff --git a/jd_ql_log_scan.py b/jd_ql_log_scan.py deleted file mode 100644 index 93f0ba9..0000000 --- a/jd_ql_log_scan.py +++ /dev/null @@ -1,270 +0,0 @@ -import json -import os -import re -import time -import sys -import subprocess -import traceback -from depend import Depend - -''' -cron: 30 23 * * * -new Env('青龙日志分析 && 自动补全依赖'); -########环境变量设置######### - -## (非必填) 脚本唯一性检测,请在此处填写你想运行的脚本的绝对路径,其他脚本检测到路径与此变量不符将会停止运行 -QL_LOG_SCAN_SCRIPT_PATH= - -## (非必填)指定日志目录: 默认自动识别青龙目录,出现错误才需要手动指定日志目录 -export QL_LOG_PATH="/ql/data/log/" - -## (非必填)指定不扫描目录:多个请用逗号隔开 -export QL_LOG_BLACK_DIR="" - -## (非必填)指定不扫描日志文件:多个请用逗号隔开 -export QL_LOG_BLACK_FILE="" - -## (非必填)需要被扫描的最近n天的日志,0就是只分析当天的日志(最近24小时的日志) -export QL_LOG_SCAN_DEEPIN=0 - -## (非必填)是否尝试自动补齐日志报错里提示的依赖 -export QL_LOG_AUTO_INSTALL_DEPEND=False - -## (非必填)强制指定npm包管理器,有些青龙使用了pnpm而不是npm,注意鉴别 -export QL_LOG_NPM="npm" -''' - - -class QlLogScan(Depend): - def __init__(self): - self.pyname = os.path.basename(__file__).replace(".py", "") - print(self.only_check(self.pyname, os.path.abspath(__file__),"QL_LOG_SCAN_SCRIPT_PATH")) - self.ql_log_path = self.get_env("QL_LOG_PATH", self.get_ql_path() + "log/") - self.filter_dir_list = self.not2append(["^\.tmp$", "^update$", self.pyname + "$"], - self.str2list(self.get_env("QL_LOG_BLACK_DIR"))) - self.filter_log_list = self.not2append(['task_error\.log', 'start\.log'], - self.str2list(self.get_env("QL_LOG_BLACK_FILE"))) - self.history_scan_deepin = self.get_env("QL_LOG_SCAN_DEEPIN", "0") - self.auto_install_depend = self.get_env("QL_LOG_AUTO_INSTALL_DEPEND", False) - self.npm = self.get_env("QL_LOG_NPM", "npm") - self.log_stat = { - "all": 0, - "nodejs_err": 0, - "python_err": 0, - "err_dict": {}, - "nodejs_depend": [], - "python_depend": [], - "readlog_err" :[] - } - self.LogNameHeadList = self.generateLogNameHeadList() - self.analysisLog() - self.showAnalysisLog() - if self.auto_install_depend: - self.auto_depend() - - def generateLogNameHeadList(self): - scan_list = [] - for i in range((self.history_scan_deepin + 1) * 24): - scan_list.append(time.strftime("%Y-%m-%d-%H", time.localtime((int(time.time()) - (3600 * i))))) - return scan_list - - def analysisLog(self): - for path, dir_list, file_list in os.walk(self.ql_log_path): - dir_name = path.replace(self.ql_log_path, "") - if not self.re_filter_list(dir_name, self.filter_dir_list): - for file_name in file_list: - if not self.re_filter_list(file_name, self.filter_log_list) and re.search(r"(.*?).log$", - file_name) and file_name[ - :13] in self.LogNameHeadList: - # 读取日志 - log_file = open(os.path.join(path, file_name), "r") - try: - log_text = log_file.read(2097152) - log_file.close() - # 分析日志 - nodejs_err_list = re.findall(r"Error\:(.*\s?)Require stack\:", log_text) - python_err_list = re.findall( - r"Traceback \(most recent call last\):([\n\s]+File[\s\S]*?, line [\d]+, in[\s\S]*?[" - r"\s\S]*?\n[\s\S]*?\n)+(.*?)\n", - log_text) - if nodejs_err_list: - self.log_stat["nodejs_err"] += len(nodejs_err_list) - self.log_stat["err_dict"][dir_name] = [] - for i in nodejs_err_list: - v = i.strip() - self.log_stat["err_dict"][dir_name].append({"type": "NodeJs", "log": v}) - # 依赖缺失判断 - miss_depend = re.search(r"Cannot find module '([a-zA-Z\d_-]+)'", v) - if miss_depend and miss_depend.group(1) not in self.log_stat["nodejs_depend"]: - self.log_stat["nodejs_depend"].append(miss_depend.group(1)) - elif python_err_list: - self.log_stat["python_err"] += len(python_err_list) - self.log_stat["err_dict"][dir_name] = [] - for i in python_err_list: - v = i[-1].strip() - self.log_stat["err_dict"][dir_name].append({"type": "Python", "log": v}) - # 依赖缺失判断 - miss_depend = re.search(r"ModuleNotFoundError: No module named \'([a-zA-Z0-9_-]+)\'", v) - if miss_depend and miss_depend.group(1) not in self.log_stat["python_depend"]: - self.log_stat["python_depend"].append(miss_depend.group(1)) - self.log_stat["all"] += 1 - except Exception as e: - err_log = "读取日志" + str(os.path.join(path, file_name)) + "出现异常: " + str(e) + "\n" - self.log_stat["readlog_err"].append(err_log) - print(err_log) - - - @staticmethod - def format_log_date(text): - text = text.split("-") - return text[0] + "年" + text[1] + "月" + text[2] + "日" + text[3] + "时" - - def showAnalysisLog(self): - len_nodejs_depend = len(self.log_stat["nodejs_depend"]) - len_python_depend = len(self.log_stat["python_depend"]) - # 展示分析结果 - result = "📆分析 " + ( - self.format_log_date(self.LogNameHeadList[0]) + " ~ " + self.format_log_date( - self.LogNameHeadList[-1]) if len(self.LogNameHeadList) != 1 else - self.LogNameHeadList[ - 0]) + " 的日志报告:\n" - if len(self.log_stat["readlog_err"]) != 0: - result += "🔍脚本在读取日志过程中,出现了" + str(len(self.log_stat["readlog_err"])) + "个异常,详细信息将在最后展示\n" - result += "✅正常运行脚本:" + str(self.log_stat["all"]) + " 次\n" - if self.log_stat["all"] != 0: - result += "⛔异常运行脚本:" + str(self.log_stat["nodejs_err"] + self.log_stat["python_err"]) + " 次,占比 " + str( - round( - (float(self.log_stat["nodejs_err"] + self.log_stat["python_err"]) / float( - self.log_stat["all"]) * 100), - 2)) + " %\n" - result += "🧐其中:\n" - result += " 🕵️‍♂️Nodejs异常:" + str(self.log_stat["nodejs_err"]) + " 次,占比 " + str( - round((float(self.log_stat["nodejs_err"]) / float(self.log_stat["all"]) * 100), 2)) + " %\n" - result += " 🕵️‍♂️Python异常:" + str(self.log_stat["python_err"]) + " 次,占比 " + str( - round((float(self.log_stat["python_err"]) / float(self.log_stat["all"]) * 100), 2)) + " %\n" - if len_nodejs_depend > 0 or len_python_depend > 0: - result += "👮‍♂️依赖检测: " + ( - "☢已开启自动补全依赖,将执行shell命令,请小心恶意脚本👿" if self.auto_install_depend else "❎未开启自动补全依赖,请手动补齐以下依赖🤗") + "\n" - if len_nodejs_depend > 0: - result += "👮‍♂️检测到缺失NodeJs依赖:\n" - result += str(self.log_stat["nodejs_depend"]) + "\n" - if len_python_depend > 0: - result += "👮‍♂️检测到缺失Python依赖:\n" - result += str(self.log_stat["python_depend"]) + "\n" - result += "💂‍♂️详细错误日志:\n\n" - - for k, v in self.log_stat["err_dict"].items(): - if v: - result += "🛑脚本:" + k + ":\n" - for i in v: - result += "- ⚠" + i["type"] + "错误:" + i["log"] + " \n\n\n" - if len(self.log_stat["readlog_err"]) != 0: - result += "👷‍♀️读取日志异常日志:\n\n" - for i in self.log_stat["readlog_err"]: - result += "⚠" + i + "\n" - send("🐲青龙日志分析", result) - return result - - def auto_depend(self): - len_nodejs_depend = len(self.log_stat["nodejs_depend"]) - len_python_depend = len(self.log_stat["python_depend"]) - len_all_depend = len_nodejs_depend + len_python_depend - if len_nodejs_depend > 0: - for i in range(len_nodejs_depend): - shell_log = "🤖检测是否安装NodeJs依赖: " + self.log_stat["nodejs_depend"][i] + "\n" - check_result = self.check_depend(self.log_stat["nodejs_depend"][i], "nodejs") - if check_result: - shell_log += "📦" + str(check_result) + "已安装, 跳过安装\n" - else: - shell_log += "⚙当前正在自动安装NodeJs依赖: " + self.log_stat["nodejs_depend"][i] + "\n" - install_result = self.install_depend(self.log_stat["nodejs_depend"][i], "nodejs") - shell_log += "🔨执行命令: " + install_result[0] + "\n" - if install_result[2] != '': - shell_log += "⛔出错了: \n" + install_result[2] + "\n\n" - elif install_result[1] != '': - shell_log += "✅执行完成: \n" + install_result[1] + "\n\n" - send("🐲青龙自动安装依赖(" + str(i + 1) + "/" + str(len_all_depend) + ")", shell_log) - if len_python_depend > 0: - for i in range(len_python_depend): - shell_log = "🤖检测是否安装Python依赖: " + self.log_stat["python_depend"][i] + "\n" - check_result = self.check_depend(self.log_stat["python_depend"][i], "python") - if check_result: - shell_log += "📦" + str(check_result) + "已安装, 跳过安装\n" - else: - shell_log += "⚙当前正在自动安装Python依赖: " + self.log_stat["python_depend"][i] + "\n" - install_result = self.install_depend(self.log_stat["python_depend"][i], "python") - shell_log += "🔨执行命令: " + install_result[0] + "\n" - if install_result[2] != '': - shell_log += "⛔出错了: \n" + install_result[2] + "\n\n" - elif install_result[1] != '': - shell_log += "✅执行完成: \n" + install_result[1] + "\n\n" - send("🐲青龙自动安装依赖(" + str(i + 1 + len_nodejs_depend) + "/" + str(len_all_depend) + ")", shell_log) - - def install_depend(self, package, package_type): - package = package.replace("+", "\+") - if package_type == "nodejs": - install_exec = 'cd /ql/ && ' + self.npm + ' install ' + package - elif package_type == "python": - install_exec = 'pip3 install ' + package - elif package_type == "docker": - install_exec = 'apk update && apk add ' + package - - if install_exec: - install = subprocess.run(install_exec, shell=True, capture_output=True, text=True) - install_log = install.stdout - install_err = install.stderr - return install_exec, install_log, install_err - else: - return None - - def check_depend(self, package, package_type): - package = package.replace("+", "\+") - if package_type == "nodejs": - list_exec = 'cd /ql/ && ' + self.npm + ' list|grep ' + package - list_log = subprocess.run(list_exec, shell=True, capture_output=True, text=True).stdout - npm_re = re.search(r"[\s]" + package + "@[\d.]+", list_log) - pnpm_re = re.search(r"^" + package + " [\d.]+", list_log) - if npm_re: - return npm_re.group() - elif pnpm_re: - return pnpm_re.group() - else: - return None - elif package_type == "python": - list_exec = 'pip3 list|grep ' + package - list_log = subprocess.run(list_exec, shell=True, capture_output=True, text=True).stdout - pip_re = re.search(package + "[ ]+[\d.]+", list_log) - if pip_re: - return pip_re.group() - else: - return None - elif package_type == "docker": - list_exec = 'apk list|grep ' + package - list_log = subprocess.run(list_exec, shell=True, capture_output=True, text=True).stdout - docker_re = re.search(package + "-[\d.]+", list_log) - if docker_re: - return docker_re.group() - else: - return None - else: - return None - - -def load_send(): - global send - cur_path = os.path.abspath(os.path.dirname(__file__)) - sys.path.append(cur_path) - if os.path.exists(cur_path + "/notify.py"): - try: - from notify import send - except: - send = False - print("加载通知服务失败~") - else: - send = False - print("加载通知服务失败~") - - -if __name__ == '__main__': - load_send() - ql = QlLogScan() diff --git a/jd_scripts_check_dependence.py b/jd_scripts_check_dependence.py deleted file mode 100644 index 088e0de..0000000 --- a/jd_scripts_check_dependence.py +++ /dev/null @@ -1,606 +0,0 @@ -# -*- coding:utf-8 -*- -# 作者仓库:https://jihulab.com/spiritlhl/qinglong_auto_tools.git -# 觉得不错麻烦点个star谢谢 -# 频道:https://t.me/qinglong_auto_tools - - -''' -cron: 1 -new Env('单容器 二叉树修复脚本依赖文件'); -''' - -import os, requests -import os.path -import time - -# from os import popen - -# 版本号 2.10.9 ,其他环境自测 -# 只修复依赖文件(jdCookie.js那种)!!不修复环境依赖(pip install aiohttp)!! -# 默认不做任何操作只查询依赖脚本存在与否,有需求请在配置文件中配置对应变量进行操作,更新不会增加缺失文件 -# 如果你有发现更多的脚本依赖文件没有新增,欢迎提交issues到https://jihulab.com/spiritlhl/dependence_scripts -# 增加缺失依赖文件(推荐) -# export ec_fix_dep="true" -# 更新老旧依赖文件(慎填,默认的依赖我使用的魔改版本,非必要别选) -# export ec_ref_dep="true" - -# 2021.11.27 支持新版本仓库拉取的脚本目录结构,针对各个仓库进行依赖检索 - -txtx = "青龙配置文件中的config中填写下列变量启用对应功能\n\n增加缺失依赖文件(推荐)\n填写export ec_fix_dep=\"true\"\n更新老旧依赖文件(日常使用别填,默认的依赖我使用的魔改版本,非必要别选)\n如果选择使用请使用对应code文件等相关文件:https://jihulab.com/spiritlhl/dependence_config \n填写export ec_ref_dep=\"true\"\n" -print(txtx) - -try: - if os.environ["ec_fix_dep"] == "true": - print("已配置依赖文件缺失修复\n") - fix = 1 - else: - fix = 0 -except: - fix = 0 - print("#默认不修复缺失依赖文件,有需求") - print("#请在配置文件中配置\nexport ec_fix_dep=\"true\" \n#开启脚本依赖文件缺失修复\n") - -try: - if os.environ["ec_ref_dep"] == "true": - print("已配置依赖文件老旧更新\n") - ref = 1 - else: - ref = 0 -except: - ref = 0 - print("#默认不更新老旧依赖文件,有需求") - print("#请在配置文件中配置\nexport ec_re_dep=\"true\" #开启脚本依赖文件更新\n") - - -def traversalDir_FirstDir(path): - list = [] - if (os.path.exists(path)): - files = os.listdir(path) - for file in files: - m = os.path.join(path, file) - if (os.path.isdir(m)): - h = os.path.split(m) - list.append(h[1]) - print("文件夹名字有:") - print(list) - return list - - -def check_dependence(file_path): - try: - res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/contents.json").json() - except: - print("网络波动,稍后尝试") - time.sleep(5) - try: - res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/contents.json").json() - except: - print("网络问题无法获取仓库文件列表,终止检索") - return - - dependence_scripts_name = [] - for i in res: - dependence_scripts_name.append(i["name"]) - - if "db" in os.listdir("../"): - dir_list = os.listdir(file_path) - else: - dir_list = os.listdir("." + file_path) - - # 查询 - for i in dependence_scripts_name: - if i not in dir_list and i != "utils" and i != "function": - print("缺失文件 {}{}".format(file_path, i)) - # 修补 - try: - if fix == 1: - print("增加文件 {}{}".format(file_path, i)) - r = requests.get( - "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/" + i).text - if "db" in os.listdir("../"): - with open(file_path + i, "w", encoding="utf-8") as fe: - fe.write(r) - else: - with open("." + file_path + i, "w", encoding="utf-8") as fe: - fe.write(r) - except: - temp = 1 - - try: - if temp == 1: - print("未配置ec_fix_dep,默认不修复增加缺失的依赖文件") - except: - pass - - # 更新 - try: - if ref == 1: - for i in dependence_scripts_name: - if i != "utils" and i != "function": - if "db" in os.listdir("../"): - with open(i, "r", encoding="utf-8") as f: - r = requests.get( - "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/" + i).text - d = f.read() - if r == d: - print("无需修改 {}".format(i)) - else: - print("更新文件 {}".format(i)) - with open(file_path + i, "w", encoding="utf-8") as fe: - fe.write(r) - else: - with open(i, "r", encoding="utf-8") as f: - r = requests.get( - "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/" + i).text - d = f.read() - if r == d: - print("无需修改 {}".format(i)) - else: - print("更新文件 {}".format(i)) - with open("." + file_path + i, "w", encoding="utf-8") as fe: - fe.write(r) - - except: - print("未配置ec_ref_dep,默认不更新依赖文件") - - ######################################################################################################### - - # utils - - try: - res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils.json").json() - except: - print("网络波动,稍后尝试") - time.sleep(5) - try: - res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils.json").json() - except: - print("网络问题无法获取仓库文件列表,终止检索") - return - - dependence_scripts_utils = [] - for i in res: - dependence_scripts_utils.append(i["name"]) - - try: - if "db" in os.listdir("../"): - utils_list = os.listdir(file_path + "utils") - else: - utils_list = os.listdir("." + file_path + "utils") - except: - if "db" in os.listdir("../"): - os.makedirs(file_path + "utils") - utils_list = os.listdir(file_path + "utils") - else: - os.makedirs("." + file_path + "utils") - utils_list = os.listdir("." + file_path + "utils") - - # 查询 - for i in dependence_scripts_utils: - if i not in utils_list and i != "utils" and i != "function": - print("缺失文件 {}utils/{}".format(file_path, i)) - # 修补 - try: - if fix == 1: - print("增加文件 {}utils/{}".format(file_path, i)) - r = requests.get( - "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils/" + i).text - if "db" in os.listdir("../"): - with open(file_path + "utils/" + i, "w", encoding="utf-8") as fe: - fe.write(r) - else: - with open("." + file_path + "utils/" + i, "w", encoding="utf-8") as fe: - fe.write(r) - except: - temp = 1 - - try: - if temp == 1: - print("未配置ec_fix_dep,默认不修复增加缺失的依赖文件") - except: - pass - - # 更新 - try: - if ref == 1: - for i in dependence_scripts_utils: - if i != "utils" and i != "function": - if "db" in os.listdir("../"): - with open(file_path + "utils/" + i, "r", encoding="utf-8") as f: - r = requests.get( - "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils/" + i).text - d = f.read() - if r == d: - print("已存在文件 {}utils/{}".format(file_path, i)) - else: - print("更新文件 {}utils/{}".format(file_path, i)) - with open(file_path + "utils/" + i, "w", encoding="utf-8") as fe: - fe.write(r) - else: - with open("." + file_path + "utils/" + i, "r", encoding="utf-8") as f: - r = requests.get( - "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils/" + i).text - d = f.read() - if r == d: - print("已存在文件 {}utils/{}".format(file_path, i)) - else: - print("更新文件 {}utils/{}".format(file_path, i)) - with open("." + file_path + "utils/" + i, "w", encoding="utf-8") as fe: - fe.write(r) - except: - print("未配置ec_ref_dep,默认不更新依赖文件") - - #################################################################################################### - - # function - - try: - res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function.json").json() - except: - print("网络波动,稍后尝试") - time.sleep(5) - try: - res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function.json").json() - except: - print("网络问题无法获取仓库文件列表,终止检索") - return - - dependence_scripts_function = [] - for i in res: - dependence_scripts_function.append(i["name"]) - - try: - if "db" in os.listdir("../"): - function_list = os.listdir(file_path + "function") - else: - function_list = os.listdir("." + file_path + "function") - except: - if "db" in os.listdir("../"): - os.makedirs(file_path + "function") - function_list = os.listdir(file_path + "function") - else: - os.makedirs("." + file_path + "function") - function_list = os.listdir("." + file_path + "function") - - # 查询 - for i in dependence_scripts_function: - if i not in function_list and i != "utils" and i != "function": - print("缺失文件 {}function/{}".format(file_path, i)) - # 修补 - try: - if fix == 1: - print("增加文件 {}function/{}".format(file_path, i)) - r = requests.get( - "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function/" + i).text - if "db" in os.listdir("../"): - with open(file_path + "function/" + i, "w", encoding="utf-8") as fe: - fe.write(r) - else: - with open("." + file_path + "function/" + i, "w", encoding="utf-8") as fe: - fe.write(r) - except: - temp = 1 - - try: - if temp == 1: - print("未配置ec_fix_dep,默认不修复增加缺失的依赖文件") - except: - pass - - # 更新 - try: - if ref == 1: - for i in dependence_scripts_function: - if i != "utils" and i != "function": - if "db" in os.listdir("../"): - with open(file_path + "function/" + i, "r", encoding="utf-8") as f: - r = requests.get( - "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function/" + i).text - d = f.read() - if r == d: - print("已存在文件 {}function/{}".format(file_path, i)) - else: - print("更新文件 {}function/{}".format(file_path, i)) - with open(file_path + "function/" + i, "w", encoding="utf-8") as fe: - fe.write(r) - else: - with open("." + file_path + "function/" + i, "r", encoding="utf-8") as f: - r = requests.get( - "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function/" + i).text - d = f.read() - if r == d: - print("已存在文件 {}function/{}".format(file_path, i)) - else: - print("更新文件 {}function/{}".format(file_path, i)) - with open('.' + file_path + "function/" + i, "w", encoding="utf-8") as fe: - fe.write(r) - - except: - print("未配置ec_ref_dep,默认不更新依赖文件") - - -def check_root(): - try: - res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/contents.json").json() - except: - print("网络波动,稍后尝试") - time.sleep(5) - try: - res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/contents.json").json() - except: - print("网络问题无法获取仓库文件列表,终止检索") - return - - dependence_scripts_name = [] - for i in res: - dependence_scripts_name.append(i["name"]) - - if "db" in os.listdir("../"): - dir_list = os.listdir("./") - else: - dir_list = os.listdir("../") - - # 查询 - for i in dependence_scripts_name: - if i not in dir_list and i != "utils" and i != "function": - print("缺失文件 {}".format(i)) - # 修补 - try: - if fix == 1: - print("增加文件 {}".format(i)) - r = requests.get( - "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/" + i).text - if "db" in os.listdir("../"): - with open(i, "w", encoding="utf-8") as fe: - fe.write(r) - else: - with open("../" + i, "w", encoding="utf-8") as fe: - fe.write(r) - except: - temp = 1 - - try: - if temp == 1: - print("未配置ec_fix_dep,默认不修复增加缺失的依赖文件") - except: - pass - - # 更新 - try: - if ref == 1: - for i in dependence_scripts_name: - if i != "utils" and i != "function": - if "db" in os.listdir("../"): - with open(i, "r", encoding="utf-8") as f: - r = requests.get( - "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/" + i).text - d = f.read() - if r == d: - print("无需修改 {}".format(i)) - else: - print("更新文件 {}".format(i)) - with open(i, "w", encoding="utf-8") as fe: - fe.write(r) - else: - with open("../" + i, "r", encoding="utf-8") as f: - r = requests.get( - "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/" + i).text - d = f.read() - if r == d: - print("无需修改 {}".format(i)) - else: - print("更新文件 {}".format(i)) - with open("../" + i, "w", encoding="utf-8") as fe: - fe.write(r) - - except: - print("未配置ec_ref_dep,默认不更新依赖文件") - - ######################################################################################################### - - # utils - - try: - res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils.json").json() - except: - print("网络波动,稍后尝试") - time.sleep(5) - try: - res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils.json").json() - except: - print("网络问题无法获取仓库文件列表,终止检索") - return - - dependence_scripts_utils = [] - for i in res: - dependence_scripts_utils.append(i["name"]) - - try: - if "db" in os.listdir("../"): - utils_list = os.listdir("./utils") - else: - utils_list = os.listdir("../utils") - except: - if "db" in os.listdir("../"): - os.makedirs("utils") - utils_list = os.listdir("./utils") - else: - os.makedirs("../utils") - utils_list = os.listdir("../utils") - - # 查询 - for i in dependence_scripts_utils: - if i not in utils_list and i != "utils" and i != "function": - print("缺失文件 utils/{}".format(i)) - # 修补 - try: - if fix == 1: - print("增加文件 utils/{}".format(i)) - r = requests.get( - "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils/" + i).text - if "db" in os.listdir("../"): - with open("./utils/" + i, "w", encoding="utf-8") as fe: - fe.write(r) - else: - with open("../utils/" + i, "w", encoding="utf-8") as fe: - fe.write(r) - except: - temp = 1 - - try: - if temp == 1: - print("未配置ec_fix_dep,默认不修复增加缺失的依赖文件") - except: - pass - - # 更新 - try: - if ref == 1: - for i in dependence_scripts_utils: - if i != "utils" and i != "function": - if "db" in os.listdir("../"): - with open("./utils/" + i, "r", encoding="utf-8") as f: - r = requests.get( - "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils/" + i).text - d = f.read() - if r == d: - print("已存在文件 utils/{}".format(i)) - else: - print("更新文件 utils/{}".format(i)) - with open("./utils/" + i, "w", encoding="utf-8") as fe: - fe.write(r) - else: - with open("../utils/" + i, "r", encoding="utf-8") as f: - r = requests.get( - "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/utils/" + i).text - d = f.read() - if r == d: - print("已存在文件 utils/{}".format(i)) - else: - print("更新文件 utils/{}".format(i)) - with open("../utils/" + i, "w", encoding="utf-8") as fe: - fe.write(r) - except: - print("未配置ec_ref_dep,默认不更新依赖文件") - - #################################################################################################### - - # function - - try: - res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function.json").json() - except: - print("网络波动,稍后尝试") - time.sleep(5) - try: - res = requests.get("https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function.json").json() - except: - print("网络问题无法获取仓库文件列表,终止检索") - return - - dependence_scripts_function = [] - for i in res: - dependence_scripts_function.append(i["name"]) - - try: - if "db" in os.listdir("../"): - function_list = os.listdir("./function") - else: - function_list = os.listdir("../function") - except: - if "db" in os.listdir("../"): - os.makedirs("function") - function_list = os.listdir("./function") - else: - os.makedirs("../function") - function_list = os.listdir("../function") - - # 查询 - for i in dependence_scripts_function: - if i not in function_list and i != "utils" and i != "function": - print("缺失文件 function/{}".format(i)) - # 修补 - try: - if fix == 1: - print("增加文件 function/{}".format(i)) - r = requests.get( - "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function/" + i).text - if "db" in os.listdir("../"): - with open("./function/" + i, "w", encoding="utf-8") as fe: - fe.write(r) - else: - with open("../function/" + i, "w", encoding="utf-8") as fe: - fe.write(r) - except: - temp = 1 - - try: - if temp == 1: - print("未配置ec_fix_dep,默认不修复增加缺失的依赖文件") - except: - pass - - # 更新 - try: - if ref == 1: - for i in dependence_scripts_function: - if i != "utils" and i != "function": - if "db" in os.listdir("../"): - with open("./function/" + i, "r", encoding="utf-8") as f: - r = requests.get( - "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function/" + i).text - d = f.read() - if r == d: - print("已存在文件 function/{}".format(i)) - else: - print("更新文件 function/{}".format(i)) - with open("./function/" + i, "w", encoding="utf-8") as fe: - fe.write(r) - else: - with open("../function/" + i, "r", encoding="utf-8") as f: - r = requests.get( - "https://jihulab.com/spiritlhl/dependence_scripts/-/raw/master/function/" + i).text - d = f.read() - if r == d: - print("已存在文件 function/{}".format(i)) - else: - print("更新文件 function/{}".format(i)) - with open("../function/" + i, "w", encoding="utf-8") as fe: - fe.write(r) - - except: - print("未配置ec_ref_dep,默认不更新依赖文件") - - -if __name__ == '__main__': - - # 针对青龙拉取仓库后单个仓库单个文件夹的情况对每个文件夹进行检测,不需要可以注释掉 开始到结束的部分 - - ### 开始 - if "db" in os.listdir("../"): - dirs_ls = traversalDir_FirstDir("./") - else: - dirs_ls = traversalDir_FirstDir("../") - - # script根目录默认存在的文件夹,放入其中的文件夹不再检索其内依赖完整性 - or_list = ['node_modules', '__pycache__', 'utils', '.pnpm-store', 'function', 'tools', 'backUp', '.git', '.idea', '.github'] - - print() - for i in dirs_ls: - if i not in or_list: - file_path = "./" + i + "/" - print("检测依赖文件是否完整路径 {}".format(file_path)) - check_dependence(file_path) - print() - - ### 结束 - - # 检测根目录,不需要可以注释掉下面这行,旧版本只需要保留下面这行 - check_root() - - print("检测完毕") - - if fix == 1: - print("修复完毕后脚本无法运行,显示缺依赖文件,大概率库里没有或者依赖文件同名但内容不一样,请另寻他法\n") - print("修复完毕后缺依赖环境导致的脚本无法运行,这种无法修复,请自行在依赖管理中添加\n") - print("前者缺文件(如 Error: Cannot find module './utils/magic'),后者缺依赖(如 Error: Cannot find module 'date-fns' ),本脚本只修复前一种")