UNPKG

rap2itf

Version:
92 lines (91 loc) 2.98 kB
"use strict"; exports.__esModule = true; exports.findRapperVersion = exports.findChangeFiles = exports.getFiles = void 0; /** * 扫描项目文件,排除是否存在 rap 接口已删除,但是项目仍然在使用的接口 */ var fs = require("fs"); var path = require("path"); var chalk_1 = require("chalk"); var path_1 = require("path"); var utils_1 = require("../utils"); /** * 获取所有需要扫描的文件 * @param parentPath */ function getFiles(parentPath) { var fileList = []; /* 不扫描无效路径 */ if (parentPath.indexOf('/.') > -1 || parentPath.indexOf('node_modules') > -1) { return fileList; } var files = []; try { files = fs.readdirSync(parentPath); } catch (err) { } files.forEach(function (item) { item = path.join(parentPath, item); if (item.indexOf('src') < 0) { return; } var stat = fs.statSync(item); try { if (stat.isDirectory()) { fileList = fileList.concat(getFiles(item)); } else if (stat.isFile()) { fileList.push(item); } } catch (error) { console.log(chalk_1["default"].red("rapper: Rap \u63A5\u53E3\u5F15\u7528\u626B\u63CF\u5931\u8D25, " + error)); } }); return fileList; } exports.getFiles = getFiles; /** 校验文件 MD5,是否被改动 */ function isFileChange(contentArr) { var matchMD5 = contentArr[0].match(/\/\*\smd5:\s(\S*)\s\*\//) || []; var oldMD5 = matchMD5[1]; return oldMD5 !== (0, utils_1.getMd5)(contentArr.slice(1).join('\n')); } /** * 扫描找出生成的模板文件是否被手动修改过 * @param rapperPath, 模板文件地址 */ function findChangeFiles(fileList) { // const fileList = getFiles(rapperPath) var changeList = []; fileList.forEach(function (filePath) { /** 读取文件的内容 */ var content = fs.readFileSync(filePath, 'utf-8') || ''; /** 校验文件 MD5,是否被改动 */ if (isFileChange(content.split(/\r|\n|\r\n/))) { changeList.push((0, path_1.resolve)(process.cwd(), filePath)); } }); return changeList; } exports.findChangeFiles = findChangeFiles; /** * 从模板文件的前6行中扫描找出生成模板文件的 rapper 版本 */ function findRapperVersion(rapperPath) { var version = ''; try { var content = fs.readFileSync(rapperPath + "/index.ts", 'utf-8') || ''; var contentArr = content.split(/\r|\n|\r\n/); if (contentArr.length) { var matchMD5 = contentArr .slice(0, 6) .join('\n') .match(/\/\*\sRapper版本:\s(\S*)\s\*\//) || []; version = matchMD5[1]; } } catch (err) { } return version; } exports.findRapperVersion = findRapperVersion;