@lexmin0412/gcm
Version:
102 lines (101 loc) • 4.89 kB
JavaScript
;
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;