UNPKG

3 kBJavaScriptView Raw
1"use strict";
2const Task = require('../ember-cli/lib/models/task');
3const chalk = require('chalk');
4const glob = require('glob');
5const require_project_module_1 = require('../utilities/require-project-module');
6const config_1 = require('../models/config');
7const common_tags_1 = require('common-tags');
8Object.defineProperty(exports, "__esModule", { value: true });
9exports.default = Task.extend({
10 run: function (commandOptions) {
11 const ui = this.ui;
12 const projectRoot = this.project.root;
13 const lintConfigs = config_1.CliConfig.fromProject().config.lint || [];
14 if (lintConfigs.length === 0) {
15 ui.writeLine(chalk.yellow(common_tags_1.oneLine `
16 No lint config(s) found.
17 If this is not intended, run "ng update".
18 `));
19 return Promise.resolve(0);
20 }
21 const tslint = require_project_module_1.requireProjectModule(projectRoot, 'tslint');
22 const Linter = tslint.Linter;
23 const Configuration = tslint.Configuration;
24 let errors = 0;
25 let results = '';
26 lintConfigs
27 .forEach((config) => {
28 const program = Linter.createProgram(config.project);
29 const files = getFilesToLint(program, config, Linter);
30 const linter = new Linter({
31 fix: commandOptions.fix,
32 formatter: commandOptions.format
33 }, program);
34 files.forEach((file) => {
35 const fileContents = program.getSourceFile(file).getFullText();
36 const configLoad = Configuration.findConfiguration(config.tslintConfig, file);
37 linter.lint(file, fileContents, configLoad.results);
38 });
39 const result = linter.getResult();
40 errors += result.failureCount;
41 results = results.concat(result.output.trim().concat('\n'));
42 });
43 if (errors > 0) {
44 ui.writeLine(results.trim());
45 ui.writeLine(chalk.red('Lint errors found in the listed files.'));
46 return commandOptions.force ? Promise.resolve(0) : Promise.resolve(2);
47 }
48 ui.writeLine(chalk.green('All files pass linting.'));
49 return Promise.resolve(0);
50 }
51});
52function getFilesToLint(program, lintConfig, Linter) {
53 let files = [];
54 if (lintConfig.files !== null) {
55 files = Array.isArray(lintConfig.files) ? lintConfig.files : [lintConfig.files];
56 }
57 else {
58 files = Linter.getFileNames(program);
59 }
60 let globOptions = {};
61 if (lintConfig.exclude !== null) {
62 const excludePatterns = Array.isArray(lintConfig.exclude)
63 ? lintConfig.exclude
64 : [lintConfig.exclude];
65 globOptions = { ignore: excludePatterns, nodir: true };
66 }
67 files = files
68 .map((file) => glob.sync(file, globOptions))
69 .reduce((a, b) => a.concat(b), []);
70 return files;
71}
72//# sourceMappingURL=/Users/hansl/Sources/angular-cli/packages/@angular/cli/tasks/lint.js.map
\No newline at end of file