turbo-gulp
Version:
Gulp tasks to boost high-quality projects.
69 lines (67 loc) • 9.28 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const gulp_tslint_1 = __importDefault(require("gulp-tslint"));
const minimatch_1 = require("minimatch");
const path_1 = require("path");
const tslint = __importStar(require("tslint"));
const tslint_1 = require("../options/tslint");
const matcher = __importStar(require("../utils/matcher"));
exports.taskName = ":lint:fix";
function getSources(project) {
const baseDir = project.root;
const sources = [];
let patterns;
if (project.tslint !== undefined && project.tslint.files !== undefined) {
patterns = project.tslint.files;
}
else {
patterns = [path_1.posix.join(project.srcDir, "**/*.ts")];
}
for (const pattern of patterns) {
const minimatchPattern = new minimatch_1.Minimatch(pattern);
const glob = matcher.asString(matcher.join(baseDir, minimatchPattern));
sources.push(glob);
}
return { baseDir, sources };
}
exports.getSources = getSources;
function registerTask(gulp, project) {
let configuration;
const baseConfig = tslint.Configuration.parseConfigFile(tslint_1.DEFAULT_UNTYPED_TSLINT_CONFIG, project.root);
if (project.tslint !== undefined && project.tslint.configuration !== undefined) {
const userRawConfig = project.tslint.configuration;
let userConfig;
if (typeof userRawConfig === "string") {
const configPath = path_1.posix.join(project.root, userRawConfig);
userConfig = tslint.Configuration.loadConfigurationFromPath(configPath);
}
else {
userConfig = tslint.Configuration.parseConfigFile(userRawConfig, project.root);
}
configuration = tslint.Configuration.extendConfigurationFile(baseConfig, userConfig);
}
else {
configuration = baseConfig;
}
const options = Object.assign({ formatter: "msbuild", tslint }, project.tslint, { configuration, fix: true });
const sources = getSources(project);
gulp.task(exports.taskName, function () {
return gulp.src(sources.sources, { base: sources.baseDir })
.pipe(gulp_tslint_1.default(options))
.pipe(gulp_tslint_1.default.report({
summarizeFailureOutput: true,
}));
});
}
exports.registerTask = registerTask;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9zcmMvcHJvamVjdC10YXNrcy9saW50LWZpeC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFDQSw4REFBdUY7QUFDdkYseUNBQWtEO0FBQ2xELCtCQUFvQztBQUNwQywrQ0FBaUM7QUFDakMsOENBQWtFO0FBRWxFLDBEQUE0QztBQUUvQixRQUFBLFFBQVEsR0FBVyxXQUFXLENBQUM7QUFpQjVDLG9CQUEyQixPQUFnQjtJQUN6QyxNQUFNLE9BQU8sR0FBVyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQ3JDLE1BQU0sT0FBTyxHQUFhLEVBQUUsQ0FBQztJQUM3QixJQUFJLFFBQWtCLENBQUM7SUFFdkIsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxTQUFTLEVBQUU7UUFDdEUsUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0tBQ2pDO1NBQU07UUFDTCxRQUFRLEdBQUcsQ0FBQyxZQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztLQUNuRDtJQUVELEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFO1FBQzlCLE1BQU0sZ0JBQWdCLEdBQWUsSUFBSSxxQkFBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVELE1BQU0sSUFBSSxHQUFXLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBQy9FLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDcEI7SUFFRCxPQUFPLEVBQUMsT0FBTyxFQUFFLE9BQU8sRUFBQyxDQUFDO0FBQzVCLENBQUM7QUFsQkQsZ0NBa0JDO0FBRUQsc0JBQTZCLElBQVUsRUFBRSxPQUFnQjtJQUl2RCxJQUFJLGFBQTJCLENBQUM7SUFFaEMsTUFBTSxVQUFVLEdBQWlCLE1BQU0sQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLHNDQUE2QixFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVuSCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsYUFBYSxLQUFLLFNBQVMsRUFBRTtRQUM5RSxNQUFNLGFBQWEsR0FBNkIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7UUFDN0UsSUFBSSxVQUF3QixDQUFDO1FBQzdCLElBQUksT0FBTyxhQUFhLEtBQUssUUFBUSxFQUFFO1lBQ3JDLE1BQU0sVUFBVSxHQUFXLFlBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztZQUNsRSxVQUFVLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUN6RTthQUFNO1lBQ0wsVUFBVSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEY7UUFDRCxhQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7S0FDdEY7U0FBTTtRQUNMLGFBQWEsR0FBRyxVQUFVLENBQUM7S0FDNUI7SUFFRCxNQUFNLE9BQU8sbUJBQ1gsU0FBUyxFQUFFLFNBQVMsRUFDcEIsTUFBTSxJQUNGLE9BQU8sQ0FBQyxNQUE0QixJQUN4QyxhQUFhLEVBQ2IsR0FBRyxFQUFFLElBQUksR0FDVixDQUFDO0lBRUYsTUFBTSxPQUFPLEdBQVksVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTdDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQVEsRUFBRTtRQUNsQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFDLElBQUksRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFDLENBQUM7YUFDdEQsSUFBSSxDQUFDLHFCQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDekIsSUFBSSxDQUFDLHFCQUFVLENBQUMsTUFBTSxDQUFDO1lBQ3RCLHNCQUFzQixFQUFFLElBQUk7U0FDN0IsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUF2Q0Qsb0NBdUNDIiwiZmlsZSI6InByb2plY3QtdGFza3MvbGludC1maXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHdWxwIH0gZnJvbSBcImd1bHBcIjtcbmltcG9ydCB7ZGVmYXVsdCBhcyBndWxwVHNsaW50LCBQbHVnaW5PcHRpb25zIGFzIEd1bHBUc2xpbnRPcHRpb25zIH0gZnJvbSBcImd1bHAtdHNsaW50XCI7XG5pbXBvcnQgeyBJTWluaW1hdGNoLCBNaW5pbWF0Y2ggfSBmcm9tIFwibWluaW1hdGNoXCI7XG5pbXBvcnQge3Bvc2l4IGFzIHBhdGggfSBmcm9tIFwicGF0aFwiO1xuaW1wb3J0ICogYXMgdHNsaW50IGZyb20gXCJ0c2xpbnRcIjtcbmltcG9ydCB7IERFRkFVTFRfVU5UWVBFRF9UU0xJTlRfQ09ORklHIH0gZnJvbSBcIi4uL29wdGlvbnMvdHNsaW50XCI7XG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSBcIi4uL3Byb2plY3RcIjtcbmltcG9ydCAqIGFzIG1hdGNoZXIgZnJvbSBcIi4uL3V0aWxzL21hdGNoZXJcIjtcblxuZXhwb3J0IGNvbnN0IHRhc2tOYW1lOiBzdHJpbmcgPSBcIjpsaW50OmZpeFwiO1xuXG4vKipcbiAqIFNvdXJjZXMgdG8gdXNlIHdoZW4gY29tcGlsaW5nIFRTIGNvZGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTb3VyY2VzIHtcbiAgLyoqXG4gICAqIEJhc2UgZGlyZWN0b3J5IHRvIHVzZSB3aGVuIGV4cGFuZGluZyBnbG9iIHN0YXJzLlxuICAgKi9cbiAgYmFzZURpcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGFic29sdXRlIHBhdHRlcm5zIGZvciB0aGUgc291cmNlcyAoc2NyaXB0IG9yIHR5cGUgZGVmaW5pdGlvbikgZmlsZXNcbiAgICovXG4gIHNvdXJjZXM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U291cmNlcyhwcm9qZWN0OiBQcm9qZWN0KTogU291cmNlcyB7XG4gIGNvbnN0IGJhc2VEaXI6IHN0cmluZyA9IHByb2plY3Qucm9vdDtcbiAgY29uc3Qgc291cmNlczogc3RyaW5nW10gPSBbXTtcbiAgbGV0IHBhdHRlcm5zOiBzdHJpbmdbXTtcblxuICBpZiAocHJvamVjdC50c2xpbnQgIT09IHVuZGVmaW5lZCAmJiBwcm9qZWN0LnRzbGludC5maWxlcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcGF0dGVybnMgPSBwcm9qZWN0LnRzbGludC5maWxlcztcbiAgfSBlbHNlIHtcbiAgICBwYXR0ZXJucyA9IFtwYXRoLmpvaW4ocHJvamVjdC5zcmNEaXIsIFwiKiovKi50c1wiKV07XG4gIH1cblxuICBmb3IgKGNvbnN0IHBhdHRlcm4gb2YgcGF0dGVybnMpIHtcbiAgICBjb25zdCBtaW5pbWF0Y2hQYXR0ZXJuOiBJTWluaW1hdGNoID0gbmV3IE1pbmltYXRjaChwYXR0ZXJuKTtcbiAgICBjb25zdCBnbG9iOiBzdHJpbmcgPSBtYXRjaGVyLmFzU3RyaW5nKG1hdGNoZXIuam9pbihiYXNlRGlyLCBtaW5pbWF0Y2hQYXR0ZXJuKSk7XG4gICAgc291cmNlcy5wdXNoKGdsb2IpO1xuICB9XG5cbiAgcmV0dXJuIHtiYXNlRGlyLCBzb3VyY2VzfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyVGFzayhndWxwOiBHdWxwLCBwcm9qZWN0OiBQcm9qZWN0KSB7XG4gIHR5cGUgVHNsaW50UmF3Q29uZmlnID0gdHNsaW50LkNvbmZpZ3VyYXRpb24uUmF3Q29uZmlnRmlsZTtcbiAgdHlwZSBUc2xpbnRDb25maWcgPSB0c2xpbnQuQ29uZmlndXJhdGlvbi5JQ29uZmlndXJhdGlvbkZpbGU7XG5cbiAgbGV0IGNvbmZpZ3VyYXRpb246IFRzbGludENvbmZpZztcblxuICBjb25zdCBiYXNlQ29uZmlnOiBUc2xpbnRDb25maWcgPSB0c2xpbnQuQ29uZmlndXJhdGlvbi5wYXJzZUNvbmZpZ0ZpbGUoREVGQVVMVF9VTlRZUEVEX1RTTElOVF9DT05GSUcsIHByb2plY3Qucm9vdCk7XG5cbiAgaWYgKHByb2plY3QudHNsaW50ICE9PSB1bmRlZmluZWQgJiYgcHJvamVjdC50c2xpbnQuY29uZmlndXJhdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgdXNlclJhd0NvbmZpZzogVHNsaW50UmF3Q29uZmlnIHwgc3RyaW5nID0gcHJvamVjdC50c2xpbnQuY29uZmlndXJhdGlvbjtcbiAgICBsZXQgdXNlckNvbmZpZzogVHNsaW50Q29uZmlnO1xuICAgIGlmICh0eXBlb2YgdXNlclJhd0NvbmZpZyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgY29uc3QgY29uZmlnUGF0aDogc3RyaW5nID0gcGF0aC5qb2luKHByb2plY3Qucm9vdCwgdXNlclJhd0NvbmZpZyk7XG4gICAgICB1c2VyQ29uZmlnID0gdHNsaW50LkNvbmZpZ3VyYXRpb24ubG9hZENvbmZpZ3VyYXRpb25Gcm9tUGF0aChjb25maWdQYXRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdXNlckNvbmZpZyA9IHRzbGludC5Db25maWd1cmF0aW9uLnBhcnNlQ29uZmlnRmlsZSh1c2VyUmF3Q29uZmlnLCBwcm9qZWN0LnJvb3QpO1xuICAgIH1cbiAgICBjb25maWd1cmF0aW9uID0gdHNsaW50LkNvbmZpZ3VyYXRpb24uZXh0ZW5kQ29uZmlndXJhdGlvbkZpbGUoYmFzZUNvbmZpZywgdXNlckNvbmZpZyk7XG4gIH0gZWxzZSB7XG4gICAgY29uZmlndXJhdGlvbiA9IGJhc2VDb25maWc7XG4gIH1cblxuICBjb25zdCBvcHRpb25zOiBHdWxwVHNsaW50T3B0aW9ucyA9IHtcbiAgICBmb3JtYXR0ZXI6IFwibXNidWlsZFwiLFxuICAgIHRzbGludCxcbiAgICAuLi4ocHJvamVjdC50c2xpbnQgYXMgR3VscFRzbGludE9wdGlvbnMpLFxuICAgIGNvbmZpZ3VyYXRpb24sXG4gICAgZml4OiB0cnVlLFxuICB9O1xuXG4gIGNvbnN0IHNvdXJjZXM6IFNvdXJjZXMgPSBnZXRTb3VyY2VzKHByb2plY3QpO1xuXG4gIGd1bHAudGFzayh0YXNrTmFtZSwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBndWxwLnNyYyhzb3VyY2VzLnNvdXJjZXMsIHtiYXNlOiBzb3VyY2VzLmJhc2VEaXJ9KVxuICAgICAgLnBpcGUoZ3VscFRzbGludChvcHRpb25zKSlcbiAgICAgIC5waXBlKGd1bHBUc2xpbnQucmVwb3J0KHtcbiAgICAgICAgc3VtbWFyaXplRmFpbHVyZU91dHB1dDogdHJ1ZSxcbiAgICAgIH0pKTtcbiAgfSk7XG59XG4iXSwic291cmNlUm9vdCI6Ii4uIn0=