jscpd
Version:
Copy/paste detector for programming code, support JavaScript, CoffeeScript, PHP, Ruby, Python, Less, Go, Java, Yaml, C#, C++, C, Puppet, Twig languages
145 lines • 10.3 kB
JavaScript
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __spread = (this && this.__spread) || function () {
for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
var fs_1 = require("fs");
var fs_extra_1 = require("fs-extra");
var path_1 = require("path");
var formats_1 = require("../tokenizer/formats");
function getOption(name, options) {
return options ? options[name] || getDefaultOptions()[name] : getDefaultOptions()[name];
}
exports.getOption = getOption;
function prepareOptions(cli) {
var config = cli.config ? path_1.resolve(cli.config) : path_1.resolve('.jscpd.json');
var storedConfig = {};
var argsConfig;
var packageJsonConfig;
argsConfig = {
minLines: cli.minLines,
maxLines: cli.maxLines,
maxSize: cli.maxSize,
debug: cli.debug,
executionId: cli.executionId,
silent: cli.silent,
blame: cli.blame,
cache: cli.cache,
output: cli.output,
xslHref: cli.xslHref,
format: cli.format,
formatsExts: parseFormatsExtensions(cli.formatsExts),
list: cli.list,
mode: cli.mode,
absolute: cli.absolute,
gitignore: cli.gitignore
};
if (cli.threshold !== undefined) {
argsConfig.threshold = cli.threshold;
}
if (cli.reporters) {
argsConfig.reporters = cli.reporters.split(',');
}
if (cli.format) {
argsConfig.format = cli.format.split(',');
}
if (cli.ignore) {
argsConfig.ignore = cli.ignore.split(',');
}
argsConfig.path = cli.path ? [cli.path].concat(cli.args) : cli.args;
Object.keys(argsConfig).forEach(function (key) {
if (typeof argsConfig[key] === 'undefined') {
delete argsConfig[key];
}
});
if (!fs_1.existsSync(config)) {
config = '';
}
else {
storedConfig = fs_extra_1.readJSONSync(config);
}
if (fs_1.existsSync(process.cwd() + '/package.json')) {
packageJsonConfig = fs_extra_1.readJSONSync(process.cwd() + '/package.json').jscpd || {};
}
var result = __assign({ config: config }, getDefaultOptions(), packageJsonConfig, storedConfig, argsConfig);
if (result.hasOwnProperty('config') && result.config && path_1.isAbsolute(result.config) && result.path) {
result.path = result.path.map(function (path) { return path_1.resolve(path_1.dirname(config), path); });
}
result.reporters = result.reporters || [];
result.listeners = result.listeners || [];
if (result.silent) {
result.reporters = result.reporters.filter(function (reporter) { return reporter.indexOf('console') === -1; }).concat('silent');
}
if (result.threshold) {
result.reporters = __spread(result.reporters, ['threshold']);
}
result.reporters = __spread(result.reporters, ['time']);
result.reporters = __spread(new Set(result.reporters));
return result;
}
exports.prepareOptions = prepareOptions;
function getDefaultOptions() {
return {
executionId: new Date().toISOString(),
path: [process.cwd()],
minLines: 5,
maxLines: 500,
maxSize: '30kb',
minTokens: 50,
output: './report',
reporters: ['console', 'time'],
listeners: ['statistic'],
ignore: [],
mode: 'mild',
threshold: 0,
format: __spread(formats_1.getSupportedFormats()),
formatsExts: {},
debug: false,
silent: false,
blame: false,
cache: true,
absolute: false,
gitignore: false,
reportersOptions: {}
};
}
exports.getDefaultOptions = getDefaultOptions;
function parseFormatsExtensions(extensions) {
var result = {};
if (extensions) {
extensions.split(';').forEach(function (format) {
var pair = format.split(':');
result[pair[0]] = pair[1].split(',');
});
}
return result;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLHlCQUFnQztBQUNoQyxxQ0FBd0M7QUFDeEMsNkJBQW9EO0FBRXBELGdEQUEyRDtBQUUzRCxTQUFnQixTQUFTLENBQUMsSUFBWSxFQUFFLE9BQWtCO0lBQ3hELE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBRSxPQUFlLENBQUMsSUFBSSxDQUFDLElBQUssaUJBQWlCLEVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUUsaUJBQWlCLEVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNySCxDQUFDO0FBRkQsOEJBRUM7QUFFRCxTQUFnQixjQUFjLENBQUMsR0FBWTtJQUN6QyxJQUFJLE1BQU0sR0FBVyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDL0UsSUFBSSxZQUFZLEdBQVEsRUFBRSxDQUFDO0lBQzNCLElBQUksVUFBZSxDQUFDO0lBQ3BCLElBQUksaUJBQXNCLENBQUM7SUFFM0IsVUFBVSxHQUFHO1FBQ1gsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFrQjtRQUNoQyxRQUFRLEVBQUUsR0FBRyxDQUFDLFFBQWtCO1FBQ2hDLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTztRQUNwQixLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7UUFDaEIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxXQUFXO1FBQzVCLE1BQU0sRUFBRSxHQUFHLENBQUMsTUFBTTtRQUNsQixLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7UUFDaEIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO1FBQ2hCLE1BQU0sRUFBRSxHQUFHLENBQUMs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
;