Skip to content

Commit 1e46e8a

Browse files
committed
feat: 区分 print 和非 print 方法
1 parent 11f5220 commit 1e46e8a

5 files changed

Lines changed: 289 additions & 133 deletions

File tree

index.ts

Lines changed: 49 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,14 @@ import * as path from 'path'
33
import { ESLint } from 'eslint'
44
import * as glob from 'glob'
55

6-
import { validateEnv, validateConfig, validatePackage, validateRecommend } from './js-binding'
6+
import {
7+
validateEnvPrint,
8+
validateConfigPrint,
9+
validatePackagePrint,
10+
validateRecommendPrint,
11+
MessageKind,
12+
ValidateResult,
13+
} from './js-binding'
714

815
export default (ctx) => {
916
ctx.registerCommand({
@@ -22,16 +29,38 @@ export default (ctx) => {
2229
}
2330
return v
2431
})
25-
validateEnv()
26-
validateConfig(configStr)
27-
validatePackage(appPath, nodeModulesPath)
28-
validateRecommend(appPath)
29-
await validateEslint(ctx.initialConfig, chalk)
32+
validateEnvPrint()
33+
validateConfigPrint(configStr)
34+
validatePackagePrint(appPath, nodeModulesPath)
35+
validateRecommendPrint(appPath)
36+
await validateEslintPrint(ctx.initialConfig, chalk)
3037
},
3138
})
3239
}
3340

34-
export async function validateEslint(projectConfig, chalk) {
41+
export async function validateEslint(projectConfig, chalk): Promise<ValidateResult> {
42+
const result = await validateEslintCore(projectConfig, chalk)
43+
result.messages.unshift({
44+
kind: MessageKind.Info,
45+
content: `\u{1F3AF} 检查 ESLint (以下为 ESLint 的输出)!`,
46+
})
47+
return result
48+
}
49+
50+
export async function validateEslintPrint(projectConfig, chalk): Promise<boolean> {
51+
const result = await validateEslintCore(projectConfig, chalk)
52+
let is_valid = result.isValid
53+
let rawReport = result.messages[0].content
54+
console.log(`\u{1F3AF} 检查 ESLint (以下为 ESLint 的输出)!`)
55+
if (is_valid) {
56+
console.log(`${chalk.green('[\u{2713}]')} Eslint 检查通过!`)
57+
} else {
58+
console.log(rawReport)
59+
}
60+
return is_valid
61+
}
62+
63+
async function validateEslintCore(projectConfig, chalk): Promise<ValidateResult> {
3564
const appPath = process.cwd()
3665
const globPattern = glob.sync(path.join(appPath, '.eslintrc*'))
3766

@@ -46,14 +75,21 @@ export async function validateEslint(projectConfig, chalk) {
4675
const sourceFiles = path.join(process.cwd(), projectConfig.sourceRoot, '**/*.{js,ts,jsx,tsx}')
4776
const report = await eslintCli.lintFiles([sourceFiles])
4877
const formatter = await eslintCli.loadFormatter()
49-
const rawReport = formatter.format(report)
78+
let rawReport = formatter.format(report)
5079
let is_valid = true
51-
console.log(`\u{1F3AF} 检查 ESLint (以下为 ESLint 的输出)!`)
5280
if (rawReport) {
5381
is_valid = false
54-
console.log(rawReport)
55-
} else {
56-
console.log(`${chalk.green('[\u{2713}]')} Eslint 检查通过!`)
5782
}
58-
return is_valid
83+
if (is_valid) {
84+
rawReport = `${chalk.green('[\u{2713}]')} Eslint 检查通过!`
85+
}
86+
return {
87+
isValid: is_valid,
88+
messages: [
89+
{
90+
kind: is_valid ? MessageKind.Success : MessageKind.Error,
91+
content: rawReport,
92+
},
93+
],
94+
}
5995
}

js-binding.d.ts

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,27 @@
33

44
/* auto-generated by NAPI-RS */
55

6-
export function validateConfig(configStr: string): boolean
7-
export function validatePackage(appPath: string, nodeModulesPath: string): boolean
8-
export function validateEnv(): boolean
9-
export function validateRecommend(appPath: string): boolean
6+
export const enum MessageKind {
7+
Info = 0,
8+
Error = 1,
9+
Success = 2,
10+
Warning = 3,
11+
Manual = 4
12+
}
13+
export interface Message {
14+
kind: MessageKind
15+
content: string
16+
solution?: string
17+
}
18+
export interface ValidateResult {
19+
isValid: boolean
20+
messages: Array<Message>
21+
}
22+
export function validateConfig(configStr: string): ValidateResult
23+
export function validateConfigPrint(configStr: string): boolean
24+
export function validatePackage(appPath: string, nodeModulesPath: string): ValidateResult
25+
export function validatePackagePrint(appPath: string, nodeModulesPath: string): boolean
26+
export function validateEnv(): ValidateResult
27+
export function validateEnvPrint(): boolean
28+
export function validateRecommend(appPath: string): ValidateResult
29+
export function validateRecommendPrint(appPath: string): boolean

js-binding.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -252,9 +252,14 @@ if (!nativeBinding) {
252252
throw new Error(`Failed to load native binding`)
253253
}
254254

255-
const { validateConfig, validatePackage, validateEnv, validateRecommend } = nativeBinding
255+
const { MessageKind, validateConfig, validateConfigPrint, validatePackage, validatePackagePrint, validateEnv, validateEnvPrint, validateRecommend, validateRecommendPrint } = nativeBinding
256256

257+
module.exports.MessageKind = MessageKind
257258
module.exports.validateConfig = validateConfig
259+
module.exports.validateConfigPrint = validateConfigPrint
258260
module.exports.validatePackage = validatePackage
261+
module.exports.validatePackagePrint = validatePackagePrint
259262
module.exports.validateEnv = validateEnv
263+
module.exports.validateEnvPrint = validateEnvPrint
260264
module.exports.validateRecommend = validateRecommend
265+
module.exports.validateRecommendPrint = validateRecommendPrint

0 commit comments

Comments
 (0)