driftdetect 0.4.7 → 0.6.0

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.
Files changed (92) hide show
  1. package/dist/bin/drift.js +37 -1
  2. package/dist/bin/drift.js.map +1 -1
  3. package/dist/commands/approve.d.ts +20 -0
  4. package/dist/commands/approve.d.ts.map +1 -1
  5. package/dist/commands/approve.js +38 -72
  6. package/dist/commands/approve.js.map +1 -1
  7. package/dist/commands/check.d.ts +41 -0
  8. package/dist/commands/check.d.ts.map +1 -1
  9. package/dist/commands/check.js +21 -11
  10. package/dist/commands/check.js.map +1 -1
  11. package/dist/commands/constraints.d.ts +17 -0
  12. package/dist/commands/constraints.d.ts.map +1 -0
  13. package/dist/commands/constraints.js +686 -0
  14. package/dist/commands/constraints.js.map +1 -0
  15. package/dist/commands/coupling.d.ts +17 -0
  16. package/dist/commands/coupling.d.ts.map +1 -0
  17. package/dist/commands/coupling.js +726 -0
  18. package/dist/commands/coupling.js.map +1 -0
  19. package/dist/commands/decisions.d.ts +19 -0
  20. package/dist/commands/decisions.d.ts.map +1 -0
  21. package/dist/commands/decisions.js +771 -0
  22. package/dist/commands/decisions.js.map +1 -0
  23. package/dist/commands/error-handling.d.ts +15 -0
  24. package/dist/commands/error-handling.d.ts.map +1 -0
  25. package/dist/commands/error-handling.js +608 -0
  26. package/dist/commands/error-handling.js.map +1 -0
  27. package/dist/commands/export.d.ts +16 -0
  28. package/dist/commands/export.d.ts.map +1 -1
  29. package/dist/commands/export.js +46 -50
  30. package/dist/commands/export.js.map +1 -1
  31. package/dist/commands/files.d.ts +15 -0
  32. package/dist/commands/files.d.ts.map +1 -1
  33. package/dist/commands/files.js +27 -48
  34. package/dist/commands/files.js.map +1 -1
  35. package/dist/commands/go.d.ts +21 -0
  36. package/dist/commands/go.d.ts.map +1 -0
  37. package/dist/commands/go.js +530 -0
  38. package/dist/commands/go.js.map +1 -0
  39. package/dist/commands/ignore.d.ts +20 -0
  40. package/dist/commands/ignore.d.ts.map +1 -1
  41. package/dist/commands/ignore.js +25 -48
  42. package/dist/commands/ignore.js.map +1 -1
  43. package/dist/commands/index.d.ts +11 -0
  44. package/dist/commands/index.d.ts.map +1 -1
  45. package/dist/commands/index.js +15 -0
  46. package/dist/commands/index.js.map +1 -1
  47. package/dist/commands/migrate-storage.d.ts +23 -0
  48. package/dist/commands/migrate-storage.d.ts.map +1 -0
  49. package/dist/commands/migrate-storage.js +337 -0
  50. package/dist/commands/migrate-storage.js.map +1 -0
  51. package/dist/commands/report.d.ts +22 -0
  52. package/dist/commands/report.d.ts.map +1 -1
  53. package/dist/commands/report.js +19 -10
  54. package/dist/commands/report.js.map +1 -1
  55. package/dist/commands/scan.d.ts +2 -0
  56. package/dist/commands/scan.d.ts.map +1 -1
  57. package/dist/commands/scan.js +134 -3
  58. package/dist/commands/scan.js.map +1 -1
  59. package/dist/commands/simulate.d.ts +17 -0
  60. package/dist/commands/simulate.d.ts.map +1 -0
  61. package/dist/commands/simulate.js +253 -0
  62. package/dist/commands/simulate.js.map +1 -0
  63. package/dist/commands/skills.d.ts +16 -0
  64. package/dist/commands/skills.d.ts.map +1 -0
  65. package/dist/commands/skills.js +409 -0
  66. package/dist/commands/skills.js.map +1 -0
  67. package/dist/commands/status.d.ts +20 -0
  68. package/dist/commands/status.d.ts.map +1 -1
  69. package/dist/commands/status.js +74 -72
  70. package/dist/commands/status.js.map +1 -1
  71. package/dist/commands/test-topology.d.ts +15 -0
  72. package/dist/commands/test-topology.d.ts.map +1 -0
  73. package/dist/commands/test-topology.js +589 -0
  74. package/dist/commands/test-topology.js.map +1 -0
  75. package/dist/commands/where.d.ts +15 -0
  76. package/dist/commands/where.d.ts.map +1 -1
  77. package/dist/commands/where.js +41 -88
  78. package/dist/commands/where.js.map +1 -1
  79. package/dist/commands/wpf.d.ts +21 -0
  80. package/dist/commands/wpf.d.ts.map +1 -0
  81. package/dist/commands/wpf.js +632 -0
  82. package/dist/commands/wpf.js.map +1 -0
  83. package/dist/commands/wrappers.d.ts +16 -0
  84. package/dist/commands/wrappers.d.ts.map +1 -0
  85. package/dist/commands/wrappers.js +181 -0
  86. package/dist/commands/wrappers.js.map +1 -0
  87. package/dist/services/pattern-service-factory.d.ts +37 -0
  88. package/dist/services/pattern-service-factory.d.ts.map +1 -0
  89. package/dist/services/pattern-service-factory.js +41 -0
  90. package/dist/services/pattern-service-factory.js.map +1 -0
  91. package/package.json +35 -23
  92. package/LICENSE +0 -21
@@ -0,0 +1,530 @@
1
+ /**
2
+ * Go Command - drift go
3
+ *
4
+ * Analyze Go projects: routes, error handling, interfaces, data access.
5
+ *
6
+ * @requirements Go Language Support
7
+ */
8
+ import { Command } from 'commander';
9
+ import chalk from 'chalk';
10
+ import { createGoAnalyzer } from 'driftdetect-core';
11
+ import { createSpinner } from '../ui/spinner.js';
12
+ /**
13
+ * Create the Go command
14
+ */
15
+ export function createGoCommand() {
16
+ const go = new Command('go')
17
+ .description('Go language analysis commands');
18
+ // drift go routes
19
+ go
20
+ .command('routes [path]')
21
+ .description('List all HTTP routes (Gin, Echo, Chi, Fiber, net/http)')
22
+ .option('-f, --format <format>', 'Output format: text, json', 'text')
23
+ .option('-v, --verbose', 'Enable verbose output')
24
+ .option('--framework <framework>', 'Filter by framework')
25
+ .action(async (targetPath, options) => {
26
+ await routesAction(targetPath, options);
27
+ });
28
+ // drift go errors
29
+ go
30
+ .command('errors [path]')
31
+ .description('Analyze error handling patterns')
32
+ .option('-f, --format <format>', 'Output format: text, json', 'text')
33
+ .option('-v, --verbose', 'Enable verbose output')
34
+ .action(async (targetPath, options) => {
35
+ await errorsAction(targetPath, options);
36
+ });
37
+ // drift go interfaces
38
+ go
39
+ .command('interfaces [path]')
40
+ .description('List interfaces and their implementations')
41
+ .option('-f, --format <format>', 'Output format: text, json', 'text')
42
+ .option('-v, --verbose', 'Enable verbose output')
43
+ .action(async (targetPath, options) => {
44
+ await interfacesAction(targetPath, options);
45
+ });
46
+ // drift go data-access
47
+ go
48
+ .command('data-access [path]')
49
+ .description('Analyze database access patterns (GORM, sqlx, database/sql, Ent, Bun)')
50
+ .option('-f, --format <format>', 'Output format: text, json', 'text')
51
+ .option('-v, --verbose', 'Enable verbose output')
52
+ .action(async (targetPath, options) => {
53
+ await dataAccessAction(targetPath, options);
54
+ });
55
+ // drift go goroutines
56
+ go
57
+ .command('goroutines [path]')
58
+ .description('Analyze goroutines and concurrency patterns')
59
+ .option('-f, --format <format>', 'Output format: text, json', 'text')
60
+ .option('-v, --verbose', 'Enable verbose output')
61
+ .action(async (targetPath, options) => {
62
+ await goroutinesAction(targetPath, options);
63
+ });
64
+ // drift go status
65
+ go
66
+ .command('status [path]')
67
+ .description('Show Go project analysis summary')
68
+ .option('-f, --format <format>', 'Output format: text, json', 'text')
69
+ .option('-v, --verbose', 'Enable verbose output')
70
+ .action(async (targetPath, options) => {
71
+ await statusAction(targetPath, options);
72
+ });
73
+ return go;
74
+ }
75
+ /**
76
+ * Routes subcommand
77
+ */
78
+ async function routesAction(targetPath, options) {
79
+ const rootDir = targetPath ?? process.cwd();
80
+ const format = options.format ?? 'text';
81
+ const isTextFormat = format === 'text';
82
+ const spinner = isTextFormat ? createSpinner('Analyzing Go routes...') : null;
83
+ spinner?.start();
84
+ try {
85
+ const analyzer = createGoAnalyzer({ rootDir, verbose: options.verbose });
86
+ const result = await analyzer.analyzeRoutes();
87
+ spinner?.stop();
88
+ // Filter by framework if specified
89
+ let routes = result.routes;
90
+ if (options.framework) {
91
+ routes = routes.filter((r) => r.framework === options.framework);
92
+ }
93
+ // JSON output
94
+ if (format === 'json') {
95
+ console.log(JSON.stringify({
96
+ total: routes.length,
97
+ byFramework: result.byFramework,
98
+ routes,
99
+ }, null, 2));
100
+ return;
101
+ }
102
+ // Text output
103
+ console.log();
104
+ console.log(chalk.bold('🛣️ Go HTTP Routes'));
105
+ console.log(chalk.gray('─'.repeat(60)));
106
+ console.log();
107
+ if (routes.length === 0) {
108
+ console.log(chalk.gray('No routes found'));
109
+ console.log();
110
+ return;
111
+ }
112
+ // Group by framework
113
+ const byFramework = new Map();
114
+ for (const route of routes) {
115
+ const existing = byFramework.get(route.framework) ?? [];
116
+ existing.push(route);
117
+ byFramework.set(route.framework, existing);
118
+ }
119
+ for (const [framework, frameworkRoutes] of byFramework) {
120
+ console.log(chalk.bold(`${framework} (${frameworkRoutes.length} routes)`));
121
+ for (const route of frameworkRoutes) {
122
+ const methodColor = getMethodColor(route.method);
123
+ console.log(` ${methodColor(route.method.padEnd(7))} ${route.path}`);
124
+ console.log(chalk.gray(` → ${route.handler} (${route.file}:${route.line})`));
125
+ }
126
+ console.log();
127
+ }
128
+ console.log(`Total: ${chalk.cyan(routes.length)} routes`);
129
+ console.log();
130
+ }
131
+ catch (error) {
132
+ spinner?.stop();
133
+ if (format === 'json') {
134
+ console.log(JSON.stringify({ error: String(error) }));
135
+ }
136
+ else {
137
+ console.log(chalk.red(`\n❌ Error: ${error}`));
138
+ }
139
+ }
140
+ }
141
+ /**
142
+ * Errors subcommand
143
+ */
144
+ async function errorsAction(targetPath, options) {
145
+ const rootDir = targetPath ?? process.cwd();
146
+ const format = options.format ?? 'text';
147
+ const isTextFormat = format === 'text';
148
+ const spinner = isTextFormat ? createSpinner('Analyzing error handling...') : null;
149
+ spinner?.start();
150
+ try {
151
+ const analyzer = createGoAnalyzer({ rootDir, verbose: options.verbose });
152
+ const result = await analyzer.analyzeErrorHandling();
153
+ spinner?.stop();
154
+ // JSON output
155
+ if (format === 'json') {
156
+ console.log(JSON.stringify(result, null, 2));
157
+ return;
158
+ }
159
+ // Text output
160
+ console.log();
161
+ console.log(chalk.bold('⚠️ Go Error Handling Analysis'));
162
+ console.log(chalk.gray('─'.repeat(60)));
163
+ console.log();
164
+ console.log(`Error Checks: ${chalk.cyan(result.stats.errorChecks)}`);
165
+ console.log(`Wrapped Errors: ${chalk.green(result.stats.wrappedErrors)}`);
166
+ console.log(`Sentinel Errors: ${chalk.blue(result.stats.sentinelErrors)}`);
167
+ console.log(`Custom Error Types: ${chalk.magenta(result.stats.customErrorTypes)}`);
168
+ console.log(`Unchecked Errors: ${chalk.yellow(result.stats.uncheckedErrors)}`);
169
+ console.log();
170
+ // Pattern breakdown
171
+ const patternCounts = {
172
+ propagated: result.patterns.filter((p) => p.type === 'propagated').length,
173
+ wrapped: result.patterns.filter((p) => p.type === 'wrapped').length,
174
+ logged: result.patterns.filter((p) => p.type === 'logged').length,
175
+ ignored: result.patterns.filter((p) => p.type === 'ignored').length,
176
+ };
177
+ console.log(chalk.bold('Pattern Breakdown:'));
178
+ console.log(` Propagated: ${chalk.cyan(patternCounts.propagated)}`);
179
+ console.log(` Wrapped: ${chalk.green(patternCounts.wrapped)}`);
180
+ console.log(` Logged: ${chalk.blue(patternCounts.logged)}`);
181
+ console.log(` Ignored: ${chalk.yellow(patternCounts.ignored)}`);
182
+ console.log();
183
+ // Issues
184
+ if (result.issues.length > 0) {
185
+ console.log(chalk.bold('Issues:'));
186
+ for (const issue of result.issues.slice(0, 10)) {
187
+ console.log(` ${chalk.yellow('⚠')} ${issue.file}:${issue.line}`);
188
+ console.log(chalk.gray(` ${issue.message}`));
189
+ if (issue.suggestion) {
190
+ console.log(chalk.gray(` → ${issue.suggestion}`));
191
+ }
192
+ }
193
+ if (result.issues.length > 10) {
194
+ console.log(chalk.gray(` ... and ${result.issues.length - 10} more`));
195
+ }
196
+ console.log();
197
+ }
198
+ // Sentinel errors
199
+ if (result.sentinelErrors.length > 0 && options.verbose) {
200
+ console.log(chalk.bold('Sentinel Errors:'));
201
+ for (const err of result.sentinelErrors.slice(0, 10)) {
202
+ console.log(` ${chalk.blue(err.name)}: "${err.message}"`);
203
+ console.log(chalk.gray(` ${err.file}:${err.line}`));
204
+ }
205
+ console.log();
206
+ }
207
+ }
208
+ catch (error) {
209
+ spinner?.stop();
210
+ if (format === 'json') {
211
+ console.log(JSON.stringify({ error: String(error) }));
212
+ }
213
+ else {
214
+ console.log(chalk.red(`\n❌ Error: ${error}`));
215
+ }
216
+ }
217
+ }
218
+ /**
219
+ * Interfaces subcommand
220
+ */
221
+ async function interfacesAction(targetPath, options) {
222
+ const rootDir = targetPath ?? process.cwd();
223
+ const format = options.format ?? 'text';
224
+ const isTextFormat = format === 'text';
225
+ const spinner = isTextFormat ? createSpinner('Analyzing interfaces...') : null;
226
+ spinner?.start();
227
+ try {
228
+ const analyzer = createGoAnalyzer({ rootDir, verbose: options.verbose });
229
+ const result = await analyzer.analyzeInterfaces();
230
+ spinner?.stop();
231
+ // JSON output
232
+ if (format === 'json') {
233
+ console.log(JSON.stringify(result, null, 2));
234
+ return;
235
+ }
236
+ // Text output
237
+ console.log();
238
+ console.log(chalk.bold('🔌 Go Interfaces'));
239
+ console.log(chalk.gray('─'.repeat(60)));
240
+ console.log();
241
+ console.log(`Total Interfaces: ${chalk.cyan(result.interfaces.length)}`);
242
+ console.log(`Total Implementations: ${chalk.cyan(result.implementations.length)}`);
243
+ console.log();
244
+ if (result.interfaces.length === 0) {
245
+ console.log(chalk.gray('No interfaces found'));
246
+ console.log();
247
+ return;
248
+ }
249
+ for (const iface of result.interfaces) {
250
+ const implCount = iface.implementations.length;
251
+ const implBadge = implCount > 0 ? chalk.green(`(${implCount} impl)`) : chalk.gray('(no impl)');
252
+ console.log(`${chalk.bold(iface.name)} ${implBadge}`);
253
+ console.log(chalk.gray(` Methods: ${iface.methods.join(', ') || 'none'}`));
254
+ if (iface.implementations.length > 0) {
255
+ console.log(chalk.gray(` Implementations: ${iface.implementations.join(', ')}`));
256
+ }
257
+ console.log();
258
+ }
259
+ }
260
+ catch (error) {
261
+ spinner?.stop();
262
+ if (format === 'json') {
263
+ console.log(JSON.stringify({ error: String(error) }));
264
+ }
265
+ else {
266
+ console.log(chalk.red(`\n❌ Error: ${error}`));
267
+ }
268
+ }
269
+ }
270
+ /**
271
+ * Data access subcommand
272
+ */
273
+ async function dataAccessAction(targetPath, options) {
274
+ const rootDir = targetPath ?? process.cwd();
275
+ const format = options.format ?? 'text';
276
+ const isTextFormat = format === 'text';
277
+ const spinner = isTextFormat ? createSpinner('Analyzing data access patterns...') : null;
278
+ spinner?.start();
279
+ try {
280
+ const analyzer = createGoAnalyzer({ rootDir, verbose: options.verbose });
281
+ const result = await analyzer.analyzeDataAccess();
282
+ spinner?.stop();
283
+ // JSON output
284
+ if (format === 'json') {
285
+ console.log(JSON.stringify(result, null, 2));
286
+ return;
287
+ }
288
+ // Text output
289
+ console.log();
290
+ console.log(chalk.bold('🗄️ Go Data Access Patterns'));
291
+ console.log(chalk.gray('─'.repeat(60)));
292
+ console.log();
293
+ console.log(`Total Access Points: ${chalk.cyan(result.accessPoints.length)}`);
294
+ console.log(`Tables: ${chalk.cyan(result.tables.length)}`);
295
+ console.log();
296
+ // By framework
297
+ console.log(chalk.bold('By Framework:'));
298
+ for (const [framework, count] of Object.entries(result.byFramework)) {
299
+ console.log(` ${framework}: ${chalk.cyan(count)}`);
300
+ }
301
+ console.log();
302
+ // By operation
303
+ console.log(chalk.bold('By Operation:'));
304
+ for (const [operation, count] of Object.entries(result.byOperation)) {
305
+ const opColor = operation === 'read' ? chalk.green :
306
+ operation === 'write' ? chalk.blue :
307
+ operation === 'delete' ? chalk.red : chalk.gray;
308
+ console.log(` ${opColor(operation)}: ${chalk.cyan(count)}`);
309
+ }
310
+ console.log();
311
+ // Tables
312
+ if (result.tables.length > 0) {
313
+ console.log(chalk.bold('Tables Accessed:'));
314
+ for (const table of result.tables) {
315
+ console.log(` • ${table}`);
316
+ }
317
+ console.log();
318
+ }
319
+ // Access points (verbose)
320
+ if (options.verbose && result.accessPoints.length > 0) {
321
+ console.log(chalk.bold('Access Points:'));
322
+ for (const ap of result.accessPoints.slice(0, 20)) {
323
+ const opColor = ap.operation === 'read' ? chalk.green :
324
+ ap.operation === 'write' ? chalk.blue :
325
+ ap.operation === 'delete' ? chalk.red : chalk.gray;
326
+ console.log(` ${opColor(ap.operation.padEnd(6))} ${ap.table} (${ap.framework})`);
327
+ console.log(chalk.gray(` ${ap.file}:${ap.line}`));
328
+ }
329
+ if (result.accessPoints.length > 20) {
330
+ console.log(chalk.gray(` ... and ${result.accessPoints.length - 20} more`));
331
+ }
332
+ console.log();
333
+ }
334
+ }
335
+ catch (error) {
336
+ spinner?.stop();
337
+ if (format === 'json') {
338
+ console.log(JSON.stringify({ error: String(error) }));
339
+ }
340
+ else {
341
+ console.log(chalk.red(`\n❌ Error: ${error}`));
342
+ }
343
+ }
344
+ }
345
+ /**
346
+ * Goroutines subcommand
347
+ */
348
+ async function goroutinesAction(targetPath, options) {
349
+ const rootDir = targetPath ?? process.cwd();
350
+ const format = options.format ?? 'text';
351
+ const isTextFormat = format === 'text';
352
+ const spinner = isTextFormat ? createSpinner('Analyzing goroutines...') : null;
353
+ spinner?.start();
354
+ try {
355
+ const analyzer = createGoAnalyzer({ rootDir, verbose: options.verbose });
356
+ const result = await analyzer.analyzeGoroutines();
357
+ spinner?.stop();
358
+ // JSON output
359
+ if (format === 'json') {
360
+ console.log(JSON.stringify(result, null, 2));
361
+ return;
362
+ }
363
+ // Text output
364
+ console.log();
365
+ console.log(chalk.bold('🔄 Go Concurrency Analysis'));
366
+ console.log(chalk.gray('─'.repeat(60)));
367
+ console.log();
368
+ console.log(`Go Statements: ${chalk.cyan(result.stats.goStatements)}`);
369
+ console.log(`Channels: ${chalk.cyan(result.stats.channels)}`);
370
+ console.log(`Mutexes: ${chalk.cyan(result.stats.mutexes)}`);
371
+ console.log(`WaitGroups: ${chalk.cyan(result.stats.waitGroups)}`);
372
+ console.log();
373
+ // Goroutines
374
+ if (result.goroutines.length > 0) {
375
+ console.log(chalk.bold('Goroutines:'));
376
+ for (const g of result.goroutines.slice(0, 15)) {
377
+ const recoverIcon = g.hasRecover ? chalk.green('✓') : chalk.yellow('⚠');
378
+ console.log(` ${recoverIcon} ${g.function}`);
379
+ console.log(chalk.gray(` ${g.file}:${g.line}`));
380
+ }
381
+ if (result.goroutines.length > 15) {
382
+ console.log(chalk.gray(` ... and ${result.goroutines.length - 15} more`));
383
+ }
384
+ console.log();
385
+ }
386
+ // Issues
387
+ if (result.issues.length > 0) {
388
+ console.log(chalk.bold('Potential Issues:'));
389
+ for (const issue of result.issues.slice(0, 10)) {
390
+ console.log(` ${chalk.yellow('⚠')} ${issue.message}`);
391
+ console.log(chalk.gray(` ${issue.file}:${issue.line}`));
392
+ }
393
+ if (result.issues.length > 10) {
394
+ console.log(chalk.gray(` ... and ${result.issues.length - 10} more`));
395
+ }
396
+ console.log();
397
+ }
398
+ }
399
+ catch (error) {
400
+ spinner?.stop();
401
+ if (format === 'json') {
402
+ console.log(JSON.stringify({ error: String(error) }));
403
+ }
404
+ else {
405
+ console.log(chalk.red(`\n❌ Error: ${error}`));
406
+ }
407
+ }
408
+ }
409
+ /**
410
+ * Status subcommand
411
+ */
412
+ async function statusAction(targetPath, options) {
413
+ const rootDir = targetPath ?? process.cwd();
414
+ const format = options.format ?? 'text';
415
+ const isTextFormat = format === 'text';
416
+ const spinner = isTextFormat ? createSpinner('Analyzing Go project...') : null;
417
+ spinner?.start();
418
+ try {
419
+ const analyzer = createGoAnalyzer({ rootDir, verbose: options.verbose });
420
+ const result = await analyzer.analyze();
421
+ spinner?.stop();
422
+ // JSON output
423
+ if (format === 'json') {
424
+ console.log(JSON.stringify({
425
+ project: {
426
+ moduleName: result.moduleName,
427
+ goVersion: result.goVersion,
428
+ packages: result.packages.length,
429
+ files: result.stats.fileCount,
430
+ functions: result.stats.functionCount,
431
+ structs: result.stats.structCount,
432
+ interfaces: result.stats.interfaceCount,
433
+ },
434
+ frameworks: result.detectedFrameworks,
435
+ stats: result.stats,
436
+ topPackages: result.packages.slice(0, 10).map((pkg) => ({
437
+ name: pkg.name,
438
+ files: pkg.files.length,
439
+ functions: pkg.functions.length,
440
+ })),
441
+ }, null, 2));
442
+ return;
443
+ }
444
+ // Text output
445
+ console.log();
446
+ console.log(chalk.bold('📊 Go Project Status'));
447
+ console.log(chalk.gray('═'.repeat(60)));
448
+ console.log();
449
+ // Project info
450
+ console.log(chalk.bold('Project'));
451
+ console.log(chalk.gray('─'.repeat(40)));
452
+ if (result.moduleName) {
453
+ console.log(` Module: ${chalk.cyan(result.moduleName)}`);
454
+ }
455
+ if (result.goVersion) {
456
+ console.log(` Go Version: ${chalk.cyan(result.goVersion)}`);
457
+ }
458
+ console.log(` Packages: ${chalk.cyan(result.packages.length)}`);
459
+ console.log(` Files: ${chalk.cyan(result.stats.fileCount)}`);
460
+ console.log();
461
+ // Detected frameworks
462
+ if (result.detectedFrameworks.length > 0) {
463
+ console.log(chalk.bold('Detected Frameworks'));
464
+ console.log(chalk.gray('─'.repeat(40)));
465
+ for (const fw of result.detectedFrameworks) {
466
+ console.log(` • ${fw}`);
467
+ }
468
+ console.log();
469
+ }
470
+ // Statistics
471
+ console.log(chalk.bold('Statistics'));
472
+ console.log(chalk.gray('─'.repeat(40)));
473
+ console.log(` Functions: ${chalk.cyan(result.stats.functionCount)}`);
474
+ console.log(` Structs: ${chalk.cyan(result.stats.structCount)}`);
475
+ console.log(` Interfaces: ${chalk.cyan(result.stats.interfaceCount)}`);
476
+ console.log(` Lines of Code: ${chalk.cyan(result.stats.linesOfCode.toLocaleString())}`);
477
+ console.log(` Test Files: ${chalk.cyan(result.stats.testFileCount)}`);
478
+ console.log(` Test Functions: ${chalk.cyan(result.stats.testFunctionCount)}`);
479
+ console.log(` Analysis Time: ${chalk.gray(`${result.stats.analysisTimeMs.toFixed(0)}ms`)}`);
480
+ console.log();
481
+ // Top packages
482
+ if (result.packages.length > 0) {
483
+ console.log(chalk.bold('Top Packages'));
484
+ console.log(chalk.gray('─'.repeat(40)));
485
+ for (const pkg of result.packages.slice(0, 5)) {
486
+ console.log(` ${chalk.white(pkg.name)}`);
487
+ console.log(chalk.gray(` ${pkg.files.length} files, ${pkg.functions.length} functions`));
488
+ }
489
+ if (result.packages.length > 5) {
490
+ console.log(chalk.gray(` ... and ${result.packages.length - 5} more packages`));
491
+ }
492
+ console.log();
493
+ }
494
+ // Next steps
495
+ console.log(chalk.gray('─'.repeat(60)));
496
+ console.log(chalk.bold('📌 Next Steps:'));
497
+ console.log(chalk.gray(` • drift go routes ${chalk.white('View HTTP routes')}`));
498
+ console.log(chalk.gray(` • drift go errors ${chalk.white('Analyze error handling')}`));
499
+ console.log(chalk.gray(` • drift go interfaces ${chalk.white('View interfaces')}`));
500
+ console.log(chalk.gray(` • drift go data-access ${chalk.white('View data access patterns')}`));
501
+ console.log(chalk.gray(` • drift go goroutines ${chalk.white('Analyze concurrency')}`));
502
+ console.log();
503
+ }
504
+ catch (error) {
505
+ spinner?.stop();
506
+ if (format === 'json') {
507
+ console.log(JSON.stringify({ error: String(error) }));
508
+ }
509
+ else {
510
+ console.log(chalk.red(`\n❌ Error: ${error}`));
511
+ }
512
+ }
513
+ }
514
+ /**
515
+ * Get color for HTTP method
516
+ */
517
+ function getMethodColor(method) {
518
+ const colors = {
519
+ GET: chalk.green,
520
+ POST: chalk.blue,
521
+ PUT: chalk.yellow,
522
+ DELETE: chalk.red,
523
+ PATCH: chalk.magenta,
524
+ HEAD: chalk.cyan,
525
+ OPTIONS: chalk.gray,
526
+ ANY: chalk.white,
527
+ };
528
+ return colors[method] ?? chalk.white;
529
+ }
530
+ //# sourceMappingURL=go.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"go.js","sourceRoot":"","sources":["../../src/commands/go.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Ignore Command - drift ignore
3
+ *
4
+ * Ignore a pattern to stop tracking it.
5
+ *
6
+ * MIGRATION: Now uses IPatternService for pattern operations.
7
+ *
8
+ * @requirements 29.6
9
+ */
10
+ import { Command } from 'commander';
11
+ export interface IgnoreOptions {
12
+ /** Reason for ignoring */
13
+ reason?: string;
14
+ /** Skip confirmation prompt */
15
+ yes?: boolean;
16
+ /** Enable verbose output */
17
+ verbose?: boolean;
18
+ }
19
+ export declare const ignoreCommand: Command;
20
+ //# sourceMappingURL=ignore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ignore.d.ts","sourceRoot":"","sources":["../../src/commands/ignore.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,MAAM,WAAW,aAAa;IAC5B,0BAA0B;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,4BAA4B;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAiND,eAAO,MAAM,aAAa,SAMH,CAAC"}
1
+ {"version":3,"file":"ignore.d.ts","sourceRoot":"","sources":["../../src/commands/ignore.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,MAAM,WAAW,aAAa;IAC5B,0BAA0B;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,4BAA4B;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAoLD,eAAO,MAAM,aAAa,SAMH,CAAC"}