jscrs
Version:
comment-rate-statistics
141 lines • 10.4 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.filterFilesByExtensionNameInOptions = exports.prepareOptions = exports.preparePath = exports.prepareIgnore = exports.getConfigOption = exports.getCutomOptions = exports.getDefaultOptions = void 0;
const path = __importStar(require("path"));
const fs = __importStar(require("fs"));
const utils_1 = require("./utils");
const fsHelper_1 = require("./fsHelper");
const fs_1 = require("fs");
const commander_1 = require("commander");
const safe_1 = require("colors/safe");
const formats_1 = require("./formats");
const gitignoreToGlob = require('gitignore-to-glob');
function getDefaultOptions() {
return {
ext: [
'ts',
'tsx',
'js',
'jsx',
'vue',
'html',
],
path: [process.cwd()],
ignore: [
'/dist/**',
'dest/**',
'neurons/**',
'./node_modules/**',
'test/**',
'data/**',
'src/doc/**',
'doc',
'entries/'
],
reports: ['console', 'html', 'json'],
gitignore: false,
output: './report',
};
}
exports.getDefaultOptions = getDefaultOptions;
/**
* 获取自定义配置项
*/
exports.getCutomOptions = () => {
let customConfPath = path.join(fsHelper_1.getRootPath(), formats_1.CustomConfigFileName);
if (fs.existsSync(customConfPath)) {
let customConf = JSON.parse(fs.readFileSync(customConfPath, 'utf8'));
return customConf;
}
return null;
};
function getConfigOption(name, options) {
return options ? options[name] || getDefaultOptions()[name] : getDefaultOptions()[name];
}
exports.getConfigOption = getConfigOption;
/**
* 对ignore规范化
* './ignore/**', '/ignore', 'ignore/'
* @param options IConfigOptions
*/
function prepareIgnore(options) {
let { ignore = [] } = options;
const gitignore = options.gitignore;
ignore = ignore.map(x => {
if (x.substr(0, 1) === '/') {
x = '**' + x;
}
else if (x.substr(0, 2) === './') {
x = x.replace('./', '**/');
}
else if (x.substr(0, 2) !== '**') {
x = '**/' + x;
}
return (x.substr(x.length - 1) === '/' ? `${x}**/*` : x);
});
if (gitignore && fs_1.existsSync(fsHelper_1.getRootPath() + '/.gitignore')) {
let gitignorePatterns = gitignoreToGlob(fsHelper_1.getRootPath() + '/.gitignore') || [];
gitignorePatterns = gitignorePatterns.map(pattern => (pattern.substr(pattern.length - 1) === '/' ? `${pattern}**/*` : pattern));
ignore.push(...gitignorePatterns);
ignore = ignore.map(pattern => pattern.replace('!', ''));
}
// 文件后缀名监测 !**/*.js ignore无法识别
options.ignore = [...new Set(ignore)];
return options;
}
exports.prepareIgnore = prepareIgnore;
/**
* 支持 ./src ,/src, src/ 以及全路径
*/
function preparePath(p) {
return p.map(x => {
if (x.substr(0, 1) === '/') {
x = fsHelper_1.resolves(x);
}
return fsHelper_1.resolves(path.join(x, '**').replace(/\\/g, '/'));
});
}
exports.preparePath = preparePath;
function prepareOptions(cli = new commander_1.Command()) {
let customConfig = cli.config ? path.resolve(cli.config) : exports.getCutomOptions();
if (utils_1.isNull(customConfig)) {
console.log(safe_1.red(`no custom configuration ${formats_1.CustomConfigFileName}, use default config`));
}
let config = Object.assign({}, getDefaultOptions(), customConfig);
config.path = preparePath(config.path);
if (cli.path) {
config.path = [...new Set(config.path.concat(preparePath(cli.path)))];
}
if (cli.output) {
config.output = cli.output;
}
if (!utils_1.isNullOrUndefined(cli.gitignore)) {
config.gitignore = cli.gitignore;
}
return prepareIgnore(config);
}
exports.prepareOptions = prepareOptions;
function filterFilesByExtensionNameInOptions(files, extensionNames) {
return files.filter(x => extensionNames.includes(fsHelper_1.getExtensionName(x))) || [];
}
exports.filterFilesByExtensionNameInOptions = filterFilesByExtensionNameInOptions;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsMkNBQTRCO0FBQzVCLHVDQUF3QjtBQUN4QixtQ0FBbUQ7QUFDbkQseUNBQW9FO0FBQ3BFLDJCQUErQjtBQUMvQix5Q0FBbUM7QUFDbkMsc0NBQWlDO0FBQ2pDLHVDQUErQztBQUUvQyxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUVyRCxTQUFnQixpQkFBaUI7SUFDL0IsT0FBTztRQUNMLEdBQUcsRUFBRTtZQUNILElBQUk7WUFDSixLQUFLO1lBQ0wsSUFBSTtZQUNKLEtBQUs7WUFDTCxLQUFLO1lBQ0wsTUFBTTtTQUNQO1FBQ0QsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLE1BQU0sRUFBRTtZQUNOLFVBQVU7WUFDVixTQUFTO1lBQ1QsWUFBWTtZQUNaLG1CQUFtQjtZQUNuQixTQUFTO1lBQ1QsU0FBUztZQUNULFlBQVk7WUFDWixLQUFLO1lBQ0wsVUFBVTtTQUNYO1FBQ0QsT0FBTyxFQUFFLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7UUFDcEMsU0FBUyxFQUFFLEtBQUs7UUFDaEIsTUFBTSxFQUFFLFVBQVU7S0FDbkIsQ0FBQTtBQUNILENBQUM7QUExQkQsOENBMEJDO0FBR0Q7O0dBRUc7QUFDVSxRQUFBLGVBQWUsR0FBRyxHQUFrQixFQUFFO0lBQ2pELElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsc0JBQVcsRUFBRSxFQUFFLDhCQUFvQixDQUFDLENBQUE7SUFDbkUsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxFQUFFO1FBQ2pDLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FB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