UNPKG

@lexmin0412/gcm

Version:
102 lines (101 loc) 4.89 kB
"use strict"; var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.scan = exports.isCurrentConfig = exports.isValidUserConfig = void 0; var picocolors_1 = __importDefault(require("picocolors")); var inquirer_1 = __importDefault(require("inquirer")); var fs_1 = require("fs"); var gcm_api_1 = require("@lexmin0412/gcm-api"); var utils_1 = require("../utils"); var homeDir = process.env.HOME; var ignoredDirs = ['node_modules', 'dist', '.Trash']; var ignoredFiles = ['package-lock.json', 'yarn.lock', '.gitignore', '.git', '.DS_Store', '.vscode', 'package.json']; var ignoredPrefix = ['.']; var ignoredNoPermissionPaths = ['Library', 'Application Support', 'Pictures']; var isValidUserConfig = function (configStr) { var allConfigs = (0, gcm_api_1.getAllUserConfigs)(); return allConfigs.some(function (item) { return "".concat(item.name, "<").concat(item.email, ">") === configStr; }); }; exports.isValidUserConfig = isValidUserConfig; var isCurrentConfig = function (configStr) { var currentConfig = (0, gcm_api_1.getCurrentConfig)(); if (!currentConfig) return false; return "".concat(currentConfig.name, "<").concat(currentConfig.email, ">") === configStr; }; exports.isCurrentConfig = isCurrentConfig; var scan = function () { inquirer_1.default.prompt([ { type: 'input', name: 'dirPath', message: '请输入需要扫描的文件夹路径(建议指定目录以提升扫描效率)', default: homeDir } ]).then(function (answers) { var dirPath = answers.dirPath; var userConfigs = {}; var readConfig = function (filePath) { if ((0, utils_1.isDirectory)(filePath)) { var files_1 = (0, fs_1.readdirSync)(filePath); var isGitDir = function () { return files_1.some(function (file) { return file === '.git'; }); }; if (isGitDir()) { try { var _a = (0, gcm_api_1.getProjectConfig)(filePath), name_1 = _a.name, email = _a.email; var stringifyConfig = "".concat(name_1, "<").concat(email, ">"); if (!userConfigs[stringifyConfig]) { userConfigs[stringifyConfig] = 1; } else { userConfigs[stringifyConfig] += 1; } console.log("".concat(picocolors_1.default.green('扫描目录'), " ").concat(filePath, " Git\u914D\u7F6E: ").concat(stringifyConfig)); } catch (error) { console.log('error', error); } } else { files_1.forEach(function (fileName) { var fullPath = "".concat(filePath, "/").concat(fileName); if (!__spreadArray(__spreadArray([], ignoredDirs, true), ignoredFiles, true).includes(fileName) && !ignoredPrefix.some(function (prefix) { return fileName.startsWith(prefix); }) && !ignoredNoPermissionPaths.some(function (path) { return fullPath.includes(path); })) { readConfig(fullPath); } }); } } }; readConfig(dirPath); var getAnalyzeRes = function (userConfigs) { var res = '\n统计结果\n'; Object.keys(userConfigs).forEach(function (key) { var currentKey = key; if (!(0, exports.isValidUserConfig)(key)) { currentKey = "".concat(picocolors_1.default.red(key), " \u4E0D\u5728\u914D\u7F6E\u5217\u8868\u4E2D\uFF0C\u8BF7\u68C0\u67E5\u662F\u5426\u6B63\u786E"); } if ((0, exports.isCurrentConfig)(key)) { currentKey = "".concat(picocolors_1.default.green(key), " ").concat(picocolors_1.default.green('(当前配置)')); } res = "".concat(res).concat(picocolors_1.default.green(userConfigs[key]), " \u4E2A\u76EE\u5F55\u4F7F\u7528\u4E86\u914D\u7F6E ").concat(currentKey, "\n"); }); return res; }; console.log(getAnalyzeRes(userConfigs)); }); }; exports.scan = scan;