From 89377aac1943f6111e87c36c03f190e217a00849 Mon Sep 17 00:00:00 2001 From: LoRexxar Date: Thu, 16 Jun 2022 16:47:22 +0800 Subject: [PATCH] add zip auto unzip --- core/cli.py | 1 + docs/changelog.md | 3 ++- utils/utils.py | 16 +++++++++++++++- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/core/cli.py b/core/cli.py index ce676649..877012bb 100644 --- a/core/cli.py +++ b/core/cli.py @@ -219,6 +219,7 @@ def start(target, formatter, output, special_rules, a_sid=None, language=None, t # target directory try: + logger.info('[CLI] Target Mode: {}'.format(target_mode)) target_directory = pa.target_directory(target_mode) logger.info('[CLI] Target : {d}'.format(d=target_directory)) diff --git a/docs/changelog.md b/docs/changelog.md index 18a0232d..cb3e53e5 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -299,4 +299,5 @@ - 修复了几个PHP的语法支持问题 - 修复了组件扫描中关于pom.xml静态扫描的几个语法解析错误 - 修改了组件数据储存格式 - - 从这个版本后不再做小版本的更新,只做bug修复维护,后续会有一个直接更新到3.0的大版本更新 \ No newline at end of file + - 从这个版本后不再做小版本的更新,只做bug修复维护,后续会有一个直接更新到3.0的大版本更新 + \ No newline at end of file diff --git a/utils/utils.py b/utils/utils.py index 8b9cee7e..0aa5f96b 100644 --- a/utils/utils.py +++ b/utils/utils.py @@ -19,11 +19,12 @@ import sys import time import ast +import zipfile from Kunlun_M.settings import RULES_PATH, PROJECT_DIRECTORY from utils.log import logger, logger_console -from utils.file import check_filepath, get_line +from utils.file import check_filepath, get_line, un_zip TARGET_MODE_GIT = 'git' TARGET_MODE_FILE = 'file' @@ -162,6 +163,19 @@ def target_directory(self, target_mode): target_directory = self.target elif target_mode == TARGET_MODE_FILE: target_directory = self.target + + # 检查目标是否为zip + if os.path.splitext(target_directory)[-1] == '.zip': + try: + logger.info("[CLI] Target {} is zip, try to unzip.".format(target_directory)) + target_directory = un_zip(target_directory) + + except zipfile.BadZipFile: + logger.warning("[CLI] file {} not zip".format(target_directory)) + + except OSError: + logger.warning("[CLI] file {} unzip error".format(target_directory)) + return target_directory else: logger.critical('[PARSE-ARGS] exception target mode ({mode})'.format(mode=target_mode))