@buoy-design/cli 0.1.9 → 0.1.11
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/cloud/client.d.ts +261 -0
- package/dist/cloud/client.d.ts.map +1 -0
- package/dist/cloud/client.js +140 -0
- package/dist/cloud/client.js.map +1 -0
- package/dist/cloud/config.d.ts +51 -0
- package/dist/cloud/config.d.ts.map +1 -0
- package/dist/cloud/config.js +98 -0
- package/dist/cloud/config.js.map +1 -0
- package/dist/cloud/index.d.ts +5 -0
- package/dist/cloud/index.d.ts.map +1 -0
- package/dist/cloud/index.js +5 -0
- package/dist/cloud/index.js.map +1 -0
- package/dist/cloud/queue.d.ts +52 -0
- package/dist/cloud/queue.d.ts.map +1 -0
- package/dist/cloud/queue.js +108 -0
- package/dist/cloud/queue.js.map +1 -0
- package/dist/cloud/sync.d.ts +75 -0
- package/dist/cloud/sync.d.ts.map +1 -0
- package/dist/cloud/sync.js +116 -0
- package/dist/cloud/sync.js.map +1 -0
- package/dist/commands/begin.d.ts +8 -0
- package/dist/commands/begin.d.ts.map +1 -0
- package/dist/commands/begin.js +380 -0
- package/dist/commands/begin.js.map +1 -0
- package/dist/commands/billing.d.ts +11 -0
- package/dist/commands/billing.d.ts.map +1 -0
- package/dist/commands/billing.js +295 -0
- package/dist/commands/billing.js.map +1 -0
- package/dist/commands/ci.d.ts.map +1 -1
- package/dist/commands/ci.js +18 -0
- package/dist/commands/ci.js.map +1 -1
- package/dist/commands/dock.d.ts +3 -0
- package/dist/commands/dock.d.ts.map +1 -0
- package/dist/commands/dock.js +881 -0
- package/dist/commands/dock.js.map +1 -0
- package/dist/commands/drift.d.ts.map +1 -1
- package/dist/commands/drift.js +36 -2
- package/dist/commands/drift.js.map +1 -1
- package/dist/commands/explain.d.ts.map +1 -1
- package/dist/commands/explain.js +15 -3
- package/dist/commands/explain.js.map +1 -1
- package/dist/commands/github.d.ts +10 -0
- package/dist/commands/github.d.ts.map +1 -0
- package/dist/commands/github.js +223 -0
- package/dist/commands/github.js.map +1 -0
- package/dist/commands/history.d.ts +3 -0
- package/dist/commands/history.d.ts.map +1 -0
- package/dist/commands/history.js +320 -0
- package/dist/commands/history.js.map +1 -0
- package/dist/commands/index.d.ts +11 -1
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +12 -1
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/link.d.ts +8 -0
- package/dist/commands/link.d.ts.map +1 -0
- package/dist/commands/link.js +279 -0
- package/dist/commands/link.js.map +1 -0
- package/dist/commands/login.d.ts +8 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +143 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logout.d.ts +8 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +31 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/scan.d.ts.map +1 -1
- package/dist/commands/scan.js +178 -31
- package/dist/commands/scan.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +135 -20
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/sync.d.ts +8 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +126 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/tokens.js +1 -1
- package/dist/commands/unlink.d.ts +8 -0
- package/dist/commands/unlink.d.ts.map +1 -0
- package/dist/commands/unlink.js +80 -0
- package/dist/commands/unlink.js.map +1 -0
- package/dist/commands/whoami.d.ts +8 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +86 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/config/auto-detect.d.ts.map +1 -1
- package/dist/config/auto-detect.js +9 -2
- package/dist/config/auto-detect.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +6 -6
- package/dist/config/loader.js.map +1 -1
- package/dist/config/schema.d.ts +70 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +8 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/hooks/index.js +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -2
- package/dist/index.js.map +1 -1
- package/dist/insights/index.d.ts +3 -0
- package/dist/insights/index.d.ts.map +1 -0
- package/dist/insights/index.js +3 -0
- package/dist/insights/index.js.map +1 -0
- package/dist/insights/interactive.d.ts +11 -0
- package/dist/insights/interactive.d.ts.map +1 -0
- package/dist/insights/interactive.js +36 -0
- package/dist/insights/interactive.js.map +1 -0
- package/dist/insights/project-insights.d.ts +39 -0
- package/dist/insights/project-insights.d.ts.map +1 -0
- package/dist/insights/project-insights.js +198 -0
- package/dist/insights/project-insights.js.map +1 -0
- package/dist/integrations/github-formatter.js +4 -4
- package/dist/integrations/github-formatter.js.map +1 -1
- package/dist/output/formatters.d.ts +6 -0
- package/dist/output/formatters.d.ts.map +1 -1
- package/dist/output/formatters.js +236 -1
- package/dist/output/formatters.js.map +1 -1
- package/dist/scan/orchestrator.d.ts +14 -1
- package/dist/scan/orchestrator.d.ts.map +1 -1
- package/dist/scan/orchestrator.js +64 -4
- package/dist/scan/orchestrator.js.map +1 -1
- package/dist/services/architect.js +1 -1
- package/dist/services/architect.js.map +1 -1
- package/dist/services/drift-analysis.d.ts +3 -0
- package/dist/services/drift-analysis.d.ts.map +1 -1
- package/dist/services/drift-analysis.js +18 -2
- package/dist/services/drift-analysis.js.map +1 -1
- package/dist/store/cloud-store.d.ts +34 -0
- package/dist/store/cloud-store.d.ts.map +1 -0
- package/dist/store/cloud-store.js +100 -0
- package/dist/store/cloud-store.js.map +1 -0
- package/dist/store/index.d.ts +57 -0
- package/dist/store/index.d.ts.map +1 -0
- package/dist/store/index.js +93 -0
- package/dist/store/index.js.map +1 -0
- package/dist/store/local-store.d.ts +31 -0
- package/dist/store/local-store.d.ts.map +1 -0
- package/dist/store/local-store.js +384 -0
- package/dist/store/local-store.js.map +1 -0
- package/dist/store/types.d.ts +147 -0
- package/dist/store/types.d.ts.map +1 -0
- package/dist/store/types.js +6 -0
- package/dist/store/types.js.map +1 -0
- package/dist/wizard/ci-generator.d.ts +15 -0
- package/dist/wizard/ci-generator.d.ts.map +1 -0
- package/dist/wizard/ci-generator.js +129 -0
- package/dist/wizard/ci-generator.js.map +1 -0
- package/dist/wizard/index.d.ts +7 -0
- package/dist/wizard/index.d.ts.map +1 -0
- package/dist/wizard/index.js +7 -0
- package/dist/wizard/index.js.map +1 -0
- package/dist/wizard/issue-reviewer.d.ts +16 -0
- package/dist/wizard/issue-reviewer.d.ts.map +1 -0
- package/dist/wizard/issue-reviewer.js +183 -0
- package/dist/wizard/issue-reviewer.js.map +1 -0
- package/dist/wizard/menu.d.ts +46 -0
- package/dist/wizard/menu.d.ts.map +1 -0
- package/dist/wizard/menu.js +88 -0
- package/dist/wizard/menu.js.map +1 -0
- package/package.json +19 -15
- package/LICENSE +0 -21
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* buoy begin - Interactive wizard for new users.
|
|
3
|
+
*
|
|
4
|
+
* Runs a scan, shows results, and guides users through setup.
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from 'commander';
|
|
7
|
+
import chalk from 'chalk';
|
|
8
|
+
import { existsSync, writeFileSync } from 'fs';
|
|
9
|
+
import { join } from 'path';
|
|
10
|
+
import { checkbox } from '@inquirer/prompts';
|
|
11
|
+
import { loadConfig, getConfigPath } from '../config/loader.js';
|
|
12
|
+
import { buildAutoConfig } from '../config/auto-detect.js';
|
|
13
|
+
import { spinner, error as errorLog } from '../output/reporters.js';
|
|
14
|
+
import { ScanOrchestrator } from '../scan/orchestrator.js';
|
|
15
|
+
import { ProjectDetector } from '../detect/project-detector.js';
|
|
16
|
+
import { showMenu, sectionHeader, success, info, bulletList, keyValue, } from '../wizard/menu.js';
|
|
17
|
+
import { reviewIssues } from '../wizard/issue-reviewer.js';
|
|
18
|
+
import { setupCI } from '../wizard/ci-generator.js';
|
|
19
|
+
export function createBeginCommand() {
|
|
20
|
+
return new Command('begin')
|
|
21
|
+
.description('Interactive wizard to get started with Buoy')
|
|
22
|
+
.action(async () => {
|
|
23
|
+
// Check if we're in an interactive terminal
|
|
24
|
+
if (!process.stdin.isTTY) {
|
|
25
|
+
console.log('');
|
|
26
|
+
console.log(chalk.yellow('buoy begin requires an interactive terminal.'));
|
|
27
|
+
console.log('');
|
|
28
|
+
console.log('Try these commands instead:');
|
|
29
|
+
console.log(` ${chalk.cyan('buoy status')} See health at a glance`);
|
|
30
|
+
console.log(` ${chalk.cyan('buoy drift check')} Detailed drift report`);
|
|
31
|
+
console.log('');
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const cwd = process.cwd();
|
|
35
|
+
// Welcome
|
|
36
|
+
console.log('');
|
|
37
|
+
console.log(chalk.cyan.bold('Welcome to Buoy'));
|
|
38
|
+
console.log('');
|
|
39
|
+
const spin = spinner('Scanning your project...');
|
|
40
|
+
try {
|
|
41
|
+
// Load or auto-detect config
|
|
42
|
+
const existingConfig = getConfigPath();
|
|
43
|
+
let config;
|
|
44
|
+
let autoResult;
|
|
45
|
+
if (existingConfig) {
|
|
46
|
+
const result = await loadConfig();
|
|
47
|
+
config = result.config;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
autoResult = await buildAutoConfig(cwd);
|
|
51
|
+
config = autoResult.config;
|
|
52
|
+
}
|
|
53
|
+
// Run scan
|
|
54
|
+
const orchestrator = new ScanOrchestrator(config);
|
|
55
|
+
const { components } = await orchestrator.scanComponents({
|
|
56
|
+
onProgress: (msg) => {
|
|
57
|
+
spin.text = msg;
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
// Detect frameworks
|
|
61
|
+
spin.text = 'Analyzing frameworks...';
|
|
62
|
+
const detector = new ProjectDetector(cwd);
|
|
63
|
+
const projectInfo = await detector.detect();
|
|
64
|
+
// Run drift analysis
|
|
65
|
+
spin.text = 'Checking for drift...';
|
|
66
|
+
const { SemanticDiffEngine } = await import('@buoy-design/core/analysis');
|
|
67
|
+
const engine = new SemanticDiffEngine();
|
|
68
|
+
const diffResult = engine.analyzeComponents(components, {
|
|
69
|
+
checkDeprecated: true,
|
|
70
|
+
checkNaming: true,
|
|
71
|
+
checkDocumentation: true,
|
|
72
|
+
});
|
|
73
|
+
const drifts = [...diffResult.drifts];
|
|
74
|
+
// Check framework sprawl
|
|
75
|
+
const sprawlSignal = engine.checkFrameworkSprawl(projectInfo.frameworks.map(f => ({ name: f.name, version: f.version })));
|
|
76
|
+
if (sprawlSignal) {
|
|
77
|
+
drifts.push(sprawlSignal);
|
|
78
|
+
}
|
|
79
|
+
spin.stop();
|
|
80
|
+
// Show overview
|
|
81
|
+
showOverview(components, drifts, autoResult, projectInfo);
|
|
82
|
+
// Initialize state
|
|
83
|
+
const state = {
|
|
84
|
+
configSaved: !!existingConfig,
|
|
85
|
+
ciSetup: existsSync(join(cwd, '.github', 'workflows', 'buoy.yml')) ||
|
|
86
|
+
existsSync(join(cwd, '.gitlab-ci.yml')),
|
|
87
|
+
criticalReviewed: false,
|
|
88
|
+
allReviewed: false,
|
|
89
|
+
};
|
|
90
|
+
// Main menu loop
|
|
91
|
+
await menuLoop(cwd, config, components, drifts, state, autoResult);
|
|
92
|
+
// Exit message
|
|
93
|
+
showExitMessage();
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
spin.stop();
|
|
97
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
98
|
+
errorLog(`Wizard failed: ${message}`);
|
|
99
|
+
process.exit(1);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Show the project overview.
|
|
105
|
+
*/
|
|
106
|
+
function showOverview(components, drifts, autoResult, projectInfo) {
|
|
107
|
+
sectionHeader('Project Overview');
|
|
108
|
+
// Framework detection
|
|
109
|
+
if (projectInfo.frameworks.length > 0) {
|
|
110
|
+
const frameworkNames = projectInfo.frameworks.map(f => f.name).join(' + ');
|
|
111
|
+
keyValue('Framework', frameworkNames);
|
|
112
|
+
}
|
|
113
|
+
keyValue('Components', `${components.length} found`);
|
|
114
|
+
if (autoResult?.tokenFiles && autoResult.tokenFiles.length > 0) {
|
|
115
|
+
keyValue('Tokens', `${autoResult.tokenFiles.length} file(s) detected`);
|
|
116
|
+
}
|
|
117
|
+
// Health check
|
|
118
|
+
sectionHeader('Health Check');
|
|
119
|
+
const critical = drifts.filter(d => d.severity === 'critical').length;
|
|
120
|
+
const warning = drifts.filter(d => d.severity === 'warning').length;
|
|
121
|
+
const infoCount = drifts.filter(d => d.severity === 'info').length;
|
|
122
|
+
// Coverage grid
|
|
123
|
+
const aligned = components.filter(c => !drifts.some(d => d.source.entityId === c.id)).length;
|
|
124
|
+
const total = components.length;
|
|
125
|
+
const pct = total > 0 ? Math.round((aligned / total) * 100) : 100;
|
|
126
|
+
if (total > 0) {
|
|
127
|
+
const gridSize = Math.min(10, total);
|
|
128
|
+
const alignedCount = Math.round((aligned / total) * gridSize);
|
|
129
|
+
const grid = '⛁ '.repeat(alignedCount) + '⛀ '.repeat(gridSize - alignedCount);
|
|
130
|
+
console.log(` ${grid.trim()} ${aligned}/${total} aligned (${pct}%)`);
|
|
131
|
+
}
|
|
132
|
+
console.log('');
|
|
133
|
+
if (critical > 0) {
|
|
134
|
+
console.log(` ${chalk.red('Critical:')} ${critical}`);
|
|
135
|
+
}
|
|
136
|
+
if (warning > 0) {
|
|
137
|
+
console.log(` ${chalk.yellow('Warning:')} ${warning}`);
|
|
138
|
+
}
|
|
139
|
+
if (infoCount > 0) {
|
|
140
|
+
console.log(` ${chalk.blue('Info:')} ${infoCount}`);
|
|
141
|
+
}
|
|
142
|
+
if (critical === 0 && warning === 0 && infoCount === 0) {
|
|
143
|
+
console.log(chalk.green(' No issues found!'));
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Main menu loop.
|
|
148
|
+
*/
|
|
149
|
+
async function menuLoop(cwd, config, _components, drifts, state, autoResult) {
|
|
150
|
+
while (true) {
|
|
151
|
+
const action = await showMainMenu(drifts, state);
|
|
152
|
+
switch (action) {
|
|
153
|
+
case 'review-critical': {
|
|
154
|
+
const result = await reviewIssues(drifts, 'critical');
|
|
155
|
+
if (result.completed) {
|
|
156
|
+
state.criticalReviewed = true;
|
|
157
|
+
}
|
|
158
|
+
if (!(await askAnythingElse()))
|
|
159
|
+
return;
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
case 'review-all': {
|
|
163
|
+
const result = await reviewIssues(drifts);
|
|
164
|
+
if (result.completed) {
|
|
165
|
+
state.allReviewed = true;
|
|
166
|
+
}
|
|
167
|
+
if (!(await askAnythingElse()))
|
|
168
|
+
return;
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
case 'save-config': {
|
|
172
|
+
await saveConfiguration(cwd, config, autoResult);
|
|
173
|
+
state.configSaved = true;
|
|
174
|
+
if (!(await askAnythingElse()))
|
|
175
|
+
return;
|
|
176
|
+
break;
|
|
177
|
+
}
|
|
178
|
+
case 'setup-ci': {
|
|
179
|
+
await setupCI(cwd);
|
|
180
|
+
state.ciSetup = true;
|
|
181
|
+
if (!(await askAnythingElse()))
|
|
182
|
+
return;
|
|
183
|
+
break;
|
|
184
|
+
}
|
|
185
|
+
case 'learn-more': {
|
|
186
|
+
showLearnMore();
|
|
187
|
+
if (!(await askAnythingElse()))
|
|
188
|
+
return;
|
|
189
|
+
break;
|
|
190
|
+
}
|
|
191
|
+
case 'exit':
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Show the main menu with dynamic options.
|
|
198
|
+
*/
|
|
199
|
+
async function showMainMenu(drifts, state) {
|
|
200
|
+
const critical = drifts.filter(d => d.severity === 'critical').length;
|
|
201
|
+
const total = drifts.length;
|
|
202
|
+
const options = [];
|
|
203
|
+
// Critical issues (if any and not reviewed)
|
|
204
|
+
if (critical > 0 && !state.criticalReviewed) {
|
|
205
|
+
options.push({
|
|
206
|
+
label: `Review critical issues (${critical})`,
|
|
207
|
+
value: 'review-critical',
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
// All drift (if any)
|
|
211
|
+
if (total > 0 && !state.allReviewed) {
|
|
212
|
+
options.push({
|
|
213
|
+
label: `Review all drift (${total})`,
|
|
214
|
+
value: 'review-all',
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
// Save config (if not already)
|
|
218
|
+
if (!state.configSaved) {
|
|
219
|
+
options.push({
|
|
220
|
+
label: 'Save configuration',
|
|
221
|
+
value: 'save-config',
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
// CI setup (if not already)
|
|
225
|
+
if (!state.ciSetup) {
|
|
226
|
+
options.push({
|
|
227
|
+
label: 'Set up CI integration',
|
|
228
|
+
value: 'setup-ci',
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
// Always show learn more
|
|
232
|
+
options.push({
|
|
233
|
+
label: 'Learn more about Buoy',
|
|
234
|
+
value: 'learn-more',
|
|
235
|
+
});
|
|
236
|
+
// Always show exit
|
|
237
|
+
options.push({
|
|
238
|
+
label: 'Exit',
|
|
239
|
+
value: 'exit',
|
|
240
|
+
});
|
|
241
|
+
return showMenu('What would you like to do?', options);
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Ask "Anything else?" and return whether to continue.
|
|
245
|
+
*/
|
|
246
|
+
async function askAnythingElse() {
|
|
247
|
+
console.log('');
|
|
248
|
+
const action = await showMenu('Anything else?', [
|
|
249
|
+
{ label: 'Yes, show menu', value: 'continue' },
|
|
250
|
+
{ label: 'No, exit', value: 'exit' },
|
|
251
|
+
]);
|
|
252
|
+
return action === 'continue';
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Save configuration flow.
|
|
256
|
+
*/
|
|
257
|
+
async function saveConfiguration(cwd, config, autoResult) {
|
|
258
|
+
sectionHeader('Save Configuration');
|
|
259
|
+
info('Buoy works without config, but saving one lets you:');
|
|
260
|
+
console.log('');
|
|
261
|
+
bulletList([
|
|
262
|
+
'Exclude test files and generated code',
|
|
263
|
+
'Connect Figma or Storybook as sources of truth',
|
|
264
|
+
'Set severity thresholds for CI',
|
|
265
|
+
'Track history across your team',
|
|
266
|
+
]);
|
|
267
|
+
console.log('');
|
|
268
|
+
if (autoResult) {
|
|
269
|
+
info('Detected settings:');
|
|
270
|
+
for (const d of autoResult.detected) {
|
|
271
|
+
console.log(` ${chalk.green('•')} ${d.name} ${chalk.dim(`(${d.evidence})`)}`);
|
|
272
|
+
}
|
|
273
|
+
if (autoResult.tokenFiles.length > 0) {
|
|
274
|
+
console.log(` ${chalk.green('•')} ${autoResult.tokenFiles.length} token file(s)`);
|
|
275
|
+
}
|
|
276
|
+
console.log('');
|
|
277
|
+
}
|
|
278
|
+
const action = await showMenu('', [
|
|
279
|
+
{ label: 'Save and continue', value: 'save' },
|
|
280
|
+
{ label: 'Customize first', value: 'customize' },
|
|
281
|
+
{ label: 'Skip for now', value: 'skip' },
|
|
282
|
+
]);
|
|
283
|
+
if (action === 'skip') {
|
|
284
|
+
return;
|
|
285
|
+
}
|
|
286
|
+
let finalConfig = config;
|
|
287
|
+
if (action === 'customize') {
|
|
288
|
+
finalConfig = await customizeConfig(config);
|
|
289
|
+
}
|
|
290
|
+
// Write config file
|
|
291
|
+
const configPath = join(cwd, 'buoy.config.mjs');
|
|
292
|
+
const configContent = generateConfigFile(finalConfig);
|
|
293
|
+
writeFileSync(configPath, configContent);
|
|
294
|
+
console.log('');
|
|
295
|
+
success('Created buoy.config.mjs');
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Customize configuration interactively.
|
|
299
|
+
*/
|
|
300
|
+
async function customizeConfig(config) {
|
|
301
|
+
sectionHeader('Customize Configuration');
|
|
302
|
+
const excludePaths = [
|
|
303
|
+
'tests/**/*',
|
|
304
|
+
'**/*.test.*',
|
|
305
|
+
'**/*.spec.*',
|
|
306
|
+
'stories/**/*',
|
|
307
|
+
'**/*.stories.*',
|
|
308
|
+
];
|
|
309
|
+
const selectedExcludes = await checkbox({
|
|
310
|
+
message: 'Exclude from scanning:',
|
|
311
|
+
choices: excludePaths.map(p => ({
|
|
312
|
+
name: p,
|
|
313
|
+
value: p,
|
|
314
|
+
checked: true,
|
|
315
|
+
})),
|
|
316
|
+
});
|
|
317
|
+
// Update config with exclusions
|
|
318
|
+
const existingReact = config.sources.react;
|
|
319
|
+
const updatedConfig = {
|
|
320
|
+
...config,
|
|
321
|
+
sources: {
|
|
322
|
+
...config.sources,
|
|
323
|
+
react: {
|
|
324
|
+
enabled: existingReact?.enabled ?? true,
|
|
325
|
+
include: existingReact?.include ?? ['src/**/*.tsx'],
|
|
326
|
+
exclude: selectedExcludes,
|
|
327
|
+
designSystemPackage: existingReact?.designSystemPackage,
|
|
328
|
+
},
|
|
329
|
+
},
|
|
330
|
+
};
|
|
331
|
+
return updatedConfig;
|
|
332
|
+
}
|
|
333
|
+
/**
|
|
334
|
+
* Generate config file content.
|
|
335
|
+
*/
|
|
336
|
+
function generateConfigFile(config) {
|
|
337
|
+
return `/** @type {import('@buoy-design/cli').BuoyConfig} */
|
|
338
|
+
export default ${JSON.stringify(config, null, 2)};
|
|
339
|
+
`;
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Show learn more section.
|
|
343
|
+
*/
|
|
344
|
+
function showLearnMore() {
|
|
345
|
+
sectionHeader('About Buoy');
|
|
346
|
+
info('Buoy catches design drift before it ships.');
|
|
347
|
+
console.log('');
|
|
348
|
+
info('Drift happens when code diverges from your design system:');
|
|
349
|
+
bulletList([
|
|
350
|
+
'Hardcoded colors instead of tokens',
|
|
351
|
+
'Arbitrary spacing (17px vs your 4px scale)',
|
|
352
|
+
'Inconsistent component naming',
|
|
353
|
+
]);
|
|
354
|
+
console.log('');
|
|
355
|
+
info('AI coding tools make this worse—they don\'t know your');
|
|
356
|
+
info('design system exists.');
|
|
357
|
+
console.log('');
|
|
358
|
+
info('Commands to know:');
|
|
359
|
+
console.log(` ${chalk.cyan('buoy status')} Quick health check`);
|
|
360
|
+
console.log(` ${chalk.cyan('buoy drift check')} Detailed drift report`);
|
|
361
|
+
console.log(` ${chalk.cyan('buoy ci')} Run in CI pipelines`);
|
|
362
|
+
console.log(` ${chalk.cyan('buoy history')} View scan history`);
|
|
363
|
+
console.log('');
|
|
364
|
+
info(`Docs: ${chalk.cyan('https://buoy.design/docs')}`);
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* Show exit message.
|
|
368
|
+
*/
|
|
369
|
+
function showExitMessage() {
|
|
370
|
+
console.log('');
|
|
371
|
+
success('You\'re all set!');
|
|
372
|
+
console.log('');
|
|
373
|
+
info('Quick commands:');
|
|
374
|
+
console.log(` ${chalk.cyan('buoy status')} See health at a glance`);
|
|
375
|
+
console.log(` ${chalk.cyan('buoy drift check')} Detailed drift report`);
|
|
376
|
+
console.log('');
|
|
377
|
+
info(`Run ${chalk.cyan('buoy begin')} anytime to return to this wizard.`);
|
|
378
|
+
console.log('');
|
|
379
|
+
}
|
|
380
|
+
//# sourceMappingURL=begin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"begin.js","sourceRoot":"","sources":["../../src/commands/begin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* buoy billing - Manage subscription and billing
|
|
3
|
+
*
|
|
4
|
+
* buoy billing - Show current plan and usage
|
|
5
|
+
* buoy billing upgrade - Upgrade to Pro plan
|
|
6
|
+
* buoy billing portal - Open billing portal (manage payment method, view invoices)
|
|
7
|
+
* buoy billing invoices - List recent invoices
|
|
8
|
+
*/
|
|
9
|
+
import { Command } from 'commander';
|
|
10
|
+
export declare function createBillingCommand(): Command;
|
|
11
|
+
//# sourceMappingURL=billing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"billing.d.ts","sourceRoot":"","sources":["../../src/commands/billing.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBpC,wBAAgB,oBAAoB,IAAI,OAAO,CAe9C"}
|