@buoy-design/cli 0.1.9 → 0.1.10

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.
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function createDockCommand(): Command;
3
+ //# sourceMappingURL=dock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dock.d.ts","sourceRoot":"","sources":["../../src/commands/dock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAivBpC,wBAAgB,iBAAiB,IAAI,OAAO,CAkT3C"}
@@ -0,0 +1,881 @@
1
+ import { Command } from "commander";
2
+ import { writeFileSync, existsSync, readFileSync } from "fs";
3
+ import { resolve, extname } from "path";
4
+ import chalk from "chalk";
5
+ import ora from "ora";
6
+ import { createInterface } from "readline";
7
+ import { success, error, info, warning } from "../output/reporters.js";
8
+ import { ProjectDetector, detectMonorepoConfig, expandPatternsForMonorepo, } from "../detect/index.js";
9
+ import { detectFrameworks, getPluginInstallCommand, PLUGIN_INFO, BUILTIN_SCANNERS, } from "../detect/frameworks.js";
10
+ import { setupHooks, generateStandaloneHook, detectHookSystem, } from "../hooks/index.js";
11
+ import { parseTokenFile, detectFormat } from "@buoy-design/core";
12
+ function generateConfig(project) {
13
+ const lines = [];
14
+ // Detect monorepo configuration for pattern expansion
15
+ const monorepoConfig = detectMonorepoConfig(project.root);
16
+ lines.push(`/** @type {import('@buoy-design/cli').BuoyConfig} */`);
17
+ lines.push(`export default {`);
18
+ lines.push(` project: {`);
19
+ lines.push(` name: '${project.name}',`);
20
+ lines.push(` },`);
21
+ lines.push(` sources: {`);
22
+ // Determine the correct source key based on framework
23
+ const getSourceKey = (frameworkName) => {
24
+ // React-based frameworks
25
+ if ([
26
+ "react",
27
+ "nextjs",
28
+ "remix",
29
+ "gatsby",
30
+ "react-native",
31
+ "expo",
32
+ "preact",
33
+ "solid",
34
+ ].includes(frameworkName)) {
35
+ return "react";
36
+ }
37
+ // Vue-based frameworks
38
+ if (["vue", "nuxt"].includes(frameworkName)) {
39
+ return "vue";
40
+ }
41
+ // Svelte-based frameworks
42
+ if (["svelte", "sveltekit"].includes(frameworkName)) {
43
+ return "svelte";
44
+ }
45
+ // Angular
46
+ if (frameworkName === "angular") {
47
+ return "angular";
48
+ }
49
+ // Web Components
50
+ if (["lit", "stencil"].includes(frameworkName)) {
51
+ return "webcomponent";
52
+ }
53
+ // Astro is special - can use multiple frameworks
54
+ if (frameworkName === "astro") {
55
+ return "react"; // Default to React for Astro
56
+ }
57
+ return null;
58
+ };
59
+ // File extensions by framework
60
+ const getExtensions = (sourceKey, typescript) => {
61
+ switch (sourceKey) {
62
+ case "vue":
63
+ return ["vue"];
64
+ case "svelte":
65
+ return ["svelte"];
66
+ case "angular":
67
+ return ["component.ts"];
68
+ case "webcomponent":
69
+ return ["ts"];
70
+ default: // react
71
+ return typescript ? ["tsx", "jsx"] : ["jsx", "tsx"];
72
+ }
73
+ };
74
+ // JS Framework config (React, Vue, Svelte, Angular, Web Components)
75
+ // Handle multiple frameworks - generate config for each UI framework
76
+ const addedSourceKeys = new Set();
77
+ for (const framework of project.frameworks) {
78
+ const sourceKey = getSourceKey(framework.name);
79
+ if (sourceKey && !addedSourceKeys.has(sourceKey)) {
80
+ addedSourceKeys.add(sourceKey);
81
+ const extensions = getExtensions(sourceKey, framework.typescript);
82
+ const jsComponents = project.components.filter((c) => c.type === "jsx" ||
83
+ c.type === "vue" ||
84
+ c.type === "svelte" ||
85
+ !c.type);
86
+ let includePatterns;
87
+ if (jsComponents.length > 0) {
88
+ includePatterns = jsComponents.flatMap((c) => extensions.map((ext) => `${c.path}/**/*.${ext}`));
89
+ }
90
+ else {
91
+ // Use default patterns, but expand for monorepo if detected
92
+ const defaultPatterns = extensions.map((ext) => `src/**/*.${ext}`);
93
+ if (monorepoConfig.type) {
94
+ const expanded = expandPatternsForMonorepo(defaultPatterns, monorepoConfig);
95
+ includePatterns = expanded.allPatterns;
96
+ }
97
+ else {
98
+ includePatterns = defaultPatterns;
99
+ }
100
+ }
101
+ lines.push(` ${sourceKey}: {`);
102
+ lines.push(` enabled: true,`);
103
+ lines.push(` include: [${includePatterns.map((p) => `'${p}'`).join(", ")}],`);
104
+ lines.push(` exclude: ['**/*.test.*', '**/*.spec.*', '**/*.stories.*'],`);
105
+ if (project.designSystem) {
106
+ lines.push(` designSystemPackage: '${project.designSystem.package}',`);
107
+ }
108
+ if (sourceKey === "webcomponent") {
109
+ const wcFramework = framework.name === "lit" ? "lit" : "stencil";
110
+ lines.push(` framework: '${wcFramework}',`);
111
+ }
112
+ lines.push(` },`);
113
+ }
114
+ }
115
+ // Server-side / template-based framework config
116
+ const serverFrameworks = [
117
+ "php",
118
+ "laravel",
119
+ "symfony",
120
+ "rails",
121
+ "django",
122
+ "flask",
123
+ "fastapi",
124
+ "express",
125
+ "nestjs",
126
+ "spring",
127
+ "aspnet",
128
+ "go",
129
+ "hugo",
130
+ "jekyll",
131
+ "eleventy",
132
+ ];
133
+ // Map framework to template type
134
+ const getTemplateType = (frameworkName, componentType) => {
135
+ // Return component type directly if it's a known template type
136
+ const knownTypes = [
137
+ // Server-side templates
138
+ "blade", "erb", "twig", "njk", "razor", "hbs", "mustache",
139
+ "ejs", "pug", "liquid", "slim", "haml", "jinja", "django",
140
+ "thymeleaf", "freemarker", "go-template", "edge", "eta", "heex",
141
+ "velocity", "xslt",
142
+ // JS frameworks
143
+ "astro", "solid", "qwik", "marko", "lit", "fast", "angular",
144
+ "stencil", "alpine", "htmx",
145
+ // Static site generators
146
+ "hugo", "jekyll", "eleventy", "shopify",
147
+ // Documentation
148
+ "markdown", "mdx", "asciidoc",
149
+ // Graphics
150
+ "svg",
151
+ // Data templates
152
+ "yaml-template", "json-template"
153
+ ];
154
+ if (componentType && knownTypes.includes(componentType)) {
155
+ return componentType;
156
+ }
157
+ // Framework-based defaults
158
+ if (frameworkName === "laravel")
159
+ return "blade";
160
+ if (frameworkName === "rails")
161
+ return "erb";
162
+ if (frameworkName === "symfony")
163
+ return "twig";
164
+ if (frameworkName === "eleventy")
165
+ return "eleventy";
166
+ if (frameworkName === "aspnet")
167
+ return "razor";
168
+ if (frameworkName === "express")
169
+ return "ejs";
170
+ if (frameworkName === "flask")
171
+ return "jinja";
172
+ if (frameworkName === "django")
173
+ return "django";
174
+ if (frameworkName === "spring")
175
+ return "thymeleaf";
176
+ if (frameworkName === "go")
177
+ return "go-template";
178
+ if (frameworkName === "astro")
179
+ return "astro";
180
+ if (frameworkName === "hugo")
181
+ return "hugo";
182
+ if (frameworkName === "jekyll")
183
+ return "jekyll";
184
+ return "html";
185
+ };
186
+ // Check if any framework is a server-side framework
187
+ const serverFramework = project.frameworks.find((f) => serverFrameworks.includes(f.name));
188
+ if (serverFramework) {
189
+ const templateTypes = [
190
+ // Server-side templates
191
+ "php", "blade", "erb", "twig", "html", "njk", "razor", "hbs",
192
+ "mustache", "ejs", "pug", "liquid", "slim", "haml", "jinja",
193
+ "django", "thymeleaf", "freemarker", "go-template", "edge",
194
+ "eta", "heex", "velocity", "xslt",
195
+ // JS frameworks
196
+ "astro", "solid", "qwik", "marko", "lit", "fast", "angular",
197
+ "stencil", "alpine", "htmx",
198
+ // Static site generators
199
+ "hugo", "jekyll", "eleventy", "shopify",
200
+ // Documentation
201
+ "markdown", "mdx", "asciidoc",
202
+ // Graphics
203
+ "svg",
204
+ // Data templates
205
+ "yaml-template", "json-template"
206
+ ];
207
+ const templateComponents = project.components.filter((c) => c.type && templateTypes.includes(c.type));
208
+ if (templateComponents.length > 0) {
209
+ // Use the first component's type to determine template type
210
+ const templateType = getTemplateType(serverFramework.name, templateComponents[0]?.type);
211
+ lines.push(` templates: {`);
212
+ lines.push(` enabled: true,`);
213
+ lines.push(` type: '${templateType}',`);
214
+ lines.push(` include: [`);
215
+ for (const comp of templateComponents) {
216
+ lines.push(` '${comp.pattern}',`);
217
+ }
218
+ lines.push(` ],`);
219
+ lines.push(` },`);
220
+ }
221
+ }
222
+ // Storybook config
223
+ if (project.storybook) {
224
+ lines.push(` storybook: {`);
225
+ lines.push(` enabled: true,`);
226
+ lines.push(` },`);
227
+ }
228
+ // Token files config
229
+ const tokenFiles = project.tokens.filter((t) => t.type !== "tailwind");
230
+ const hasTailwind = project.tokens.some((t) => t.type === "tailwind");
231
+ if (tokenFiles.length > 0 || hasTailwind) {
232
+ lines.push(` tokens: {`);
233
+ lines.push(` enabled: true,`);
234
+ if (tokenFiles.length > 0) {
235
+ lines.push(` files: [`);
236
+ for (const token of tokenFiles) {
237
+ lines.push(` '${token.path}',`);
238
+ }
239
+ lines.push(` ],`);
240
+ }
241
+ lines.push(` },`);
242
+ }
243
+ // Figma placeholder (always disabled by default)
244
+ lines.push(` figma: {`);
245
+ lines.push(` enabled: false,`);
246
+ lines.push(` // accessToken: process.env.FIGMA_ACCESS_TOKEN,`);
247
+ lines.push(` // fileKeys: [],`);
248
+ lines.push(` },`);
249
+ lines.push(` },`);
250
+ lines.push(` output: {`);
251
+ lines.push(` format: 'table',`);
252
+ lines.push(` colors: true,`);
253
+ lines.push(` },`);
254
+ lines.push(`};`);
255
+ lines.push(``);
256
+ return lines.join("\n");
257
+ }
258
+ function printDetectionResults(project) {
259
+ console.log("");
260
+ console.log(chalk.bold(" Detected:"));
261
+ const frameworkNames = {
262
+ // JS frameworks
263
+ react: "React",
264
+ vue: "Vue",
265
+ svelte: "Svelte",
266
+ angular: "Angular",
267
+ solid: "Solid",
268
+ preact: "Preact",
269
+ // Meta-frameworks
270
+ nextjs: "Next.js",
271
+ nuxt: "Nuxt",
272
+ astro: "Astro",
273
+ remix: "Remix",
274
+ sveltekit: "SvelteKit",
275
+ gatsby: "Gatsby",
276
+ // Mobile
277
+ "react-native": "React Native",
278
+ flutter: "Flutter",
279
+ expo: "Expo",
280
+ // Web Components
281
+ lit: "Lit",
282
+ stencil: "Stencil",
283
+ // Server-side
284
+ php: "PHP",
285
+ laravel: "Laravel",
286
+ symfony: "Symfony",
287
+ rails: "Ruby on Rails",
288
+ django: "Django",
289
+ flask: "Flask",
290
+ fastapi: "FastAPI",
291
+ express: "Express",
292
+ nestjs: "NestJS",
293
+ spring: "Spring Boot",
294
+ aspnet: "ASP.NET",
295
+ go: "Go",
296
+ // Static site generators
297
+ hugo: "Hugo",
298
+ jekyll: "Jekyll",
299
+ eleventy: "Eleventy",
300
+ };
301
+ // Frameworks - show all detected
302
+ if (project.frameworks.length > 0) {
303
+ // Show warning if multiple UI frameworks detected (framework sprawl)
304
+ const uiFrameworks = [
305
+ "react",
306
+ "vue",
307
+ "svelte",
308
+ "angular",
309
+ "solid",
310
+ "preact",
311
+ "lit",
312
+ "stencil",
313
+ "nextjs",
314
+ "nuxt",
315
+ "astro",
316
+ "remix",
317
+ "sveltekit",
318
+ "gatsby",
319
+ "react-native",
320
+ "expo",
321
+ "flutter",
322
+ ];
323
+ const uiCount = project.frameworks.filter((f) => uiFrameworks.includes(f.name)).length;
324
+ if (uiCount > 1) {
325
+ console.log(chalk.yellow(" ⚠ ") +
326
+ chalk.yellow.bold("Multiple UI frameworks detected (framework sprawl)"));
327
+ }
328
+ for (const framework of project.frameworks) {
329
+ const ts = framework.typescript ? " + TypeScript" : "";
330
+ const frameworkName = frameworkNames[framework.name] || capitalize(framework.name);
331
+ const meta = framework.meta ? chalk.dim(` (${framework.meta})`) : "";
332
+ const version = framework.version !== "unknown" ? ` ${framework.version}` : "";
333
+ console.log(chalk.green(" ✓ ") +
334
+ chalk.bold(frameworkName) +
335
+ ts +
336
+ meta +
337
+ chalk.dim(version));
338
+ }
339
+ }
340
+ // Components
341
+ if (project.components.length > 0) {
342
+ for (const comp of project.components) {
343
+ const typeLabels = {
344
+ // JS frameworks
345
+ jsx: "component files",
346
+ tsx: "TypeScript components",
347
+ vue: "Vue components",
348
+ svelte: "Svelte components",
349
+ astro: "Astro components",
350
+ solid: "Solid components",
351
+ qwik: "Qwik components",
352
+ marko: "Marko components",
353
+ lit: "Lit elements",
354
+ fast: "FAST elements",
355
+ // Server-side templates
356
+ php: "PHP templates",
357
+ blade: "Blade templates",
358
+ erb: "ERB templates",
359
+ twig: "Twig templates",
360
+ html: "HTML templates",
361
+ njk: "Nunjucks templates",
362
+ razor: "Razor views",
363
+ hbs: "Handlebars templates",
364
+ mustache: "Mustache templates",
365
+ ejs: "EJS templates",
366
+ pug: "Pug templates",
367
+ liquid: "Liquid templates",
368
+ slim: "Slim templates",
369
+ haml: "Haml templates",
370
+ jinja: "Jinja templates",
371
+ django: "Django templates",
372
+ thymeleaf: "Thymeleaf templates",
373
+ freemarker: "Freemarker templates",
374
+ velocity: "Velocity templates",
375
+ "go-template": "Go templates",
376
+ edge: "Edge.js templates",
377
+ eta: "Eta templates",
378
+ heex: "HEEx templates",
379
+ xslt: "XSLT stylesheets",
380
+ // Static site generators
381
+ hugo: "Hugo layouts",
382
+ jekyll: "Jekyll layouts",
383
+ eleventy: "Eleventy templates",
384
+ shopify: "Shopify templates",
385
+ // Documentation
386
+ markdown: "Markdown files",
387
+ mdx: "MDX files",
388
+ asciidoc: "AsciiDoc files",
389
+ // Data templates
390
+ "yaml-template": "YAML templates",
391
+ "json-template": "JSON templates",
392
+ // Additional JS frameworks
393
+ angular: "Angular components",
394
+ stencil: "Stencil components",
395
+ alpine: "Alpine.js templates",
396
+ htmx: "HTMX templates",
397
+ // Graphics
398
+ svg: "SVG components",
399
+ };
400
+ const typeLabel = comp.type
401
+ ? typeLabels[comp.type] || "template files"
402
+ : "component files";
403
+ console.log(chalk.green(" ✓ ") +
404
+ `${comp.fileCount} ${typeLabel} in ` +
405
+ chalk.cyan(comp.path));
406
+ }
407
+ }
408
+ // Tokens
409
+ if (project.tokens.length > 0) {
410
+ for (const token of project.tokens) {
411
+ console.log(chalk.green(" ✓ ") + `${token.name}: ` + chalk.cyan(token.path));
412
+ }
413
+ }
414
+ // Storybook
415
+ if (project.storybook) {
416
+ const version = project.storybook.version
417
+ ? ` (${project.storybook.version})`
418
+ : "";
419
+ console.log(chalk.green(" ✓ ") + `Storybook` + chalk.dim(version));
420
+ }
421
+ // Design system
422
+ if (project.designSystem) {
423
+ console.log(chalk.green(" ✓ ") +
424
+ `Design system: ` +
425
+ chalk.cyan(project.designSystem.package));
426
+ }
427
+ // Monorepo
428
+ if (project.monorepo) {
429
+ // Show basic monorepo info
430
+ console.log(chalk.green(" ✓ ") +
431
+ capitalize(project.monorepo.type) +
432
+ ` monorepo (${project.monorepo.packages.length} packages)`);
433
+ // Show monorepo component paths if detected
434
+ const monorepoComponents = project.components.filter((c) => c.path.startsWith("packages/") ||
435
+ c.path.startsWith("apps/") ||
436
+ c.path.startsWith("libs/") ||
437
+ c.path.startsWith("modules/"));
438
+ if (monorepoComponents.length > 0) {
439
+ console.log(chalk.dim(" ") +
440
+ chalk.dim(`Scanning: ${monorepoComponents.map((c) => c.path).slice(0, 3).join(", ")}${monorepoComponents.length > 3 ? ` +${monorepoComponents.length - 3} more` : ""}`));
441
+ }
442
+ }
443
+ // Design system documentation tools
444
+ if (project.designSystemDocs) {
445
+ const typeNames = {
446
+ 'zeroheight': 'Zeroheight',
447
+ 'supernova': 'Supernova',
448
+ 'specify': 'Specify',
449
+ 'knapsack': 'Knapsack',
450
+ 'framer': 'Framer',
451
+ 'tokenforge': 'TokenForge',
452
+ 'tokens-studio': 'Tokens Studio (Figma Tokens)',
453
+ };
454
+ const name = typeNames[project.designSystemDocs.type] || project.designSystemDocs.type;
455
+ const path = project.designSystemDocs.exportPath || project.designSystemDocs.configPath || '';
456
+ console.log(chalk.green(" ✓ ") +
457
+ chalk.bold(name) +
458
+ (path ? chalk.dim(` (${path})`) : ''));
459
+ }
460
+ // Nothing found
461
+ if (project.frameworks.length === 0 &&
462
+ project.components.length === 0 &&
463
+ project.tokens.length === 0 &&
464
+ !project.storybook &&
465
+ !project.designSystemDocs) {
466
+ console.log(chalk.yellow(" ⚠ ") + "No sources auto-detected");
467
+ console.log(chalk.dim(" You can manually configure sources in buoy.config.mjs"));
468
+ }
469
+ console.log("");
470
+ }
471
+ function capitalize(s) {
472
+ return s.charAt(0).toUpperCase() + s.slice(1);
473
+ }
474
+ /**
475
+ * Import tokens from a detected source and generate output file
476
+ */
477
+ async function importTokensFromSource(sourcePath, outputPath) {
478
+ try {
479
+ const content = readFileSync(sourcePath, 'utf-8');
480
+ const ext = extname(sourcePath).toLowerCase();
481
+ let tokens = [];
482
+ if (ext === '.json') {
483
+ const json = JSON.parse(content);
484
+ const format = detectFormat(json);
485
+ info(`Detected format: ${formatTokenFormat(format)}`);
486
+ tokens = parseTokenFile(content);
487
+ }
488
+ else if (ext === '.css') {
489
+ tokens = parseCssVariablesForInit(content, sourcePath);
490
+ }
491
+ else {
492
+ return { success: false, tokenCount: 0 };
493
+ }
494
+ if (tokens.length === 0) {
495
+ return { success: false, tokenCount: 0 };
496
+ }
497
+ // Generate CSS output
498
+ const outputContent = generateCssFromTokens(tokens);
499
+ writeFileSync(outputPath, outputContent);
500
+ return { success: true, tokenCount: tokens.length };
501
+ }
502
+ catch {
503
+ return { success: false, tokenCount: 0 };
504
+ }
505
+ }
506
+ /**
507
+ * Parse CSS variables for token import
508
+ */
509
+ function parseCssVariablesForInit(content, filePath) {
510
+ const tokens = [];
511
+ const varRegex = /--([\\w-]+)\\s*:\\s*([^;]+);/g;
512
+ let match;
513
+ while ((match = varRegex.exec(content)) !== null) {
514
+ const name = match[1];
515
+ const value = match[2].trim();
516
+ tokens.push({
517
+ id: `css:${filePath}:${name}`,
518
+ name: `--${name}`,
519
+ category: inferTokenCategory(name, value),
520
+ value: parseTokenValue(value),
521
+ source: { type: 'css', path: filePath },
522
+ aliases: [],
523
+ usedBy: [],
524
+ metadata: {},
525
+ scannedAt: new Date(),
526
+ });
527
+ }
528
+ return tokens;
529
+ }
530
+ /**
531
+ * Infer token category from name or value
532
+ */
533
+ function inferTokenCategory(name, value) {
534
+ const nameLower = name.toLowerCase();
535
+ if (nameLower.includes('color') || value.startsWith('#') || value.startsWith('rgb') || value.startsWith('hsl')) {
536
+ return 'color';
537
+ }
538
+ if (nameLower.includes('spacing') || nameLower.includes('space') || nameLower.includes('gap')) {
539
+ return 'spacing';
540
+ }
541
+ if (nameLower.includes('font') || nameLower.includes('text') || nameLower.includes('size')) {
542
+ return 'typography';
543
+ }
544
+ if (nameLower.includes('radius') || nameLower.includes('rounded')) {
545
+ return 'border';
546
+ }
547
+ if (nameLower.includes('shadow')) {
548
+ return 'shadow';
549
+ }
550
+ return 'other';
551
+ }
552
+ /**
553
+ * Parse a CSS value into TokenValue
554
+ */
555
+ function parseTokenValue(value) {
556
+ if (value.startsWith('#') || value.startsWith('rgb') || value.startsWith('hsl')) {
557
+ return { type: 'color', hex: value.startsWith('#') ? value.toLowerCase() : value };
558
+ }
559
+ const dimMatch = value.match(/^([\d.]+)(px|rem|em|%)$/);
560
+ if (dimMatch) {
561
+ return { type: 'spacing', value: parseFloat(dimMatch[1]), unit: dimMatch[2] };
562
+ }
563
+ return { type: 'raw', value };
564
+ }
565
+ /**
566
+ * Generate CSS file from tokens
567
+ */
568
+ function generateCssFromTokens(tokens) {
569
+ const lines = [
570
+ '/**',
571
+ ' * Design Tokens',
572
+ ' * Imported by Buoy',
573
+ ' */',
574
+ '',
575
+ ':root {',
576
+ ];
577
+ // Group by category
578
+ const groups = {};
579
+ for (const token of tokens) {
580
+ const cat = token.category;
581
+ if (!groups[cat])
582
+ groups[cat] = [];
583
+ groups[cat].push(token);
584
+ }
585
+ for (const [category, catTokens] of Object.entries(groups)) {
586
+ lines.push(` /* ${capitalize(category)} */`);
587
+ for (const token of catTokens) {
588
+ const name = token.name.startsWith('--') ? token.name : `--${token.name}`;
589
+ const value = getTokenDisplayValue(token);
590
+ lines.push(` ${name}: ${value};`);
591
+ }
592
+ lines.push('');
593
+ }
594
+ lines.push('}');
595
+ return lines.join('\\n');
596
+ }
597
+ /**
598
+ * Get display value for a token
599
+ */
600
+ function getTokenDisplayValue(token) {
601
+ const v = token.value;
602
+ if (v.type === 'color')
603
+ return v.hex;
604
+ if (v.type === 'spacing')
605
+ return `${v.value}${v.unit}`;
606
+ if (v.type === 'raw')
607
+ return v.value;
608
+ return JSON.stringify(v);
609
+ }
610
+ /**
611
+ * Format token format name for display
612
+ */
613
+ function formatTokenFormat(format) {
614
+ const names = {
615
+ dtcg: 'W3C Design Tokens (DTCG)',
616
+ 'tokens-studio': 'Tokens Studio (Figma Tokens)',
617
+ 'style-dictionary': 'Style Dictionary',
618
+ };
619
+ return names[format] || format;
620
+ }
621
+ async function promptConfirm(message, defaultValue = true) {
622
+ const rl = createInterface({
623
+ input: process.stdin,
624
+ output: process.stdout,
625
+ });
626
+ const suffix = defaultValue ? "[Y/n]" : "[y/N]";
627
+ return new Promise((resolve) => {
628
+ rl.question(`${message} ${suffix} `, (answer) => {
629
+ rl.close();
630
+ const trimmed = answer.trim().toLowerCase();
631
+ if (trimmed === "") {
632
+ resolve(defaultValue);
633
+ }
634
+ else {
635
+ resolve(trimmed === "y" || trimmed === "yes");
636
+ }
637
+ });
638
+ });
639
+ }
640
+ export function createDockCommand() {
641
+ const cmd = new Command("dock")
642
+ .description("Dock Buoy into your project")
643
+ .option("-f, --force", "Overwrite existing configuration")
644
+ .option("-n, --name <name>", "Project name")
645
+ .option("--skip-detect", "Skip auto-detection and create minimal config")
646
+ .option("-y, --yes", "Auto-install recommended plugins without prompting")
647
+ .option("--no-install", "Skip plugin installation prompts")
648
+ .option("--hooks", "Setup pre-commit hook for drift checking")
649
+ .action(async (options) => {
650
+ const cwd = process.cwd();
651
+ const configPath = resolve(cwd, "buoy.config.mjs");
652
+ // Check if config already exists
653
+ if (existsSync(configPath) && !options.force) {
654
+ warning(`Configuration already exists at ${configPath}`);
655
+ info("Use --force to overwrite");
656
+ return;
657
+ }
658
+ let project;
659
+ if (options.skipDetect) {
660
+ // Minimal detection - just get the project name
661
+ const detector = new ProjectDetector(cwd);
662
+ project = {
663
+ name: options.name || (await detector.detect()).name,
664
+ root: cwd,
665
+ frameworks: [],
666
+ primaryFramework: null,
667
+ components: [],
668
+ tokens: [],
669
+ storybook: null,
670
+ designSystem: null,
671
+ monorepo: null,
672
+ designSystemDocs: null,
673
+ };
674
+ }
675
+ else {
676
+ // Run auto-detection
677
+ const spinner = ora("Scanning project...").start();
678
+ try {
679
+ const detector = new ProjectDetector(cwd);
680
+ project = await detector.detect();
681
+ if (options.name) {
682
+ project.name = options.name;
683
+ }
684
+ spinner.stop();
685
+ printDetectionResults(project);
686
+ }
687
+ catch (err) {
688
+ spinner.fail("Detection failed");
689
+ const message = err instanceof Error ? err.message : String(err);
690
+ error(message);
691
+ process.exit(1);
692
+ }
693
+ }
694
+ // Track imported token file path for config generation
695
+ let importedTokenFile = null;
696
+ // Check if design system docs were detected and offer to import tokens
697
+ if (project.designSystemDocs && !options.skipDetect) {
698
+ const docType = project.designSystemDocs.type;
699
+ const sourcePath = project.designSystemDocs.exportPath || project.designSystemDocs.configPath;
700
+ const typeNames = {
701
+ 'zeroheight': 'Zeroheight',
702
+ 'supernova': 'Supernova',
703
+ 'specify': 'Specify',
704
+ 'knapsack': 'Knapsack',
705
+ 'framer': 'Framer',
706
+ 'tokenforge': 'TokenForge',
707
+ 'tokens-studio': 'Tokens Studio',
708
+ };
709
+ const docName = typeNames[docType] || docType;
710
+ if (sourcePath && existsSync(resolve(cwd, sourcePath))) {
711
+ console.log(chalk.bold(" Token Import"));
712
+ console.log("");
713
+ console.log(` Found ${chalk.cyan(docName)} tokens at ${chalk.dim(sourcePath)}`);
714
+ console.log("");
715
+ let shouldImport = false;
716
+ if (options.yes) {
717
+ shouldImport = true;
718
+ }
719
+ else if (process.stdin.isTTY) {
720
+ shouldImport = await promptConfirm(` Import tokens from ${docName}?`, true);
721
+ }
722
+ if (shouldImport) {
723
+ const outputFile = 'design-tokens.css';
724
+ const importSpinner = ora(`Importing tokens from ${docName}...`).start();
725
+ const result = await importTokensFromSource(resolve(cwd, sourcePath), resolve(cwd, outputFile));
726
+ if (result.success) {
727
+ importSpinner.succeed(`Imported ${result.tokenCount} tokens to ${outputFile}`);
728
+ importedTokenFile = outputFile;
729
+ // Add to project tokens for config generation
730
+ project.tokens.push({
731
+ name: 'Design Tokens',
732
+ path: outputFile,
733
+ type: 'css',
734
+ });
735
+ }
736
+ else {
737
+ importSpinner.warn('Could not parse tokens from source');
738
+ info(`You can manually import later with: ${chalk.cyan(`buoy import ${sourcePath}`)}`);
739
+ }
740
+ console.log("");
741
+ }
742
+ }
743
+ }
744
+ // Show detected frameworks and scanners
745
+ const detectedFrameworks = await detectFrameworks(cwd);
746
+ if (detectedFrameworks.length > 0) {
747
+ // Separate built-in scanners from optional plugins
748
+ const builtIn = detectedFrameworks.filter((fw) => fw.scanner);
749
+ const optionalPlugins = detectedFrameworks.filter((fw) => fw.plugin && !fw.scanner);
750
+ // Show built-in scanners (no install needed)
751
+ if (builtIn.length > 0) {
752
+ console.log(chalk.bold(" Built-in Scanners") +
753
+ chalk.dim(" (no install needed)"));
754
+ console.log("");
755
+ for (const fw of builtIn) {
756
+ const scannerInfo = BUILTIN_SCANNERS[fw.scanner];
757
+ const scannerLabel = scannerInfo?.description || capitalize(fw.name);
758
+ console.log(` ${chalk.green("✓")} ${chalk.cyan.bold(scannerLabel)}`);
759
+ console.log(` ${chalk.dim(fw.evidence)}`);
760
+ console.log("");
761
+ }
762
+ }
763
+ // Show optional plugins (need install)
764
+ if (optionalPlugins.length > 0) {
765
+ console.log(chalk.bold(" Optional Plugins"));
766
+ console.log("");
767
+ for (const fw of optionalPlugins) {
768
+ const pluginInfo = PLUGIN_INFO[fw.plugin];
769
+ const pluginName = pluginInfo?.name || `@buoy-design/plugin-${fw.plugin}`;
770
+ console.log(` ${chalk.dim("┌")} ${chalk.cyan.bold(pluginName)}`);
771
+ console.log(` ${chalk.dim("│")}`);
772
+ // What was detected
773
+ const detectsLabel = pluginInfo?.detects || capitalize(fw.name);
774
+ console.log(` ${chalk.dim("│")} ${chalk.white("Detected:")} ${detectsLabel} ${chalk.dim(`(${fw.evidence.toLowerCase()})`)}`);
775
+ console.log(` ${chalk.dim("│")}`);
776
+ // What the plugin does
777
+ if (pluginInfo?.description) {
778
+ console.log(` ${chalk.dim("│")} ${chalk.dim(pluginInfo.description)}`);
779
+ }
780
+ console.log(` ${chalk.dim("└─")} ${chalk.dim(getPluginInstallCommand([fw.plugin]))}`);
781
+ console.log("");
782
+ }
783
+ const missingPlugins = optionalPlugins
784
+ .map((fw) => fw.plugin)
785
+ .filter((plugin, index, self) => self.indexOf(plugin) === index);
786
+ if (missingPlugins.length > 0) {
787
+ console.log(chalk.dim(" " + "─".repeat(65)));
788
+ console.log("");
789
+ console.log(chalk.bold(" Install all optional plugins:"));
790
+ console.log(` ${chalk.cyan(getPluginInstallCommand(missingPlugins))}`);
791
+ console.log("");
792
+ // Determine if we should install plugins
793
+ let shouldInstall = false;
794
+ if (options.yes) {
795
+ shouldInstall = true;
796
+ }
797
+ else if (options.install !== false) {
798
+ // Only prompt if --no-install was not passed and stdin is a TTY
799
+ if (process.stdin.isTTY) {
800
+ shouldInstall = await promptConfirm("Install optional plugins now?", true);
801
+ }
802
+ }
803
+ if (shouldInstall) {
804
+ const { execSync } = await import("node:child_process");
805
+ console.log("");
806
+ console.log("Installing plugins...");
807
+ try {
808
+ execSync(getPluginInstallCommand(missingPlugins), {
809
+ stdio: "inherit",
810
+ });
811
+ success("Plugins installed successfully");
812
+ }
813
+ catch {
814
+ warning("Plugin installation failed. You can install manually with the command above.");
815
+ }
816
+ }
817
+ }
818
+ }
819
+ console.log("");
820
+ }
821
+ // Generate and write config
822
+ const content = generateConfig(project);
823
+ try {
824
+ writeFileSync(configPath, content, "utf-8");
825
+ success(`Created buoy.config.mjs`);
826
+ // Setup hooks if --hooks flag is provided
827
+ if (options.hooks) {
828
+ console.log("");
829
+ const hookSystem = detectHookSystem(cwd);
830
+ if (hookSystem) {
831
+ info(`Detected hook system: ${hookSystem}`);
832
+ const hookResult = setupHooks(cwd);
833
+ if (hookResult.success) {
834
+ success(hookResult.message);
835
+ }
836
+ else {
837
+ warning(hookResult.message);
838
+ }
839
+ }
840
+ else {
841
+ // No hook system detected, create standalone hook
842
+ const standaloneResult = generateStandaloneHook(cwd);
843
+ if (standaloneResult.success) {
844
+ success(standaloneResult.message);
845
+ info("To use this hook, copy it to .git/hooks/pre-commit or configure your hook system");
846
+ }
847
+ else {
848
+ warning(standaloneResult.message);
849
+ }
850
+ }
851
+ }
852
+ console.log("");
853
+ info("Next steps:");
854
+ let stepNum = 1;
855
+ if (importedTokenFile) {
856
+ info(` ${stepNum}. Review imported tokens in ${chalk.cyan(importedTokenFile)}`);
857
+ stepNum++;
858
+ }
859
+ info(` ${stepNum}. Run ${chalk.cyan("buoy scan")} to scan your codebase`);
860
+ stepNum++;
861
+ info(` ${stepNum}. Run ${chalk.cyan("buoy drift check")} to detect drift`);
862
+ stepNum++;
863
+ if (!options.hooks) {
864
+ info(` ${stepNum}. Run ` +
865
+ chalk.cyan("buoy init --hooks") +
866
+ " to setup pre-commit hooks");
867
+ }
868
+ if (!project.storybook) {
869
+ console.log("");
870
+ info(chalk.dim("Optional: Connect Figma by adding your API key to the config"));
871
+ }
872
+ }
873
+ catch (err) {
874
+ const message = err instanceof Error ? err.message : String(err);
875
+ error(`Failed to create configuration: ${message}`);
876
+ process.exit(1);
877
+ }
878
+ });
879
+ return cmd;
880
+ }
881
+ //# sourceMappingURL=dock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dock.js","sourceRoot":"","sources":["../../src/commands/dock.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export { createInitCommand } from "./init.js";
1
+ export { createDockCommand } from "./dock.js";
2
2
  export { createScanCommand } from "./scan.js";
3
3
  export { createDriftCommand } from "./drift.js";
4
4
  export { createStatusCommand } from "./status.js";
@@ -1,4 +1,4 @@
1
- export { createInitCommand } from "./init.js";
1
+ export { createDockCommand } from "./dock.js";
2
2
  export { createScanCommand } from "./scan.js";
3
3
  export { createDriftCommand } from "./drift.js";
4
4
  export { createStatusCommand } from "./status.js";
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Command } from "commander";
2
- import { createInitCommand, createScanCommand, createDriftCommand, createStatusCommand, createTokensCommand, createAnchorCommand, createPluginsCommand, createCICommand, createCheckCommand, createBaselineCommand, createExplainCommand, createCompareCommand, createAuditCommand, createGraphCommand, createImportCommand, } from "./commands/index.js";
2
+ import { createDockCommand, createScanCommand, createDriftCommand, createStatusCommand, createTokensCommand, createAnchorCommand, createPluginsCommand, createCICommand, createCheckCommand, createBaselineCommand, createExplainCommand, createCompareCommand, createAuditCommand, createGraphCommand, createImportCommand, } from "./commands/index.js";
3
3
  export function createCli() {
4
4
  const program = new Command();
5
5
  program
@@ -7,7 +7,7 @@ export function createCli() {
7
7
  .description("Design drift detection for the AI era")
8
8
  .version("0.0.1");
9
9
  // Add commands
10
- program.addCommand(createInitCommand());
10
+ program.addCommand(createDockCommand());
11
11
  program.addCommand(createScanCommand());
12
12
  program.addCommand(createDriftCommand());
13
13
  program.addCommand(createStatusCommand());
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@buoy-design/cli",
3
- "version": "0.1.9",
3
+ "version": "0.1.10",
4
4
  "description": "Buoy CLI - Design drift detection for the AI era",
5
5
  "type": "module",
6
6
  "license": "MIT",