@kubb/cli 4.32.4 → 4.33.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-Bd1QdPVV.cjs +91 -0
- package/dist/agent-Bd1QdPVV.cjs.map +1 -0
- package/dist/agent-D83d9Pud.cjs +60 -0
- package/dist/agent-D83d9Pud.cjs.map +1 -0
- package/dist/agent-DgKQXSmR.js +57 -0
- package/dist/agent-DgKQXSmR.js.map +1 -0
- package/dist/agent-u_Ehwz6r.js +87 -0
- package/dist/agent-u_Ehwz6r.js.map +1 -0
- package/dist/constants-BTUap0zs.cjs +108 -0
- package/dist/constants-BTUap0zs.cjs.map +1 -0
- package/dist/constants-CM3dJzjK.js +67 -0
- package/dist/constants-CM3dJzjK.js.map +1 -0
- package/dist/define--M_JMcDC.js +25 -0
- package/dist/define--M_JMcDC.js.map +1 -0
- package/dist/define-D6Kfm7-Z.cjs +36 -0
- package/dist/define-D6Kfm7-Z.cjs.map +1 -0
- package/dist/errors-6mF_WKxg.js +27 -0
- package/dist/errors-6mF_WKxg.js.map +1 -0
- package/dist/errors-DBW0N9w4.cjs +44 -0
- package/dist/errors-DBW0N9w4.cjs.map +1 -0
- package/dist/generate-Bn8n4w1O.cjs +65 -0
- package/dist/generate-Bn8n4w1O.cjs.map +1 -0
- package/dist/{generate-CpWtSc45.js → generate-CAsV9wSx.js} +656 -689
- package/dist/generate-CAsV9wSx.js.map +1 -0
- package/dist/generate-D-59YK0L.js +66 -0
- package/dist/generate-D-59YK0L.js.map +1 -0
- package/dist/{generate-COj0aMS6.cjs → generate-JC65igQh.cjs} +662 -694
- package/dist/generate-JC65igQh.cjs.map +1 -0
- package/dist/index.cjs +226 -35
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +226 -35
- package/dist/index.js.map +1 -1
- package/dist/init-C-InrmSY.js +302 -0
- package/dist/init-C-InrmSY.js.map +1 -0
- package/dist/init-CXP8OfMe.js +25 -0
- package/dist/init-CXP8OfMe.js.map +1 -0
- package/dist/init-CbeE-L-0.cjs +25 -0
- package/dist/init-CbeE-L-0.cjs.map +1 -0
- package/dist/init-hmolV6B4.cjs +306 -0
- package/dist/init-hmolV6B4.cjs.map +1 -0
- package/dist/jiti-Cd3S0xwr.cjs +16 -0
- package/dist/jiti-Cd3S0xwr.cjs.map +1 -0
- package/dist/jiti-e08mD2Ph.js +11 -0
- package/dist/jiti-e08mD2Ph.js.map +1 -0
- package/dist/mcp-BDxg2oJm.cjs +16 -0
- package/dist/mcp-BDxg2oJm.cjs.map +1 -0
- package/dist/mcp-ChHFPRzD.cjs +42 -0
- package/dist/mcp-ChHFPRzD.cjs.map +1 -0
- package/dist/mcp-D2SHEg_d.js +41 -0
- package/dist/mcp-D2SHEg_d.js.map +1 -0
- package/dist/mcp-MSoE4vNA.js +16 -0
- package/dist/mcp-MSoE4vNA.js.map +1 -0
- package/dist/{package-aNQWvWbS.cjs → package-CUVyeIbt.cjs} +2 -2
- package/dist/package-CUVyeIbt.cjs.map +1 -0
- package/dist/package-Cbd8OC6q.js +6 -0
- package/dist/package-Cbd8OC6q.js.map +1 -0
- package/dist/shell-7HPrTCJ5.cjs +57 -0
- package/dist/shell-7HPrTCJ5.cjs.map +1 -0
- package/dist/shell-DqqWsHCD.js +46 -0
- package/dist/shell-DqqWsHCD.js.map +1 -0
- package/dist/{telemetry-BDSSqUiG.cjs → telemetry-Cn9X1I5B.cjs} +79 -9
- package/dist/telemetry-Cn9X1I5B.cjs.map +1 -0
- package/dist/{telemetry-DYWvlxqs.js → telemetry-DxiR7clS.js} +63 -11
- package/dist/telemetry-DxiR7clS.js.map +1 -0
- package/dist/validate-BG8A3aQS.cjs +25 -0
- package/dist/validate-BG8A3aQS.cjs.map +1 -0
- package/dist/validate-BZ1UFkwA.js +25 -0
- package/dist/validate-BZ1UFkwA.js.map +1 -0
- package/dist/validate-Bbrn3Q-A.cjs +42 -0
- package/dist/validate-Bbrn3Q-A.cjs.map +1 -0
- package/dist/validate-l8vLmwKA.js +41 -0
- package/dist/validate-l8vLmwKA.js.map +1 -0
- package/package.json +6 -6
- package/src/commands/agent/start.ts +27 -136
- package/src/commands/agent.ts +6 -25
- package/src/commands/generate.ts +26 -158
- package/src/commands/init.ts +9 -360
- package/src/commands/mcp.ts +7 -52
- package/src/commands/validate.ts +9 -60
- package/src/constants.ts +76 -0
- package/src/index.ts +36 -42
- package/src/loggers/clackLogger.ts +65 -165
- package/src/loggers/fileSystemLogger.ts +2 -14
- package/src/loggers/githubActionsLogger.ts +58 -125
- package/src/loggers/plainLogger.ts +44 -92
- package/src/loggers/utils.ts +67 -4
- package/src/runners/agent.ts +100 -0
- package/src/runners/generate.ts +223 -102
- package/src/runners/init.ts +323 -0
- package/src/runners/mcp.ts +32 -0
- package/src/runners/validate.ts +35 -0
- package/src/utils/Writables.ts +2 -2
- package/src/utils/executeHooks.ts +20 -8
- package/src/utils/getCosmiConfig.ts +10 -11
- package/src/utils/getIntro.ts +1 -81
- package/src/utils/getSummary.ts +12 -17
- package/src/utils/jiti.ts +9 -0
- package/src/utils/packageManager.ts +4 -4
- package/src/utils/runHook.ts +75 -0
- package/src/utils/telemetry.ts +8 -26
- package/src/utils/watcher.ts +2 -4
- package/dist/agent-6COck3B9.cjs +0 -20
- package/dist/agent-6COck3B9.cjs.map +0 -1
- package/dist/agent-DMm6c5Vg.js +0 -20
- package/dist/agent-DMm6c5Vg.js.map +0 -1
- package/dist/generate-COj0aMS6.cjs.map +0 -1
- package/dist/generate-CpWtSc45.js.map +0 -1
- package/dist/init-Bdn3_qir.js +0 -304
- package/dist/init-Bdn3_qir.js.map +0 -1
- package/dist/init-CFW2kWY8.cjs +0 -308
- package/dist/init-CFW2kWY8.cjs.map +0 -1
- package/dist/mcp-DkwtARfo.cjs +0 -57
- package/dist/mcp-DkwtARfo.cjs.map +0 -1
- package/dist/mcp-DrH93Vq4.js +0 -57
- package/dist/mcp-DrH93Vq4.js.map +0 -1
- package/dist/package-BnJbGmLm.js +0 -6
- package/dist/package-BnJbGmLm.js.map +0 -1
- package/dist/package-aNQWvWbS.cjs.map +0 -1
- package/dist/start-CqTUu14n.js +0 -131
- package/dist/start-CqTUu14n.js.map +0 -1
- package/dist/start-D-rsIJGo.cjs +0 -134
- package/dist/start-D-rsIJGo.cjs.map +0 -1
- package/dist/telemetry-BDSSqUiG.cjs.map +0 -1
- package/dist/telemetry-DYWvlxqs.js.map +0 -1
- package/dist/validate-BlV8L8gC.js +0 -66
- package/dist/validate-BlV8L8gC.js.map +0 -1
- package/dist/validate-COhZUXF8.cjs +0 -66
- package/dist/validate-COhZUXF8.cjs.map +0 -1
- package/src/loggers/envDetection.ts +0 -28
- package/src/loggers/index.ts +0 -5
- package/src/utils/formatMsWithColor.ts +0 -22
- package/src/utils/randomColor.ts +0 -23
|
@@ -2,13 +2,13 @@ import { relative } from 'node:path'
|
|
|
2
2
|
import process from 'node:process'
|
|
3
3
|
import { styleText } from 'node:util'
|
|
4
4
|
import * as clack from '@clack/prompts'
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { type NonZeroExitError, x } from 'tinyexec'
|
|
8
|
-
import { formatMsWithColor } from '../utils/formatMsWithColor.ts'
|
|
5
|
+
import { formatMs, formatMsWithColor, toCause } from '@internals/utils'
|
|
6
|
+
import { defineLogger, logLevel as logLevelMap } from '@kubb/core'
|
|
9
7
|
import { getIntro } from '../utils/getIntro.ts'
|
|
10
8
|
import { getSummary } from '../utils/getSummary.ts'
|
|
9
|
+
import { runHook } from '../utils/runHook.ts'
|
|
11
10
|
import { ClackWritable } from '../utils/Writables.ts'
|
|
11
|
+
import { buildProgressLine, formatCommandWithArgs, formatMessage } from './utils.ts'
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Clack adapter for local TTY environments
|
|
@@ -17,7 +17,7 @@ import { ClackWritable } from '../utils/Writables.ts'
|
|
|
17
17
|
export const clackLogger = defineLogger({
|
|
18
18
|
name: 'clack',
|
|
19
19
|
install(context, options) {
|
|
20
|
-
const logLevel = options?.logLevel
|
|
20
|
+
const logLevel = options?.logLevel ?? logLevelMap.info
|
|
21
21
|
const state = {
|
|
22
22
|
totalPlugins: 0,
|
|
23
23
|
completedPlugins: 0,
|
|
@@ -50,44 +50,18 @@ export const clackLogger = defineLogger({
|
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
function showProgressStep() {
|
|
53
|
-
if (logLevel <=
|
|
53
|
+
if (logLevel <= logLevelMap.silent) {
|
|
54
54
|
return
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
if (state.totalPlugins > 0) {
|
|
61
|
-
const pluginStr =
|
|
62
|
-
state.failedPlugins > 0
|
|
63
|
-
? `Plugins ${styleText('green', state.completedPlugins.toString())}/${state.totalPlugins} ${styleText('red', `(${state.failedPlugins} failed)`)}`
|
|
64
|
-
: `Plugins ${styleText('green', state.completedPlugins.toString())}/${state.totalPlugins}`
|
|
65
|
-
parts.push(pluginStr)
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
if (state.totalFiles > 0) {
|
|
69
|
-
parts.push(`Files ${styleText('green', state.processedFiles.toString())}/${state.totalFiles}`)
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
if (parts.length > 0) {
|
|
73
|
-
parts.push(`${styleText('green', duration)} elapsed`)
|
|
74
|
-
clack.log.step(getMessage(parts.join(styleText('dim', ' | '))))
|
|
57
|
+
const line = buildProgressLine(state)
|
|
58
|
+
if (line) {
|
|
59
|
+
clack.log.step(getMessage(line))
|
|
75
60
|
}
|
|
76
61
|
}
|
|
77
62
|
|
|
78
63
|
function getMessage(message: string): string {
|
|
79
|
-
|
|
80
|
-
const timestamp = new Date().toLocaleTimeString('en-US', {
|
|
81
|
-
hour12: false,
|
|
82
|
-
hour: '2-digit',
|
|
83
|
-
minute: '2-digit',
|
|
84
|
-
second: '2-digit',
|
|
85
|
-
})
|
|
86
|
-
|
|
87
|
-
return [styleText('dim', `[${timestamp}]`), message].join(' ')
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
return message
|
|
64
|
+
return formatMessage(message, logLevel)
|
|
91
65
|
}
|
|
92
66
|
|
|
93
67
|
function startSpinner(text?: string) {
|
|
@@ -101,7 +75,7 @@ export const clackLogger = defineLogger({
|
|
|
101
75
|
}
|
|
102
76
|
|
|
103
77
|
context.on('info', (message, info = '') => {
|
|
104
|
-
if (logLevel <=
|
|
78
|
+
if (logLevel <= logLevelMap.silent) {
|
|
105
79
|
return
|
|
106
80
|
}
|
|
107
81
|
|
|
@@ -115,11 +89,11 @@ export const clackLogger = defineLogger({
|
|
|
115
89
|
})
|
|
116
90
|
|
|
117
91
|
context.on('success', (message, info = '') => {
|
|
118
|
-
if (logLevel <=
|
|
92
|
+
if (logLevel <= logLevelMap.silent) {
|
|
119
93
|
return
|
|
120
94
|
}
|
|
121
95
|
|
|
122
|
-
const text = getMessage([styleText('blue', '✓'), message, logLevel >=
|
|
96
|
+
const text = getMessage([styleText('blue', '✓'), message, logLevel >= logLevelMap.info ? styleText('dim', info) : undefined].filter(Boolean).join(' '))
|
|
123
97
|
|
|
124
98
|
if (state.isSpinning) {
|
|
125
99
|
stopSpinner(text)
|
|
@@ -129,19 +103,19 @@ export const clackLogger = defineLogger({
|
|
|
129
103
|
})
|
|
130
104
|
|
|
131
105
|
context.on('warn', (message, info) => {
|
|
132
|
-
if (logLevel <
|
|
106
|
+
if (logLevel < logLevelMap.warn) {
|
|
133
107
|
return
|
|
134
108
|
}
|
|
135
109
|
|
|
136
110
|
const text = getMessage(
|
|
137
|
-
[styleText('yellow', '⚠'), message, logLevel >=
|
|
111
|
+
[styleText('yellow', '⚠'), message, logLevel >= logLevelMap.info && info ? styleText('dim', info) : undefined].filter(Boolean).join(' '),
|
|
138
112
|
)
|
|
139
113
|
|
|
140
114
|
clack.log.warn(text)
|
|
141
115
|
})
|
|
142
116
|
|
|
143
117
|
context.on('error', (error) => {
|
|
144
|
-
const caused = error
|
|
118
|
+
const caused = toCause(error)
|
|
145
119
|
|
|
146
120
|
const text = [styleText('red', '✗'), error.message].join(' ')
|
|
147
121
|
|
|
@@ -152,7 +126,7 @@ export const clackLogger = defineLogger({
|
|
|
152
126
|
}
|
|
153
127
|
|
|
154
128
|
// Show stack trace in debug mode (first 3 frames)
|
|
155
|
-
if (logLevel >=
|
|
129
|
+
if (logLevel >= logLevelMap.debug && error.stack) {
|
|
156
130
|
const frames = error.stack.split('\n').slice(1, 4)
|
|
157
131
|
for (const frame of frames) {
|
|
158
132
|
clack.log.message(getMessage(styleText('dim', frame.trim())))
|
|
@@ -170,7 +144,7 @@ export const clackLogger = defineLogger({
|
|
|
170
144
|
})
|
|
171
145
|
|
|
172
146
|
context.on('version:new', (version, latestVersion) => {
|
|
173
|
-
if (logLevel <=
|
|
147
|
+
if (logLevel <= logLevelMap.silent) {
|
|
174
148
|
return
|
|
175
149
|
}
|
|
176
150
|
|
|
@@ -196,7 +170,7 @@ Run \`npm install -g @kubb/cli\` to update`,
|
|
|
196
170
|
})
|
|
197
171
|
|
|
198
172
|
context.on('config:start', () => {
|
|
199
|
-
if (logLevel <=
|
|
173
|
+
if (logLevel <= logLevelMap.silent) {
|
|
200
174
|
return
|
|
201
175
|
}
|
|
202
176
|
|
|
@@ -207,7 +181,7 @@ Run \`npm install -g @kubb/cli\` to update`,
|
|
|
207
181
|
})
|
|
208
182
|
|
|
209
183
|
context.on('config:end', (_configs) => {
|
|
210
|
-
if (logLevel <=
|
|
184
|
+
if (logLevel <= logLevelMap.silent) {
|
|
211
185
|
return
|
|
212
186
|
}
|
|
213
187
|
|
|
@@ -217,17 +191,18 @@ Run \`npm install -g @kubb/cli\` to update`,
|
|
|
217
191
|
})
|
|
218
192
|
|
|
219
193
|
context.on('generation:start', (config) => {
|
|
220
|
-
|
|
221
|
-
|
|
194
|
+
reset()
|
|
195
|
+
|
|
196
|
+
// Initialize progress tracking for this generation
|
|
197
|
+
state.totalPlugins = config.plugins?.length ?? 0
|
|
222
198
|
|
|
223
199
|
const text = getMessage(['Generation started', config.name ? `for ${styleText('dim', config.name)}` : undefined].filter(Boolean).join(' '))
|
|
224
200
|
|
|
225
201
|
clack.intro(text)
|
|
226
|
-
reset()
|
|
227
202
|
})
|
|
228
203
|
|
|
229
204
|
context.on('plugin:start', (plugin) => {
|
|
230
|
-
if (logLevel <=
|
|
205
|
+
if (logLevel <= logLevelMap.silent) {
|
|
231
206
|
return
|
|
232
207
|
}
|
|
233
208
|
|
|
@@ -253,7 +228,7 @@ Run \`npm install -g @kubb/cli\` to update`,
|
|
|
253
228
|
|
|
254
229
|
const active = state.activeProgress.get(plugin.name)
|
|
255
230
|
|
|
256
|
-
if (!active || logLevel ===
|
|
231
|
+
if (!active || logLevel === logLevelMap.silent) {
|
|
257
232
|
return
|
|
258
233
|
}
|
|
259
234
|
|
|
@@ -280,7 +255,7 @@ Run \`npm install -g @kubb/cli\` to update`,
|
|
|
280
255
|
})
|
|
281
256
|
|
|
282
257
|
context.on('files:processing:start', (files) => {
|
|
283
|
-
if (logLevel <=
|
|
258
|
+
if (logLevel <= logLevelMap.silent) {
|
|
284
259
|
return
|
|
285
260
|
}
|
|
286
261
|
|
|
@@ -302,7 +277,7 @@ Run \`npm install -g @kubb/cli\` to update`,
|
|
|
302
277
|
})
|
|
303
278
|
|
|
304
279
|
context.on('file:processing:update', ({ file, config }) => {
|
|
305
|
-
if (logLevel <=
|
|
280
|
+
if (logLevel <= logLevelMap.silent) {
|
|
306
281
|
return
|
|
307
282
|
}
|
|
308
283
|
|
|
@@ -320,7 +295,7 @@ Run \`npm install -g @kubb/cli\` to update`,
|
|
|
320
295
|
active.progressBar.advance(undefined, text)
|
|
321
296
|
})
|
|
322
297
|
context.on('files:processing:end', () => {
|
|
323
|
-
if (logLevel <=
|
|
298
|
+
if (logLevel <= logLevelMap.silent) {
|
|
324
299
|
return
|
|
325
300
|
}
|
|
326
301
|
|
|
@@ -347,7 +322,7 @@ Run \`npm install -g @kubb/cli\` to update`,
|
|
|
347
322
|
})
|
|
348
323
|
|
|
349
324
|
context.on('format:start', () => {
|
|
350
|
-
if (logLevel <=
|
|
325
|
+
if (logLevel <= logLevelMap.silent) {
|
|
351
326
|
return
|
|
352
327
|
}
|
|
353
328
|
|
|
@@ -357,7 +332,7 @@ Run \`npm install -g @kubb/cli\` to update`,
|
|
|
357
332
|
})
|
|
358
333
|
|
|
359
334
|
context.on('format:end', () => {
|
|
360
|
-
if (logLevel <=
|
|
335
|
+
if (logLevel <= logLevelMap.silent) {
|
|
361
336
|
return
|
|
362
337
|
}
|
|
363
338
|
|
|
@@ -367,7 +342,7 @@ Run \`npm install -g @kubb/cli\` to update`,
|
|
|
367
342
|
})
|
|
368
343
|
|
|
369
344
|
context.on('lint:start', () => {
|
|
370
|
-
if (logLevel <=
|
|
345
|
+
if (logLevel <= logLevelMap.silent) {
|
|
371
346
|
return
|
|
372
347
|
}
|
|
373
348
|
|
|
@@ -377,7 +352,7 @@ Run \`npm install -g @kubb/cli\` to update`,
|
|
|
377
352
|
})
|
|
378
353
|
|
|
379
354
|
context.on('lint:end', () => {
|
|
380
|
-
if (logLevel <=
|
|
355
|
+
if (logLevel <= logLevelMap.silent) {
|
|
381
356
|
return
|
|
382
357
|
}
|
|
383
358
|
|
|
@@ -387,7 +362,7 @@ Run \`npm install -g @kubb/cli\` to update`,
|
|
|
387
362
|
})
|
|
388
363
|
|
|
389
364
|
context.on('hook:start', async ({ id, command, args }) => {
|
|
390
|
-
const commandWithArgs =
|
|
365
|
+
const commandWithArgs = formatCommandWithArgs(command, args)
|
|
391
366
|
const text = getMessage(`Hook ${styleText('dim', commandWithArgs)} started`)
|
|
392
367
|
|
|
393
368
|
// Skip hook execution if no id is provided (e.g., during benchmarks or tests)
|
|
@@ -395,113 +370,50 @@ Run \`npm install -g @kubb/cli\` to update`,
|
|
|
395
370
|
return
|
|
396
371
|
}
|
|
397
372
|
|
|
398
|
-
if (logLevel <=
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
}
|
|
409
|
-
|
|
410
|
-
await context.emit('hook:end', {
|
|
411
|
-
command,
|
|
412
|
-
args,
|
|
413
|
-
id,
|
|
414
|
-
success: true,
|
|
415
|
-
error: null,
|
|
416
|
-
})
|
|
417
|
-
} catch (err) {
|
|
418
|
-
const error = err as NonZeroExitError
|
|
419
|
-
const stderr = error.output?.stderr ?? ''
|
|
420
|
-
const stdout = error.output?.stdout ?? ''
|
|
421
|
-
|
|
422
|
-
await context.emit('debug', {
|
|
423
|
-
date: new Date(),
|
|
424
|
-
logs: [stdout, stderr].filter(Boolean),
|
|
425
|
-
})
|
|
426
|
-
|
|
427
|
-
if (stderr) {
|
|
428
|
-
console.error(stderr)
|
|
429
|
-
}
|
|
430
|
-
if (stdout) {
|
|
431
|
-
console.log(stdout)
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
const errorMessage = new Error(`Hook execute failed: ${commandWithArgs}`)
|
|
435
|
-
|
|
436
|
-
await context.emit('hook:end', {
|
|
437
|
-
command,
|
|
438
|
-
args,
|
|
439
|
-
id,
|
|
440
|
-
success: false,
|
|
441
|
-
error: errorMessage,
|
|
442
|
-
})
|
|
443
|
-
await context.emit('error', errorMessage)
|
|
444
|
-
}
|
|
445
|
-
|
|
373
|
+
if (logLevel <= logLevelMap.silent) {
|
|
374
|
+
await runHook({
|
|
375
|
+
id,
|
|
376
|
+
command,
|
|
377
|
+
args,
|
|
378
|
+
commandWithArgs,
|
|
379
|
+
context,
|
|
380
|
+
sink: {
|
|
381
|
+
onStderr: (s) => console.error(s),
|
|
382
|
+
onStdout: (s) => console.log(s),
|
|
383
|
+
},
|
|
384
|
+
})
|
|
446
385
|
return
|
|
447
386
|
}
|
|
448
387
|
|
|
449
388
|
clack.intro(text)
|
|
450
389
|
|
|
451
390
|
const logger = clack.taskLog({
|
|
452
|
-
title: getMessage(['Executing hook', logLevel >=
|
|
391
|
+
title: getMessage(['Executing hook', logLevel >= logLevelMap.info ? styleText('dim', commandWithArgs) : undefined].filter(Boolean).join(' ')),
|
|
453
392
|
})
|
|
454
393
|
|
|
455
394
|
const writable = new ClackWritable(logger)
|
|
456
395
|
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
date: new Date(),
|
|
471
|
-
logs: [result.stdout.trimEnd()],
|
|
472
|
-
})
|
|
473
|
-
|
|
474
|
-
await context.emit('hook:end', { command, args, id, success: true, error: null })
|
|
475
|
-
} catch (err) {
|
|
476
|
-
const error = err as NonZeroExitError
|
|
477
|
-
const stderr = error.output?.stderr ?? ''
|
|
478
|
-
const stdout = error.output?.stdout ?? ''
|
|
479
|
-
|
|
480
|
-
await context.emit('debug', {
|
|
481
|
-
date: new Date(),
|
|
482
|
-
logs: [stdout, stderr].filter(Boolean),
|
|
483
|
-
})
|
|
484
|
-
|
|
485
|
-
if (stderr) {
|
|
486
|
-
logger.error(stderr)
|
|
487
|
-
}
|
|
488
|
-
if (stdout) {
|
|
489
|
-
logger.message(stdout)
|
|
490
|
-
}
|
|
491
|
-
|
|
492
|
-
const errorMessage = new Error(`Hook execute failed: ${commandWithArgs}`)
|
|
493
|
-
|
|
494
|
-
await context.emit('hook:end', { command, args, id, success: false, error: errorMessage })
|
|
495
|
-
await context.emit('error', errorMessage)
|
|
496
|
-
}
|
|
396
|
+
await runHook({
|
|
397
|
+
id,
|
|
398
|
+
command,
|
|
399
|
+
args,
|
|
400
|
+
commandWithArgs,
|
|
401
|
+
context,
|
|
402
|
+
stream: true,
|
|
403
|
+
sink: {
|
|
404
|
+
onLine: (line) => writable.write(line),
|
|
405
|
+
onStderr: (s) => logger.error(s),
|
|
406
|
+
onStdout: (s) => logger.message(s),
|
|
407
|
+
},
|
|
408
|
+
})
|
|
497
409
|
})
|
|
498
410
|
|
|
499
411
|
context.on('hook:end', ({ command, args }) => {
|
|
500
|
-
if (logLevel <=
|
|
412
|
+
if (logLevel <= logLevelMap.silent) {
|
|
501
413
|
return
|
|
502
414
|
}
|
|
503
415
|
|
|
504
|
-
const commandWithArgs =
|
|
416
|
+
const commandWithArgs = formatCommandWithArgs(command, args)
|
|
505
417
|
const text = getMessage(`Hook ${styleText('dim', commandWithArgs)} successfully executed`)
|
|
506
418
|
|
|
507
419
|
clack.outro(text)
|
|
@@ -514,29 +426,17 @@ Run \`npm install -g @kubb/cli\` to update`,
|
|
|
514
426
|
config,
|
|
515
427
|
status,
|
|
516
428
|
hrStart,
|
|
517
|
-
pluginTimings: logLevel >=
|
|
429
|
+
pluginTimings: logLevel >= logLevelMap.verbose ? pluginTimings : undefined,
|
|
518
430
|
})
|
|
519
431
|
const title = config.name || ''
|
|
520
432
|
|
|
521
433
|
summary.unshift('\n')
|
|
522
434
|
summary.push('\n')
|
|
523
435
|
|
|
524
|
-
|
|
525
|
-
clack.box(summary.join('\n'), getMessage(title), {
|
|
526
|
-
width: 'auto',
|
|
527
|
-
formatBorder: (s: string) => styleText('green', s),
|
|
528
|
-
rounded: true,
|
|
529
|
-
withGuide: false,
|
|
530
|
-
contentAlign: 'left',
|
|
531
|
-
titleAlign: 'center',
|
|
532
|
-
})
|
|
533
|
-
|
|
534
|
-
return
|
|
535
|
-
}
|
|
536
|
-
|
|
436
|
+
const borderColor = status === 'success' ? 'green' : 'red'
|
|
537
437
|
clack.box(summary.join('\n'), getMessage(title), {
|
|
538
438
|
width: 'auto',
|
|
539
|
-
formatBorder: (s: string) => styleText(
|
|
439
|
+
formatBorder: (s: string) => styleText(borderColor, s),
|
|
540
440
|
rounded: true,
|
|
541
441
|
withGuide: false,
|
|
542
442
|
contentAlign: 'left',
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { relative, resolve } from 'node:path'
|
|
2
|
+
import process from 'node:process'
|
|
3
|
+
import { formatMs, write } from '@internals/utils'
|
|
2
4
|
import { defineLogger } from '@kubb/core'
|
|
3
|
-
import { write } from '@kubb/core/fs'
|
|
4
|
-
import { formatMs } from '@kubb/core/utils'
|
|
5
5
|
|
|
6
6
|
type CachedEvent = {
|
|
7
7
|
date: Date
|
|
@@ -63,7 +63,6 @@ export const fileSystemLogger = defineLogger({
|
|
|
63
63
|
state.cachedLogs.add({
|
|
64
64
|
date: new Date(),
|
|
65
65
|
logs: [`ℹ ${message} ${info}`],
|
|
66
|
-
fileName: undefined,
|
|
67
66
|
})
|
|
68
67
|
})
|
|
69
68
|
|
|
@@ -71,7 +70,6 @@ export const fileSystemLogger = defineLogger({
|
|
|
71
70
|
state.cachedLogs.add({
|
|
72
71
|
date: new Date(),
|
|
73
72
|
logs: [`✓ ${message} ${info}`],
|
|
74
|
-
fileName: undefined,
|
|
75
73
|
})
|
|
76
74
|
})
|
|
77
75
|
|
|
@@ -79,7 +77,6 @@ export const fileSystemLogger = defineLogger({
|
|
|
79
77
|
state.cachedLogs.add({
|
|
80
78
|
date: new Date(),
|
|
81
79
|
logs: [`⚠ ${message} ${info}`],
|
|
82
|
-
fileName: undefined,
|
|
83
80
|
})
|
|
84
81
|
})
|
|
85
82
|
|
|
@@ -87,7 +84,6 @@ export const fileSystemLogger = defineLogger({
|
|
|
87
84
|
state.cachedLogs.add({
|
|
88
85
|
date: new Date(),
|
|
89
86
|
logs: [`✗ ${error.message}`, error.stack || 'unknown stack'],
|
|
90
|
-
fileName: undefined,
|
|
91
87
|
})
|
|
92
88
|
})
|
|
93
89
|
|
|
@@ -95,7 +91,6 @@ export const fileSystemLogger = defineLogger({
|
|
|
95
91
|
state.cachedLogs.add({
|
|
96
92
|
date: new Date(),
|
|
97
93
|
logs: message.logs,
|
|
98
|
-
fileName: undefined,
|
|
99
94
|
})
|
|
100
95
|
})
|
|
101
96
|
|
|
@@ -103,7 +98,6 @@ export const fileSystemLogger = defineLogger({
|
|
|
103
98
|
state.cachedLogs.add({
|
|
104
99
|
date: new Date(),
|
|
105
100
|
logs: [`Generating ${plugin.name}`],
|
|
106
|
-
fileName: undefined,
|
|
107
101
|
})
|
|
108
102
|
})
|
|
109
103
|
|
|
@@ -113,7 +107,6 @@ export const fileSystemLogger = defineLogger({
|
|
|
113
107
|
state.cachedLogs.add({
|
|
114
108
|
date: new Date(),
|
|
115
109
|
logs: [success ? `${plugin.name} completed in ${durationStr}` : `${plugin.name} failed in ${durationStr}`],
|
|
116
|
-
fileName: undefined,
|
|
117
110
|
})
|
|
118
111
|
})
|
|
119
112
|
|
|
@@ -121,7 +114,6 @@ export const fileSystemLogger = defineLogger({
|
|
|
121
114
|
state.cachedLogs.add({
|
|
122
115
|
date: new Date(),
|
|
123
116
|
logs: [`Start ${files.length} writing:`, ...files.map((file) => file.path)],
|
|
124
|
-
fileName: undefined,
|
|
125
117
|
})
|
|
126
118
|
})
|
|
127
119
|
|
|
@@ -134,10 +126,6 @@ export const fileSystemLogger = defineLogger({
|
|
|
134
126
|
reset()
|
|
135
127
|
})
|
|
136
128
|
|
|
137
|
-
context.on('lifecycle:end', async () => {
|
|
138
|
-
// lifecycle:end handler can be used for cleanup if needed in the future
|
|
139
|
-
})
|
|
140
|
-
|
|
141
129
|
// Fallback: Write logs on process exit to handle crashes
|
|
142
130
|
const exitHandler = () => {
|
|
143
131
|
// Synchronous write on exit - best effort
|