Skip to content

Commit 8d17bce

Browse files
committed
feat: 尝试增加 eslint 验证
1 parent f32033f commit 8d17bce

6 files changed

Lines changed: 31 additions & 7 deletions

File tree

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ serde_json = "1.0"
1414
jsonschema = "0.17"
1515
emojis = "0.6.0"
1616
console = "0.15.7"
17+
termcolor = "1.2.0"
1718

1819
[build-dependencies]
1920
napi-build = "2.0.1"

index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@ export function validateConfig(configStr: string): void
77
export function validatePackage(appPath: string, nodeModulesPath: string, cliVersion: string): void
88
export function validateEnv(): void
99
export function validateRecommend(appPath: string): void
10+
export function validateEslint(): void

index.js

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

255-
const { validateConfig, validatePackage, validateEnv, validateRecommend } = nativeBinding
255+
const { validateConfig, validatePackage, validateEnv, validateRecommend, validateEslint } = nativeBinding
256256

257257
module.exports.validateConfig = validateConfig
258258
module.exports.validatePackage = validatePackage
259259
module.exports.validateEnv = validateEnv
260260
module.exports.validateRecommend = validateRecommend
261+
module.exports.validateEslint = validateEslint

src/lib.rs

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
mod validators;
44

5-
use std::{ fs, error::Error, path::PathBuf, env };
5+
use std::{ fs, error::Error, path::PathBuf, env, process::Command };
66

7-
use validators::{env::EnvValidator, Recommend::RecommendValidator};
7+
use validators::{env::EnvValidator, recommend::RecommendValidator};
88

99
use crate::validators::{ message::{ Message, MessageKind }, package::{ PackageValidator }, config::ConfigValidator, common::{ Validator } };
1010

@@ -43,6 +43,23 @@ pub fn validate_recommend(app_path: String) {
4343
}
4444
}
4545

46+
#[napi]
47+
pub fn validate_eslint() {
48+
let mut command = Command::new("npm");
49+
command.arg("run");
50+
command.arg("eslint");
51+
52+
let output = command.output().expect("failed to execute eslint");
53+
54+
if output.status.success() {
55+
let stdout = String::from_utf8_lossy(&output.stdout);
56+
println!("Command output: {}", stdout);
57+
} else {
58+
let stderr = String::from_utf8_lossy(&output.stdout);
59+
eprintln!("Command failed: {}", stderr);
60+
}
61+
}
62+
4663
fn validate_config_core(config_str: String) -> Result<(), Box<dyn Error>> {
4764
let tip = Message {
4865
kind: MessageKind::Info,
@@ -140,8 +157,13 @@ fn validate_recommend_core(app_path: String) -> Result<(), Box<dyn Error>> {
140157
}
141158
]
142159
};
143-
for message in messages {
144-
println!("{}", message);
160+
161+
if messages.len() > 0 {
162+
for message in messages {
163+
println!("{}", message);
164+
}
165+
} else {
166+
println!("{}", Message { kind: MessageKind::Success, content: "项目符合最佳实践要求!".to_string(), solution: None });
145167
}
146168
Ok(())
147169
}

src/validators/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ pub(crate) mod message;
33
pub(crate) mod common;
44
pub(crate) mod package;
55
pub(crate) mod env;
6-
pub(crate) mod Recommend;
6+
pub(crate) mod recommend;

src/validators/recommend.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,6 @@ impl<'a> Validator for RecommendValidator<'a> {
9393
let mut app_path = self.app_path.to_string();
9494
app_path.push(MAIN_SEPARATOR);
9595
let file_list: HashSet<String> = file_list.into_iter().map(|key: PathBuf| key.into_os_string().into_string().unwrap().replace(&app_path, "").to_lowercase()).into_iter().collect();
96-
println!("{:?}", file_list);
9796
let readme_list: HashSet<String> = README.map(|key| key.to_lowercase()).into_iter().collect();
9897
let gitignore_list: HashSet<String> = GITIGNORE.map(|key| key.to_lowercase()).into_iter().collect();
9998
let editorconfig_list: HashSet<String> = EDITORCONFIG.map(|key| key.to_lowercase()).into_iter().collect();

0 commit comments

Comments
 (0)