@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 @@
|
|
|
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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"}
|
package/dist/commands/index.d.ts
CHANGED
package/dist/commands/index.js
CHANGED
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
import {
|
|
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(
|
|
10
|
+
program.addCommand(createDockCommand());
|
|
11
11
|
program.addCommand(createScanCommand());
|
|
12
12
|
program.addCommand(createDriftCommand());
|
|
13
13
|
program.addCommand(createStatusCommand());
|