cmssy-cli 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +235 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +71 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/build.d.ts +6 -0
- package/dist/commands/build.d.ts.map +1 -0
- package/dist/commands/build.js +153 -0
- package/dist/commands/build.js.map +1 -0
- package/dist/commands/configure.d.ts +6 -0
- package/dist/commands/configure.d.ts.map +1 -0
- package/dist/commands/configure.js +42 -0
- package/dist/commands/configure.js.map +1 -0
- package/dist/commands/create.d.ts +8 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +314 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/deploy.d.ts +9 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +226 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/dev.d.ts +6 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +489 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/init.d.ts +6 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +517 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/sync.d.ts +6 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +208 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/utils/blockforge-config.d.ts +19 -0
- package/dist/utils/blockforge-config.d.ts.map +1 -0
- package/dist/utils/blockforge-config.js +19 -0
- package/dist/utils/blockforge-config.js.map +1 -0
- package/dist/utils/cmssy-config.d.ts +19 -0
- package/dist/utils/cmssy-config.d.ts.map +1 -0
- package/dist/utils/cmssy-config.js +19 -0
- package/dist/utils/cmssy-config.js.map +1 -0
- package/dist/utils/config.d.ts +8 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +45 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/graphql.d.ts +4 -0
- package/dist/utils/graphql.d.ts.map +1 -0
- package/dist/utils/graphql.js +26 -0
- package/dist/utils/graphql.js.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1,517 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import { execSync } from "child_process";
|
|
3
|
+
import fs from "fs-extra";
|
|
4
|
+
import inquirer from "inquirer";
|
|
5
|
+
import ora from "ora";
|
|
6
|
+
import path from "path";
|
|
7
|
+
export async function initCommand(name, options) {
|
|
8
|
+
console.log(chalk.blue.bold("\n🔨 Cmssy - Initialize Project\n"));
|
|
9
|
+
const answers = await inquirer.prompt([
|
|
10
|
+
{
|
|
11
|
+
type: "input",
|
|
12
|
+
name: "projectName",
|
|
13
|
+
message: "Project name:",
|
|
14
|
+
default: name || "my-blocks",
|
|
15
|
+
validate: (input) => {
|
|
16
|
+
if (/^[a-z0-9-_]+$/.test(input))
|
|
17
|
+
return true;
|
|
18
|
+
return "Project name must contain only lowercase letters, numbers, hyphens, and underscores";
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
type: "list",
|
|
23
|
+
name: "framework",
|
|
24
|
+
message: "Framework:",
|
|
25
|
+
choices: [
|
|
26
|
+
{ name: "React", value: "react" },
|
|
27
|
+
{ name: "Vue", value: "vue" },
|
|
28
|
+
{ name: "Angular", value: "angular" },
|
|
29
|
+
{ name: "Svelte", value: "svelte" },
|
|
30
|
+
{ name: "Vanilla JS", value: "vanilla" },
|
|
31
|
+
],
|
|
32
|
+
default: options?.framework || "react",
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
type: "confirm",
|
|
36
|
+
name: "useTailwind",
|
|
37
|
+
message: "Use Tailwind CSS v4?",
|
|
38
|
+
default: true,
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
type: "input",
|
|
42
|
+
name: "authorName",
|
|
43
|
+
message: "Author name:",
|
|
44
|
+
default: "",
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
type: "input",
|
|
48
|
+
name: "authorEmail",
|
|
49
|
+
message: "Author email:",
|
|
50
|
+
default: "",
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
type: "confirm",
|
|
54
|
+
name: "initGit",
|
|
55
|
+
message: "Initialize git repository?",
|
|
56
|
+
default: true,
|
|
57
|
+
},
|
|
58
|
+
]);
|
|
59
|
+
const projectPath = path.join(process.cwd(), answers.projectName);
|
|
60
|
+
// Check if directory exists
|
|
61
|
+
if (fs.existsSync(projectPath)) {
|
|
62
|
+
console.error(chalk.red(`\n✖ Directory "${answers.projectName}" already exists\n`));
|
|
63
|
+
process.exit(1);
|
|
64
|
+
}
|
|
65
|
+
const spinner = ora("Creating project structure...").start();
|
|
66
|
+
try {
|
|
67
|
+
// Create project directory
|
|
68
|
+
fs.mkdirSync(projectPath, { recursive: true });
|
|
69
|
+
// Create directory structure
|
|
70
|
+
const dirs = ["blocks", "templates", "public", ".blockforge"];
|
|
71
|
+
dirs.forEach((dir) => {
|
|
72
|
+
fs.mkdirSync(path.join(projectPath, dir), { recursive: true });
|
|
73
|
+
});
|
|
74
|
+
// Create cmssy.config.js
|
|
75
|
+
const config = {
|
|
76
|
+
framework: answers.framework,
|
|
77
|
+
author: {
|
|
78
|
+
name: answers.authorName,
|
|
79
|
+
email: answers.authorEmail,
|
|
80
|
+
},
|
|
81
|
+
cdn: {
|
|
82
|
+
baseUrl: "",
|
|
83
|
+
},
|
|
84
|
+
build: {
|
|
85
|
+
outDir: "public",
|
|
86
|
+
minify: true,
|
|
87
|
+
sourcemap: true,
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
fs.writeFileSync(path.join(projectPath, "cmssy.config.js"), `export default ${JSON.stringify(config, null, 2)};\n`);
|
|
91
|
+
// Create package.json
|
|
92
|
+
const packageJson = {
|
|
93
|
+
name: answers.projectName,
|
|
94
|
+
version: "1.0.0",
|
|
95
|
+
type: "module",
|
|
96
|
+
scripts: {
|
|
97
|
+
dev: "cmssy dev -p 3000",
|
|
98
|
+
build: "cmssy build",
|
|
99
|
+
},
|
|
100
|
+
dependencies: {},
|
|
101
|
+
devDependencies: {
|
|
102
|
+
"cmssy-cli": "^0.4.0",
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
// Add Tailwind CSS v4 if selected
|
|
106
|
+
if (answers.useTailwind) {
|
|
107
|
+
packageJson.devDependencies = {
|
|
108
|
+
...packageJson.devDependencies,
|
|
109
|
+
tailwindcss: "^4.0.0",
|
|
110
|
+
"@tailwindcss/postcss": "^4.0.0",
|
|
111
|
+
postcss: "^8.4.49",
|
|
112
|
+
"postcss-cli": "^11.0.0",
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
// Add framework-specific dependencies
|
|
116
|
+
if (answers.framework === "react") {
|
|
117
|
+
packageJson.dependencies = {
|
|
118
|
+
react: "^19.2.3",
|
|
119
|
+
"react-dom": "^19.2.3",
|
|
120
|
+
};
|
|
121
|
+
packageJson.devDependencies = {
|
|
122
|
+
...packageJson.devDependencies,
|
|
123
|
+
"@types/react": "^19.2.7",
|
|
124
|
+
"@types/react-dom": "^19",
|
|
125
|
+
typescript: "^5.7.2",
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
fs.writeFileSync(path.join(projectPath, "package.json"), JSON.stringify(packageJson, null, 2) + "\n");
|
|
129
|
+
// Create tsconfig.json for React projects
|
|
130
|
+
if (answers.framework === "react") {
|
|
131
|
+
const tsConfig = {
|
|
132
|
+
compilerOptions: {
|
|
133
|
+
target: "ES2020",
|
|
134
|
+
module: "ESNext",
|
|
135
|
+
lib: ["ES2020", "DOM", "DOM.Iterable"],
|
|
136
|
+
jsx: "react-jsx",
|
|
137
|
+
moduleResolution: "bundler",
|
|
138
|
+
allowImportingTsExtensions: true,
|
|
139
|
+
resolveJsonModule: true,
|
|
140
|
+
isolatedModules: true,
|
|
141
|
+
noEmit: true,
|
|
142
|
+
strict: true,
|
|
143
|
+
skipLibCheck: true,
|
|
144
|
+
esModuleInterop: true,
|
|
145
|
+
allowSyntheticDefaultImports: true,
|
|
146
|
+
forceConsistentCasingInFileNames: true,
|
|
147
|
+
},
|
|
148
|
+
include: ["blocks/**/*", "templates/**/*"],
|
|
149
|
+
exclude: ["node_modules", "dist", "public"],
|
|
150
|
+
};
|
|
151
|
+
fs.writeFileSync(path.join(projectPath, "tsconfig.json"), JSON.stringify(tsConfig, null, 2) + "\n");
|
|
152
|
+
}
|
|
153
|
+
// Create .gitignore
|
|
154
|
+
const gitignore = `node_modules/
|
|
155
|
+
dist/
|
|
156
|
+
public/
|
|
157
|
+
.env
|
|
158
|
+
.DS_Store
|
|
159
|
+
*.log
|
|
160
|
+
.blockforge/cache/
|
|
161
|
+
`;
|
|
162
|
+
fs.writeFileSync(path.join(projectPath, ".gitignore"), gitignore);
|
|
163
|
+
// Create postcss.config.js for Tailwind v4 if selected
|
|
164
|
+
if (answers.useTailwind) {
|
|
165
|
+
const postcssConfig = `export default {
|
|
166
|
+
plugins: {
|
|
167
|
+
'@tailwindcss/postcss': {},
|
|
168
|
+
},
|
|
169
|
+
};
|
|
170
|
+
`;
|
|
171
|
+
fs.writeFileSync(path.join(projectPath, "postcss.config.js"), postcssConfig);
|
|
172
|
+
}
|
|
173
|
+
// Create .env.example
|
|
174
|
+
const envExample = `# Cmssy API Configuration
|
|
175
|
+
# Run 'cmssy configure' to set these values
|
|
176
|
+
|
|
177
|
+
# Cmssy GraphQL API URL
|
|
178
|
+
CMSSY_API_URL=https://api.cmssy.io/graphql
|
|
179
|
+
|
|
180
|
+
# Cmssy API Token (get from Workspace Settings → API Tokens)
|
|
181
|
+
# Required scopes: marketplace:publish
|
|
182
|
+
CMSSY_API_TOKEN=
|
|
183
|
+
`;
|
|
184
|
+
fs.writeFileSync(path.join(projectPath, ".env.example"), envExample);
|
|
185
|
+
// Create README.md
|
|
186
|
+
const readme = `# ${answers.projectName}
|
|
187
|
+
|
|
188
|
+
Cmssy project for building reusable UI blocks and templates.
|
|
189
|
+
|
|
190
|
+
## Getting Started
|
|
191
|
+
|
|
192
|
+
\`\`\`bash
|
|
193
|
+
# Install dependencies
|
|
194
|
+
npm install
|
|
195
|
+
|
|
196
|
+
# Start development server with hot reload (http://localhost:3000)
|
|
197
|
+
npm run dev
|
|
198
|
+
|
|
199
|
+
# Or specify a custom port
|
|
200
|
+
npm run dev -- -p 3002
|
|
201
|
+
|
|
202
|
+
# Create a new block
|
|
203
|
+
cmssy create block my-block
|
|
204
|
+
|
|
205
|
+
# Build for production
|
|
206
|
+
npm run build
|
|
207
|
+
\`\`\`
|
|
208
|
+
|
|
209
|
+
## Available Commands
|
|
210
|
+
|
|
211
|
+
### Development
|
|
212
|
+
\`\`\`bash
|
|
213
|
+
# Start dev server with preview UI (uses npm script)
|
|
214
|
+
npm run dev
|
|
215
|
+
|
|
216
|
+
# Create a new block
|
|
217
|
+
cmssy create block <name>
|
|
218
|
+
|
|
219
|
+
# Create a new page template
|
|
220
|
+
cmssy create template <name>
|
|
221
|
+
|
|
222
|
+
# Build all blocks and templates (uses npm script)
|
|
223
|
+
npm run build
|
|
224
|
+
\`\`\`
|
|
225
|
+
|
|
226
|
+
### Publishing to Cmssy Marketplace
|
|
227
|
+
\`\`\`bash
|
|
228
|
+
# Configure API credentials (run once)
|
|
229
|
+
cmssy configure
|
|
230
|
+
|
|
231
|
+
# Deploy all blocks and templates
|
|
232
|
+
cmssy deploy --all
|
|
233
|
+
|
|
234
|
+
# Deploy specific blocks
|
|
235
|
+
cmssy deploy --blocks hero pricing
|
|
236
|
+
|
|
237
|
+
# Deploy specific templates
|
|
238
|
+
cmssy deploy --templates landing
|
|
239
|
+
|
|
240
|
+
# Preview what would be deployed
|
|
241
|
+
cmssy deploy --all --dry-run
|
|
242
|
+
\`\`\`
|
|
243
|
+
|
|
244
|
+
### Syncing from Marketplace
|
|
245
|
+
\`\`\`bash
|
|
246
|
+
# Pull a specific block from marketplace
|
|
247
|
+
cmssy sync @vendor/blocks.hero --workspace YOUR_WORKSPACE_ID
|
|
248
|
+
|
|
249
|
+
# Pull all installed packages
|
|
250
|
+
cmssy sync --workspace YOUR_WORKSPACE_ID
|
|
251
|
+
\`\`\`
|
|
252
|
+
|
|
253
|
+
## Project Structure
|
|
254
|
+
|
|
255
|
+
\`\`\`
|
|
256
|
+
${answers.projectName}/
|
|
257
|
+
├── blocks/ # Your UI blocks
|
|
258
|
+
│ └── hero/
|
|
259
|
+
│ ├── src/
|
|
260
|
+
│ │ ├── index.tsx
|
|
261
|
+
│ │ ├── Hero.tsx
|
|
262
|
+
│ │ └── index.css
|
|
263
|
+
│ ├── package.json
|
|
264
|
+
│ └── preview.json
|
|
265
|
+
├── templates/ # Your page templates
|
|
266
|
+
├── public/ # Build output
|
|
267
|
+
├── cmssy.config.js # Project configuration
|
|
268
|
+
├── .env # API credentials (created by configure)
|
|
269
|
+
└── .env.example # API credentials template
|
|
270
|
+
\`\`\`
|
|
271
|
+
|
|
272
|
+
## Configuration
|
|
273
|
+
|
|
274
|
+
Edit \`cmssy.config.js\` to customize:
|
|
275
|
+
- Framework (${answers.framework})
|
|
276
|
+
- Author information
|
|
277
|
+
- Build settings
|
|
278
|
+
|
|
279
|
+
## Framework
|
|
280
|
+
|
|
281
|
+
- ${answers.framework}
|
|
282
|
+
|
|
283
|
+
## Author
|
|
284
|
+
|
|
285
|
+
- ${answers.authorName} ${answers.authorEmail ? `<${answers.authorEmail}>` : ""}
|
|
286
|
+
|
|
287
|
+
## Documentation
|
|
288
|
+
|
|
289
|
+
For more information, visit: https://cmssy.io/docs
|
|
290
|
+
`;
|
|
291
|
+
fs.writeFileSync(path.join(projectPath, "README.md"), readme);
|
|
292
|
+
spinner.succeed("Project structure created");
|
|
293
|
+
// Create example block
|
|
294
|
+
spinner.start("Creating example hero block...");
|
|
295
|
+
const exampleBlockPath = path.join(projectPath, "blocks", "hero");
|
|
296
|
+
fs.mkdirSync(exampleBlockPath, { recursive: true });
|
|
297
|
+
fs.mkdirSync(path.join(exampleBlockPath, "src"), { recursive: true });
|
|
298
|
+
if (answers.framework === "react") {
|
|
299
|
+
// Create React example with or without Tailwind
|
|
300
|
+
const heroComponent = answers.useTailwind
|
|
301
|
+
? `interface HeroContent {
|
|
302
|
+
heading?: string;
|
|
303
|
+
subheading?: string;
|
|
304
|
+
ctaText?: string;
|
|
305
|
+
ctaUrl?: string;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
interface HeroProps {
|
|
309
|
+
content: HeroContent;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
export default function Hero({ content }: HeroProps) {
|
|
313
|
+
const {
|
|
314
|
+
heading = 'Welcome to Cmssy',
|
|
315
|
+
subheading = 'Build reusable UI blocks with any framework',
|
|
316
|
+
ctaText = 'Get Started',
|
|
317
|
+
ctaUrl = '#',
|
|
318
|
+
} = content;
|
|
319
|
+
|
|
320
|
+
return (
|
|
321
|
+
<section className="flex items-center justify-center min-h-[400px] p-8 bg-gradient-to-br from-purple-600 to-purple-900 text-white text-center">
|
|
322
|
+
<div className="max-w-3xl">
|
|
323
|
+
<h1 className="text-5xl font-bold mb-4">{heading}</h1>
|
|
324
|
+
<p className="text-xl mb-8 opacity-90">{subheading}</p>
|
|
325
|
+
<a
|
|
326
|
+
href={ctaUrl}
|
|
327
|
+
className="inline-block px-8 py-4 bg-white text-purple-600 rounded-lg font-semibold hover:scale-105 transition-transform"
|
|
328
|
+
>
|
|
329
|
+
{ctaText}
|
|
330
|
+
</a>
|
|
331
|
+
</div>
|
|
332
|
+
</section>
|
|
333
|
+
);
|
|
334
|
+
}
|
|
335
|
+
`
|
|
336
|
+
: `interface HeroContent {
|
|
337
|
+
heading?: string;
|
|
338
|
+
subheading?: string;
|
|
339
|
+
ctaText?: string;
|
|
340
|
+
ctaUrl?: string;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
interface HeroProps {
|
|
344
|
+
content: HeroContent;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
export default function Hero({ content }: HeroProps) {
|
|
348
|
+
const {
|
|
349
|
+
heading = 'Welcome to Cmssy',
|
|
350
|
+
subheading = 'Build reusable UI blocks with any framework',
|
|
351
|
+
ctaText = 'Get Started',
|
|
352
|
+
ctaUrl = '#',
|
|
353
|
+
} = content;
|
|
354
|
+
|
|
355
|
+
return (
|
|
356
|
+
<section className="hero">
|
|
357
|
+
<div className="hero-content">
|
|
358
|
+
<h1>{heading}</h1>
|
|
359
|
+
<p>{subheading}</p>
|
|
360
|
+
<a href={ctaUrl} className="cta-button">
|
|
361
|
+
{ctaText}
|
|
362
|
+
</a>
|
|
363
|
+
</div>
|
|
364
|
+
</section>
|
|
365
|
+
);
|
|
366
|
+
}
|
|
367
|
+
`;
|
|
368
|
+
fs.writeFileSync(path.join(exampleBlockPath, "src", "Hero.tsx"), heroComponent);
|
|
369
|
+
const indexFile = `import React from 'react';
|
|
370
|
+
import { createRoot, Root } from 'react-dom/client';
|
|
371
|
+
import Hero from './Hero';
|
|
372
|
+
|
|
373
|
+
interface BlockContext {
|
|
374
|
+
root: Root;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
export default {
|
|
378
|
+
mount(element: HTMLElement, props: any): BlockContext {
|
|
379
|
+
const root = createRoot(element);
|
|
380
|
+
root.render(<Hero content={props} />);
|
|
381
|
+
return { root };
|
|
382
|
+
},
|
|
383
|
+
|
|
384
|
+
unmount(_element: HTMLElement, ctx: BlockContext): void {
|
|
385
|
+
ctx.root.unmount();
|
|
386
|
+
}
|
|
387
|
+
};
|
|
388
|
+
`;
|
|
389
|
+
fs.writeFileSync(path.join(exampleBlockPath, "src", "index.tsx"), indexFile);
|
|
390
|
+
}
|
|
391
|
+
const cssFile = answers.useTailwind
|
|
392
|
+
? `@import "tailwindcss";
|
|
393
|
+
`
|
|
394
|
+
: `.hero {
|
|
395
|
+
display: flex;
|
|
396
|
+
align-items: center;
|
|
397
|
+
justify-content: center;
|
|
398
|
+
min-height: 400px;
|
|
399
|
+
padding: 2rem;
|
|
400
|
+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
401
|
+
color: white;
|
|
402
|
+
text-align: center;
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
.hero-content h1 {
|
|
406
|
+
font-size: 3rem;
|
|
407
|
+
margin-bottom: 1rem;
|
|
408
|
+
font-weight: bold;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
.hero-content p {
|
|
412
|
+
font-size: 1.25rem;
|
|
413
|
+
margin-bottom: 2rem;
|
|
414
|
+
opacity: 0.9;
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
.cta-button {
|
|
418
|
+
display: inline-block;
|
|
419
|
+
padding: 1rem 2rem;
|
|
420
|
+
background: white;
|
|
421
|
+
color: #667eea;
|
|
422
|
+
text-decoration: none;
|
|
423
|
+
border-radius: 0.5rem;
|
|
424
|
+
font-weight: 600;
|
|
425
|
+
transition: transform 0.2s;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
.cta-button:hover {
|
|
429
|
+
transform: scale(1.05);
|
|
430
|
+
}
|
|
431
|
+
`;
|
|
432
|
+
fs.writeFileSync(path.join(exampleBlockPath, "src", "index.css"), cssFile);
|
|
433
|
+
// Create package.json for block
|
|
434
|
+
const blockPackageJson = {
|
|
435
|
+
name: `@${answers.projectName}/blocks.hero`,
|
|
436
|
+
version: "1.0.0",
|
|
437
|
+
description: "Hero section block",
|
|
438
|
+
author: {
|
|
439
|
+
name: answers.authorName,
|
|
440
|
+
email: answers.authorEmail,
|
|
441
|
+
},
|
|
442
|
+
blockforge: {
|
|
443
|
+
packageType: "block",
|
|
444
|
+
displayName: "Hero Section",
|
|
445
|
+
category: "marketing",
|
|
446
|
+
tags: ["hero", "landing", "cta"],
|
|
447
|
+
pricing: {
|
|
448
|
+
licenseType: "free",
|
|
449
|
+
},
|
|
450
|
+
schemaFields: [
|
|
451
|
+
{
|
|
452
|
+
key: "heading",
|
|
453
|
+
type: "text",
|
|
454
|
+
label: "Main Heading",
|
|
455
|
+
required: true,
|
|
456
|
+
placeholder: "Welcome to Cmssy",
|
|
457
|
+
},
|
|
458
|
+
{
|
|
459
|
+
key: "subheading",
|
|
460
|
+
type: "text",
|
|
461
|
+
label: "Subheading",
|
|
462
|
+
placeholder: "Build reusable UI blocks",
|
|
463
|
+
},
|
|
464
|
+
{
|
|
465
|
+
key: "ctaText",
|
|
466
|
+
type: "string",
|
|
467
|
+
label: "CTA Button Text",
|
|
468
|
+
placeholder: "Get Started",
|
|
469
|
+
},
|
|
470
|
+
{
|
|
471
|
+
key: "ctaUrl",
|
|
472
|
+
type: "link",
|
|
473
|
+
label: "CTA Button URL",
|
|
474
|
+
placeholder: "#",
|
|
475
|
+
},
|
|
476
|
+
],
|
|
477
|
+
defaultContent: {
|
|
478
|
+
heading: "Welcome to Cmssy",
|
|
479
|
+
subheading: "Build reusable UI blocks with any framework",
|
|
480
|
+
ctaText: "Get Started",
|
|
481
|
+
ctaUrl: "#",
|
|
482
|
+
},
|
|
483
|
+
},
|
|
484
|
+
};
|
|
485
|
+
fs.writeFileSync(path.join(exampleBlockPath, "package.json"), JSON.stringify(blockPackageJson, null, 2) + "\n");
|
|
486
|
+
// Create preview.json for dev server
|
|
487
|
+
const previewData = {
|
|
488
|
+
heading: "Welcome to Cmssy",
|
|
489
|
+
subheading: "Build reusable UI blocks with any framework",
|
|
490
|
+
ctaText: "Get Started",
|
|
491
|
+
ctaUrl: "#",
|
|
492
|
+
};
|
|
493
|
+
fs.writeFileSync(path.join(exampleBlockPath, "preview.json"), JSON.stringify(previewData, null, 2) + "\n");
|
|
494
|
+
spinner.succeed("Example hero block created");
|
|
495
|
+
// Initialize git
|
|
496
|
+
if (answers.initGit) {
|
|
497
|
+
spinner.start("Initializing git repository...");
|
|
498
|
+
process.chdir(projectPath);
|
|
499
|
+
execSync("git init", { stdio: "ignore" });
|
|
500
|
+
execSync("git branch -m main", { stdio: "ignore" });
|
|
501
|
+
spinner.succeed("Git repository initialized");
|
|
502
|
+
}
|
|
503
|
+
// Success message
|
|
504
|
+
console.log(chalk.green.bold("\n✓ Project created successfully!\n"));
|
|
505
|
+
console.log(chalk.cyan("Next steps:\n"));
|
|
506
|
+
console.log(chalk.white(` cd ${answers.projectName}`));
|
|
507
|
+
console.log(chalk.white(" npm install"));
|
|
508
|
+
console.log(chalk.white(" npm run dev"));
|
|
509
|
+
console.log(chalk.gray("\nHappy building! 🔨\n"));
|
|
510
|
+
}
|
|
511
|
+
catch (error) {
|
|
512
|
+
spinner.fail("Failed to create project");
|
|
513
|
+
console.error(chalk.red("\nError:"), error);
|
|
514
|
+
process.exit(1);
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAQA,UAAU,WAAW;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA4BD,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,OAAO,EAAE,WAAW,iBA2HrB"}
|