Skip to content

Commit 330afc2

Browse files
aidenybaiamiagent
andcommitted
add ASCII doctor art to CLI score output
Shows a doctor character colored by score with a verdict message: - green: says your codebase is healthy - yellow: found some issues to fix - red: needs your attention Generated with [Ami](https://ami.dev) Co-Authored-By: Ami <noreply@ami.dev>
1 parent 327fcc9 commit 330afc2

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

packages/react-doctor/src/scan.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,29 @@ const printScoreGauge = (score: number, label: string): void => {
159159
logger.break();
160160
};
161161

162+
const getScoreVerdict = (score: number): string => {
163+
if (score >= SCORE_GOOD_THRESHOLD) return "says your codebase is healthy";
164+
if (score >= SCORE_OK_THRESHOLD) return "found some issues to fix";
165+
return "needs your attention";
166+
};
167+
168+
const printDoctorAscii = (score: number): void => {
169+
const verdict = getScoreVerdict(score);
170+
const colorize = (text: string) => colorizeByScore(text, score);
171+
172+
logger.break();
173+
logger.log(colorize(" ┌─────┐"));
174+
logger.log(colorize(" │ ∩ ∩ │"));
175+
logger.log(colorize(" │ ▽ │"));
176+
logger.log(colorize(" └──┬──┘"));
177+
logger.log(colorize(" ┌───┴───┐"));
178+
logger.log(colorize(" │ ✚ │"));
179+
logger.log(colorize(" │ │"));
180+
logger.log(colorize(" └───────┘"));
181+
logger.break();
182+
logger.log(` ${highlighter.dim("react-doctor")} ${colorize(verdict)}`);
183+
};
184+
162185
const printSummary = (
163186
diagnostics: Diagnostic[],
164187
elapsedMilliseconds: number,
@@ -193,6 +216,10 @@ const printSummary = (
193216

194217
logger.log(` ${parts.join(" ")}`);
195218

219+
if (scoreResult) {
220+
printDoctorAscii(scoreResult.score);
221+
}
222+
196223
try {
197224
const diagnosticsDirectory = writeDiagnosticsDirectory(diagnostics);
198225
logger.break();
@@ -291,6 +318,7 @@ export const scan = async (directory: string, options: ScanOptions): Promise<voi
291318
logger.break();
292319
if (scoreResult) {
293320
printScoreGauge(scoreResult.score, scoreResult.label);
321+
printDoctorAscii(scoreResult.score);
294322
} else {
295323
logger.dim(` ${OFFLINE_MESSAGE}`);
296324
}

0 commit comments

Comments
 (0)