From 981589bf8ceba5f864eaf105d606cadba47c5712 Mon Sep 17 00:00:00 2001 From: Stephen Lautier Date: Tue, 21 Mar 2017 19:32:53 +0100 Subject: [PATCH] fix(tslint): fixed result from being emitted multiple times also simplified the result to consumer --- README.md | 4 +-- src/lint/lint-ts/lint-ts.model.ts | 5 ++++ src/lint/lint-ts/lint-ts.ts | 41 ++++++++++++++++--------------- 3 files changed, 28 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index bbf8de8..badc9fe 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ These are all the available tasks within `speedy-build-tools` and can be added t | `clean [paths..]` | Delete files and directories | | `lint-html` | Lint Html files | | `lint-sass` | Lint Sass files | -| `lint-ts` | Lint Typescript files | +| `lint-ts` | Lint TypeScript files | ___ ### Clean @@ -103,7 +103,7 @@ By default, it will try to locate the `.stylelintrc` file in the root of your pr ___ -### Lint Typescript +### Lint TypeScript ``` speedy-build-tools lint-ts diff --git a/src/lint/lint-ts/lint-ts.model.ts b/src/lint/lint-ts/lint-ts.model.ts index a2ef6e3..3f18112 100755 --- a/src/lint/lint-ts/lint-ts.model.ts +++ b/src/lint/lint-ts/lint-ts.model.ts @@ -6,6 +6,11 @@ export interface LintTsOptions { fix: boolean; } +export interface LintTsResult { + failuresCount: number; + fixesCount?: number; +} + export type LintTsFormatters = "vso" | "verbose" | "prose" diff --git a/src/lint/lint-ts/lint-ts.ts b/src/lint/lint-ts/lint-ts.ts index 0e20d93..7e39ae1 100755 --- a/src/lint/lint-ts/lint-ts.ts +++ b/src/lint/lint-ts/lint-ts.ts @@ -1,4 +1,4 @@ -import { Linter, LintResult, Configuration } from "tslint"; +import { Linter, Configuration } from "tslint"; import { Logger, @@ -12,18 +12,18 @@ import { readJsonFileAsync } from "../../utils"; -import { LintTsOptions } from "./lint-ts.model"; +import { LintTsOptions, LintTsResult } from "./lint-ts.model"; import { ARGS } from "./lint-ts.args"; const logger = new Logger("Lint TS"); -export async function lintTs(options?: Partial): Promise { +export async function lintTs(options?: Partial): Promise { const timer = new Timer(logger); try { timer.start(); const mergedOptions = Args.mergeWithOptions(ARGS, options); - return await Worker.run(__filename, handlelintTs.name, mergedOptions); + return await Worker.run(__filename, handleLintTs.name, mergedOptions); } catch (error) { logger.error("", error); throw error; @@ -33,9 +33,9 @@ export async function lintTs(options?: Partial): Promise { +export async function handleLintTs(options: LintTsOptions): Promise { const configFilePath = getConfigFilePath(options.config); - logger.debug(handlelintTs.name, `Config file path: ${configFilePath}`); + logger.debug(handleLintTs.name, `Config file path: ${configFilePath}`); const configData = await readJsonFileAsync(configFilePath); @@ -48,32 +48,33 @@ export async function handlelintTs(options: LintTsOptions): Promise lintFile(x, configData, linter)) - ) - ).filter(x => x.failureCount > 0); + await Promise.all( + glob(options.files).map(x => lintFile(x, configData, linter)) + ); - failures.forEach(x => logger.info(x.output)); - - if (failures.length && !options.continueOnError) { - process.exit(1); + const result = linter.getResult(); + if (result.failureCount > 0) { + logger.info(result.output); + if (!options.continueOnError) { + process.exit(1); + } } - return failures; + return { + failuresCount: result.failureCount, + fixesCount: result.fixes ? result.fixes.length : undefined + }; } -async function lintFile(filePath: string, configData: Configuration.IConfigurationLoadResult, linter: Linter): Promise { +async function lintFile(filePath: string, configData: Configuration.IConfigurationLoadResult, linter: Linter): Promise { logger.debug(lintFile.name, `filePath: ${filePath}`); linter.lint(filePath, await readFileAsync(filePath), configData); - - return linter.getResult(); } /** @internal */ export const lintTsModule = buildCommandModule({ command: "lint-ts", - description: "Lint Typescript files", + description: "Lint TypeScript files", handler: lintTs, args: ARGS }); \ No newline at end of file