@husar.ai/cli 0.4.3 ā 0.4.5
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/cli.js +132 -54
- package/dist/cli.js.map +1 -1
- package/dist/functions/create.d.ts +1 -1
- package/dist/functions/create.js +287 -152
- package/dist/functions/create.js.map +1 -1
- package/dist/ui.d.ts +51 -0
- package/dist/ui.js +181 -0
- package/dist/ui.js.map +1 -0
- package/package.json +10 -6
- package/src/cli.ts +183 -61
- package/src/functions/create.ts +356 -190
- package/src/ui.ts +260 -0
package/dist/functions/create.js
CHANGED
|
@@ -1,170 +1,164 @@
|
|
|
1
1
|
import { spawn } from 'node:child_process';
|
|
2
2
|
import { promises as fs } from 'node:fs';
|
|
3
3
|
import { join, resolve } from 'node:path';
|
|
4
|
-
import * as readline from 'node:readline';
|
|
5
4
|
import { getCloudAuth } from '../auth/config.js';
|
|
6
5
|
import { startCloudLoginFlow, startPanelLoginFlow } from '../auth/login.js';
|
|
7
6
|
import { getProjects, verifyAccessToken } from '../auth/api.js';
|
|
7
|
+
import { log, spinner, select, input, successBox, errorBox, nextSteps, header, theme, chalk } from '../ui.js';
|
|
8
8
|
export async function runCreateCommand(options) {
|
|
9
|
-
|
|
10
|
-
const connectionMethod = await
|
|
9
|
+
header('Step 1: Connect to CMS');
|
|
10
|
+
const connectionMethod = await select('How do you want to connect?', [
|
|
11
|
+
{
|
|
12
|
+
name: 'cloud',
|
|
13
|
+
message: 'Login to husar.ai',
|
|
14
|
+
hint: 'Recommended - select from your projects',
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: 'manual',
|
|
18
|
+
message: 'Enter URL manually',
|
|
19
|
+
hint: 'For self-hosted or custom instances',
|
|
20
|
+
},
|
|
21
|
+
]);
|
|
11
22
|
let panelHost;
|
|
12
23
|
if (connectionMethod === 'manual') {
|
|
13
|
-
panelHost = await
|
|
24
|
+
panelHost = await input('Enter your CMS panel URL', 'https://');
|
|
25
|
+
if (!panelHost.startsWith('http://') && !panelHost.startsWith('https://')) {
|
|
26
|
+
errorBox('URL must start with http:// or https://');
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
14
29
|
}
|
|
15
30
|
else {
|
|
16
31
|
const cloudAuth = await ensureCloudLogin();
|
|
17
32
|
if (!cloudAuth) {
|
|
18
|
-
|
|
33
|
+
errorBox('Cloud authentication failed. Please try again.');
|
|
19
34
|
process.exit(1);
|
|
20
35
|
}
|
|
21
|
-
|
|
36
|
+
const spin = spinner('Fetching your projects...');
|
|
22
37
|
const projects = await getProjects(cloudAuth.accessToken);
|
|
38
|
+
spin.stop();
|
|
23
39
|
if (projects.length === 0) {
|
|
24
|
-
|
|
25
|
-
console.log(' Create a project at https://admin.husar.ai first.\n');
|
|
40
|
+
errorBox('No projects found in your account.\n\n' + `Create a project at ${theme.link('https://admin.husar.ai')} first.`, 'No Projects');
|
|
26
41
|
process.exit(1);
|
|
27
42
|
}
|
|
28
43
|
const selectedProject = await promptSelectProject(projects);
|
|
29
44
|
panelHost = selectedProject.adminURL;
|
|
30
|
-
|
|
45
|
+
log.done(`Selected: ${theme.info(selectedProject.name)}`);
|
|
31
46
|
}
|
|
32
|
-
|
|
33
|
-
|
|
47
|
+
header('Step 2: CMS Authentication');
|
|
48
|
+
log.info('Opening browser for CMS authentication...');
|
|
49
|
+
log.dim("You'll need your SUPERADMIN credentials (from the welcome email)");
|
|
50
|
+
log.blank();
|
|
34
51
|
const panelAuth = await startPanelLoginFlow(panelHost);
|
|
35
52
|
if (!panelAuth.success || !panelAuth.project) {
|
|
36
|
-
|
|
53
|
+
errorBox(panelAuth.error ?? 'Unknown error', 'CMS Authentication Failed');
|
|
37
54
|
process.exit(1);
|
|
38
55
|
}
|
|
39
56
|
const project = panelAuth.project;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
57
|
+
log.success(`Connected to: ${theme.info(project.projectName)}`);
|
|
58
|
+
log.dim(`Host: ${project.host}`);
|
|
59
|
+
header('Step 3: Project Setup');
|
|
60
|
+
const defaultName = project.projectName.replace(/[^a-zA-Z0-9-_]/g, '-').toLowerCase();
|
|
61
|
+
const projectName = options.projectName || (await input('Project directory name', defaultName));
|
|
43
62
|
if (!projectName) {
|
|
44
|
-
|
|
63
|
+
errorBox('Project name is required.');
|
|
45
64
|
process.exit(1);
|
|
46
65
|
}
|
|
47
66
|
const projectPath = resolve(process.cwd(), projectName);
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
67
|
+
const framework = options.framework ||
|
|
68
|
+
(await select('Which template would you like?', [
|
|
69
|
+
{
|
|
70
|
+
name: 'nextjs',
|
|
71
|
+
message: 'Next.js',
|
|
72
|
+
hint: 'Recommended - Full-stack React with SSR',
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
name: 'vite',
|
|
76
|
+
message: 'Vite + React',
|
|
77
|
+
hint: 'Fast build tool with React & TypeScript',
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
name: 'clean',
|
|
81
|
+
message: 'Clean (no framework)',
|
|
82
|
+
hint: 'Just npm init - bring your own setup',
|
|
83
|
+
},
|
|
84
|
+
]));
|
|
85
|
+
header('Step 4: Creating Project');
|
|
86
|
+
if (framework === 'clean') {
|
|
87
|
+
const spin = spinner('Initializing clean project...');
|
|
88
|
+
const initSuccess = await initCleanProject(projectName);
|
|
89
|
+
if (!initSuccess) {
|
|
90
|
+
spin.fail('Project initialization failed');
|
|
91
|
+
process.exit(1);
|
|
92
|
+
}
|
|
93
|
+
spin.succeed('Project initialized');
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
const frameworkLabel = framework === 'nextjs' ? 'Next.js' : 'Vite + React';
|
|
97
|
+
log.step(`Creating ${frameworkLabel} project...`);
|
|
98
|
+
log.blank();
|
|
99
|
+
const frameworkSuccess = await runFrameworkCli(framework, projectName);
|
|
100
|
+
if (!frameworkSuccess) {
|
|
101
|
+
errorBox('Framework CLI failed. Please check the output above.');
|
|
102
|
+
process.exit(1);
|
|
103
|
+
}
|
|
53
104
|
}
|
|
54
|
-
|
|
55
|
-
|
|
105
|
+
header('Step 5: Configuring Husar');
|
|
106
|
+
const configSpin = spinner('Adding configuration...');
|
|
107
|
+
await addHusarConfig(projectPath, project, framework);
|
|
108
|
+
configSpin.succeed('Configuration added');
|
|
109
|
+
log.substep('husar.json - CMS configuration');
|
|
110
|
+
log.substep('.env.local - Credentials (keep secret!)');
|
|
111
|
+
log.substep('opencode.jsonc - MCP integration');
|
|
112
|
+
log.substep('.opencode/command/husar.md - MCP docs');
|
|
56
113
|
if (!options.skipInstall) {
|
|
57
|
-
|
|
114
|
+
log.blank();
|
|
115
|
+
const installSpin = spinner('Installing Husar packages...');
|
|
58
116
|
await installHusarPackages(projectPath);
|
|
117
|
+
installSpin.succeed('Packages installed');
|
|
118
|
+
log.substep('@husar.ai/ssr');
|
|
119
|
+
log.substep('@husar.ai/render');
|
|
59
120
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
const choice = await promptChoice(2);
|
|
77
|
-
return choice === 1 ? 'manual' : 'cloud';
|
|
78
|
-
}
|
|
79
|
-
async function promptManualUrl() {
|
|
80
|
-
return new Promise((resolve) => {
|
|
81
|
-
const rl = readline.createInterface({
|
|
82
|
-
input: process.stdin,
|
|
83
|
-
output: process.stdout,
|
|
84
|
-
});
|
|
85
|
-
const ask = () => {
|
|
86
|
-
rl.question('\nš Enter your CMS panel URL: ', (answer) => {
|
|
87
|
-
const url = answer.trim();
|
|
88
|
-
if (!url) {
|
|
89
|
-
console.log(' URL is required.');
|
|
90
|
-
ask();
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
if (!url.startsWith('http://') && !url.startsWith('https://')) {
|
|
94
|
-
console.log(' URL must start with http:// or https://');
|
|
95
|
-
ask();
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
rl.close();
|
|
99
|
-
resolve(url);
|
|
100
|
-
});
|
|
101
|
-
};
|
|
102
|
-
ask();
|
|
103
|
-
});
|
|
121
|
+
log.blank();
|
|
122
|
+
const genSpin = spinner('Generating CMS client...');
|
|
123
|
+
await generateCmsClient(projectPath, framework);
|
|
124
|
+
genSpin.succeed('CMS client generated');
|
|
125
|
+
log.substep('cms/zeus/ - GraphQL client');
|
|
126
|
+
log.substep('cms/ssr.ts - Server client');
|
|
127
|
+
log.substep('cms/react.ts - React components');
|
|
128
|
+
successBox(`Project created at ${theme.info(projectPath)}\n\n` +
|
|
129
|
+
`Framework: ${theme.muted(framework)}\n` +
|
|
130
|
+
`CMS Host: ${theme.muted(project.host)}`, 'Project Ready!');
|
|
131
|
+
nextSteps([
|
|
132
|
+
`cd ${chalk.cyan(projectName)}`,
|
|
133
|
+
`${chalk.cyan('npm run dev')} to start development`,
|
|
134
|
+
`Open ${theme.link('https://docs.husar.ai')} for documentation`,
|
|
135
|
+
]);
|
|
136
|
+
process.exit(0);
|
|
104
137
|
}
|
|
105
138
|
async function promptSelectProject(projects) {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
return projects[choice - 1];
|
|
113
|
-
}
|
|
114
|
-
async function promptProjectName(suggestedName) {
|
|
115
|
-
return new Promise((resolve) => {
|
|
116
|
-
const rl = readline.createInterface({
|
|
117
|
-
input: process.stdin,
|
|
118
|
-
output: process.stdout,
|
|
119
|
-
});
|
|
120
|
-
const defaultName = suggestedName ? suggestedName.replace(/[^a-zA-Z0-9-_]/g, '-') : '';
|
|
121
|
-
const prompt = defaultName
|
|
122
|
-
? `š Enter project directory name [${defaultName}]: `
|
|
123
|
-
: 'š Enter project directory name: ';
|
|
124
|
-
rl.question(prompt, (answer) => {
|
|
125
|
-
rl.close();
|
|
126
|
-
const name = answer.trim() || defaultName;
|
|
127
|
-
resolve(name);
|
|
128
|
-
});
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
async function promptChoice(max) {
|
|
132
|
-
return new Promise((resolvePrompt) => {
|
|
133
|
-
const rl = readline.createInterface({
|
|
134
|
-
input: process.stdin,
|
|
135
|
-
output: process.stdout,
|
|
136
|
-
});
|
|
137
|
-
const ask = () => {
|
|
138
|
-
rl.question(`Enter choice (1-${max}): `, (answer) => {
|
|
139
|
-
const num = parseInt(answer, 10);
|
|
140
|
-
if (num >= 1 && num <= max) {
|
|
141
|
-
rl.close();
|
|
142
|
-
resolvePrompt(num);
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
console.log(`Please enter a number between 1 and ${max}`);
|
|
146
|
-
ask();
|
|
147
|
-
}
|
|
148
|
-
});
|
|
149
|
-
};
|
|
150
|
-
ask();
|
|
151
|
-
});
|
|
139
|
+
const choice = await select('Select a project', projects.map((p) => ({
|
|
140
|
+
name: p.name,
|
|
141
|
+
message: p.name,
|
|
142
|
+
hint: p.adminURL,
|
|
143
|
+
})));
|
|
144
|
+
return projects.find((p) => p.name === choice);
|
|
152
145
|
}
|
|
153
146
|
async function ensureCloudLogin() {
|
|
154
147
|
const existingAuth = await getCloudAuth();
|
|
155
148
|
if (existingAuth) {
|
|
156
|
-
|
|
149
|
+
const spin = spinner('Checking existing session...');
|
|
157
150
|
const isValid = await verifyAccessToken(existingAuth.accessToken);
|
|
158
151
|
if (isValid) {
|
|
159
|
-
|
|
152
|
+
spin.succeed(`Logged in as ${theme.info(existingAuth.email ?? 'user')}`);
|
|
160
153
|
return existingAuth;
|
|
161
154
|
}
|
|
162
|
-
|
|
155
|
+
spin.warn('Session expired, need to re-authenticate');
|
|
163
156
|
}
|
|
164
|
-
|
|
157
|
+
log.info('Please log in to Husar.ai...');
|
|
158
|
+
log.blank();
|
|
165
159
|
const result = await startCloudLoginFlow();
|
|
166
160
|
if (result.success && result.accessToken) {
|
|
167
|
-
|
|
161
|
+
log.success(`Logged in as ${theme.info(result.email ?? 'user')}`);
|
|
168
162
|
return {
|
|
169
163
|
accessToken: result.accessToken,
|
|
170
164
|
email: result.email,
|
|
@@ -172,8 +166,47 @@ async function ensureCloudLogin() {
|
|
|
172
166
|
}
|
|
173
167
|
return null;
|
|
174
168
|
}
|
|
169
|
+
async function initCleanProject(projectName) {
|
|
170
|
+
const projectPath = resolve(process.cwd(), projectName);
|
|
171
|
+
return new Promise((done) => {
|
|
172
|
+
const mkdirChild = spawn('mkdir', ['-p', projectName], {
|
|
173
|
+
stdio: 'pipe',
|
|
174
|
+
shell: true,
|
|
175
|
+
});
|
|
176
|
+
mkdirChild.on('close', (mkdirCode) => {
|
|
177
|
+
if (mkdirCode !== 0) {
|
|
178
|
+
done(false);
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
const initChild = spawn('npm', ['init', '-y'], {
|
|
182
|
+
cwd: projectPath,
|
|
183
|
+
stdio: 'pipe',
|
|
184
|
+
shell: true,
|
|
185
|
+
});
|
|
186
|
+
initChild.on('close', async (initCode) => {
|
|
187
|
+
if (initCode !== 0) {
|
|
188
|
+
done(false);
|
|
189
|
+
return;
|
|
190
|
+
}
|
|
191
|
+
try {
|
|
192
|
+
await fs.mkdir(join(projectPath, 'src'), { recursive: true });
|
|
193
|
+
done(true);
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
done(false);
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
initChild.on('error', () => {
|
|
200
|
+
done(false);
|
|
201
|
+
});
|
|
202
|
+
});
|
|
203
|
+
mkdirChild.on('error', () => {
|
|
204
|
+
done(false);
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
}
|
|
175
208
|
async function runFrameworkCli(framework, projectName) {
|
|
176
|
-
return new Promise((
|
|
209
|
+
return new Promise((resolvePromise) => {
|
|
177
210
|
let command;
|
|
178
211
|
let args;
|
|
179
212
|
if (framework === 'nextjs') {
|
|
@@ -194,22 +227,138 @@ async function runFrameworkCli(framework, projectName) {
|
|
|
194
227
|
command = 'npm';
|
|
195
228
|
args = ['create', 'vite@latest', projectName, '--', '--template', 'react-ts'];
|
|
196
229
|
}
|
|
197
|
-
|
|
230
|
+
log.dim(`Running: ${command} ${args.join(' ')}`);
|
|
231
|
+
log.blank();
|
|
198
232
|
const child = spawn(command, args, {
|
|
199
233
|
stdio: 'inherit',
|
|
200
234
|
shell: true,
|
|
201
235
|
});
|
|
202
236
|
child.on('close', (code) => {
|
|
203
|
-
|
|
237
|
+
resolvePromise(code === 0);
|
|
204
238
|
});
|
|
205
|
-
child.on('error', (
|
|
206
|
-
|
|
207
|
-
resolve(false);
|
|
239
|
+
child.on('error', () => {
|
|
240
|
+
resolvePromise(false);
|
|
208
241
|
});
|
|
209
242
|
});
|
|
210
243
|
}
|
|
244
|
+
const HUSAR_COMMAND_TEMPLATE = `# /husar - Husar.ai CMS Operations
|
|
245
|
+
|
|
246
|
+
Use the **husar.ai** MCP server (configured in \`opencode.jsonc\`) for all CMS operations.
|
|
247
|
+
|
|
248
|
+
## Available MCP Tools
|
|
249
|
+
|
|
250
|
+
### Discovery & Schema
|
|
251
|
+
|
|
252
|
+
- \`listModels\` ā List all model definitions with their field structures
|
|
253
|
+
- \`listViews\` ā List all view definitions with their field structures
|
|
254
|
+
- \`listShapes\` ā List all shape definitions
|
|
255
|
+
- \`graphQLTypes\` ā Get the generated GraphQL SDL schema (understand exact input/output types)
|
|
256
|
+
- \`rootParams\` ā Get root parameters (e.g. available \`_language\` options)
|
|
257
|
+
- \`links\` ā List internal links
|
|
258
|
+
|
|
259
|
+
### Shape Inspection
|
|
260
|
+
|
|
261
|
+
- \`shape.getWithDefinition\` ā Get complete shape info including definition, fieldSet, and GraphQL types
|
|
262
|
+
- \`shape.model\` ā Get full shape configuration
|
|
263
|
+
- \`shape.previewFields\` ā Get expanded fields for a shape
|
|
264
|
+
- \`shape.fieldSet\` ā Get admin page fieldset for a shape
|
|
265
|
+
|
|
266
|
+
### Model Operations
|
|
267
|
+
|
|
268
|
+
- \`model.getWithContent\` ā **Use before upsert** to understand exact structure and get current content
|
|
269
|
+
- \`model.list\` ā List all documents for a model
|
|
270
|
+
- \`model.one\` ā Get a single document by slug
|
|
271
|
+
- \`model.upsert\` ā Create or update a model document (provide slug + args matching field definitions)
|
|
272
|
+
- \`model.remove\` ā Remove a document by slug
|
|
273
|
+
|
|
274
|
+
### View Operations (singletons)
|
|
275
|
+
|
|
276
|
+
- \`view.getWithContent\` ā **Use before upsert** to understand exact structure and get current content
|
|
277
|
+
- \`view.one\` ā Get view content
|
|
278
|
+
- \`view.upsert\` ā Create or update view content
|
|
279
|
+
- \`view.remove\` ā Remove a view entry
|
|
280
|
+
|
|
281
|
+
### Definition Management
|
|
282
|
+
|
|
283
|
+
- \`upsertModel\` / \`removeModel\` ā Manage model definitions (schema)
|
|
284
|
+
- \`upsertView\` / \`removeView\` ā Manage view definitions (schema)
|
|
285
|
+
- \`upsertShape\` / \`removeShape\` ā Manage shape definitions (schema)
|
|
286
|
+
- \`removeModelWithDocuments\` ā Remove a model and all its documents
|
|
287
|
+
|
|
288
|
+
### Styling
|
|
289
|
+
|
|
290
|
+
- \`style.tailwind.css.get\` ā Fetch current Tailwind CSS source and compiled variants
|
|
291
|
+
- \`style.tailwind.css.set\` ā Set Tailwind CSS source content (Tailwind v4 compiles it after save)
|
|
292
|
+
|
|
293
|
+
### AI Generation
|
|
294
|
+
|
|
295
|
+
- \`generateContent\` ā Generate content using AI
|
|
296
|
+
- \`generateImage\` ā Generate an image using AI
|
|
297
|
+
- \`translateDocument\` ā Translate a model document to another language
|
|
298
|
+
- \`translateView\` ā Translate a view to another language
|
|
299
|
+
|
|
300
|
+
### Links
|
|
301
|
+
|
|
302
|
+
- \`upsertLink\` ā Create or update an internal link
|
|
303
|
+
- \`removeLink\` ā Remove an internal link
|
|
304
|
+
|
|
305
|
+
### Files
|
|
306
|
+
|
|
307
|
+
- \`uploadFile\` ā Get a signed S3 PUT URL for uploading a file
|
|
308
|
+
|
|
309
|
+
## Workflow Guidelines
|
|
310
|
+
|
|
311
|
+
1. **Always call \`getWithContent\` before any upsert** ā This gives you the exact field structure and current data so you can construct valid input.
|
|
312
|
+
2. **Use \`graphQLTypes\`** when you need to understand the precise GraphQL input/output types expected by upsert operations.
|
|
313
|
+
3. **Use \`listModels\` / \`listViews\` / \`listShapes\`** for discovery ā find out what content types exist before operating on them.
|
|
314
|
+
4. **For SHAPE fields**, provide nested objects matching the shape's field structure.
|
|
315
|
+
5. **For RELATION fields**, provide \`_id\` strings.
|
|
316
|
+
6. **Root params** (like \`_language\`) can be passed as a \`filter\` parameter to scope operations by locale.
|
|
317
|
+
7. **Tailwind styles** are managed through the CMS ā fetch with \`style.tailwind.css.get\` and update with \`style.tailwind.css.set\`.
|
|
318
|
+
8. **Draft versions** can be saved by setting \`draft_version: true\` on upsert calls.
|
|
319
|
+
|
|
320
|
+
## Example Workflows
|
|
321
|
+
|
|
322
|
+
### Update view content
|
|
323
|
+
|
|
324
|
+
\`\`\`
|
|
325
|
+
1. view.getWithContent (understand structure + current data)
|
|
326
|
+
2. view.upsert (provide updated args)
|
|
327
|
+
\`\`\`
|
|
328
|
+
|
|
329
|
+
### Create a new model document
|
|
330
|
+
|
|
331
|
+
\`\`\`
|
|
332
|
+
1. model.getWithContent (understand field structure)
|
|
333
|
+
2. model.upsert (provide slug + args)
|
|
334
|
+
\`\`\`
|
|
335
|
+
|
|
336
|
+
### Modify CMS schema
|
|
337
|
+
|
|
338
|
+
\`\`\`
|
|
339
|
+
1. listModels / listViews / listShapes (see what exists)
|
|
340
|
+
2. graphQLTypes (understand current schema)
|
|
341
|
+
3. upsertModel / upsertView / upsertShape (modify definitions)
|
|
342
|
+
\`\`\`
|
|
343
|
+
|
|
344
|
+
### Update Tailwind styles
|
|
345
|
+
|
|
346
|
+
\`\`\`
|
|
347
|
+
1. style.tailwind.css.get (see current styles)
|
|
348
|
+
2. style.tailwind.css.set (update with new content)
|
|
349
|
+
\`\`\`
|
|
350
|
+
`;
|
|
351
|
+
async function createOpencodeCommandFolder(projectPath) {
|
|
352
|
+
const commandDir = join(projectPath, '.opencode', 'command');
|
|
353
|
+
try {
|
|
354
|
+
await fs.mkdir(commandDir, { recursive: true });
|
|
355
|
+
await fs.writeFile(join(commandDir, 'husar.md'), HUSAR_COMMAND_TEMPLATE);
|
|
356
|
+
}
|
|
357
|
+
catch {
|
|
358
|
+
}
|
|
359
|
+
}
|
|
211
360
|
async function addHusarConfig(projectPath, project, framework) {
|
|
212
|
-
const hostEnvVar = framework === 'nextjs' ? 'NEXT_PUBLIC_HUSAR_HOST' : 'VITE_HUSAR_HOST';
|
|
361
|
+
const hostEnvVar = framework === 'nextjs' ? 'NEXT_PUBLIC_HUSAR_HOST' : framework === 'vite' ? 'VITE_HUSAR_HOST' : 'HUSAR_HOST';
|
|
213
362
|
const husarConfig = {
|
|
214
363
|
host: project.host,
|
|
215
364
|
hostEnvironmentVariable: hostEnvVar,
|
|
@@ -218,7 +367,6 @@ async function addHusarConfig(projectPath, project, framework) {
|
|
|
218
367
|
overrideHost: false,
|
|
219
368
|
};
|
|
220
369
|
await fs.writeFile(join(projectPath, 'husar.json'), JSON.stringify(husarConfig, null, 2));
|
|
221
|
-
console.log(' ā Created husar.json');
|
|
222
370
|
const envContent = `# Husar CMS Configuration
|
|
223
371
|
# This file contains secrets - DO NOT commit to version control!
|
|
224
372
|
|
|
@@ -232,7 +380,6 @@ HUSAR_API_KEY=
|
|
|
232
380
|
HUSAR_ADMIN_TOKEN=${project.adminToken}
|
|
233
381
|
`;
|
|
234
382
|
await fs.writeFile(join(projectPath, '.env.local'), envContent);
|
|
235
|
-
console.log(' ā Created .env.local (contains admin credentials)');
|
|
236
383
|
const opencodeConfig = {
|
|
237
384
|
$schema: 'https://opencode.ai/schemas/opencode.json',
|
|
238
385
|
mcpServers: {
|
|
@@ -244,7 +391,7 @@ HUSAR_ADMIN_TOKEN=${project.adminToken}
|
|
|
244
391
|
},
|
|
245
392
|
};
|
|
246
393
|
await fs.writeFile(join(projectPath, 'opencode.jsonc'), JSON.stringify(opencodeConfig, null, 2));
|
|
247
|
-
|
|
394
|
+
await createOpencodeCommandFolder(projectPath);
|
|
248
395
|
const gitignorePath = join(projectPath, '.gitignore');
|
|
249
396
|
try {
|
|
250
397
|
let gitignore = await fs.readFile(gitignorePath, 'utf-8');
|
|
@@ -258,53 +405,41 @@ HUSAR_ADMIN_TOKEN=${project.adminToken}
|
|
|
258
405
|
if (additions.length > 0) {
|
|
259
406
|
gitignore += '\n# Local environment files (contain secrets)\n' + additions.join('\n') + '\n';
|
|
260
407
|
await fs.writeFile(gitignorePath, gitignore);
|
|
261
|
-
console.log(' ā Updated .gitignore');
|
|
262
408
|
}
|
|
263
409
|
}
|
|
264
410
|
catch {
|
|
265
411
|
await fs.writeFile(gitignorePath, '# Local environment files (contain secrets)\n.env.local\n.env*.local\n');
|
|
266
|
-
console.log(' ā Created .gitignore');
|
|
267
412
|
}
|
|
268
413
|
}
|
|
269
414
|
async function installHusarPackages(projectPath) {
|
|
270
|
-
return new Promise((
|
|
415
|
+
return new Promise((resolvePromise) => {
|
|
271
416
|
const packages = ['@husar.ai/ssr', '@husar.ai/render'];
|
|
272
417
|
const child = spawn('npm', ['install', ...packages], {
|
|
273
418
|
cwd: projectPath,
|
|
274
|
-
stdio: '
|
|
419
|
+
stdio: 'pipe',
|
|
275
420
|
shell: true,
|
|
276
421
|
});
|
|
277
422
|
child.on('close', () => {
|
|
278
|
-
|
|
279
|
-
resolve();
|
|
423
|
+
resolvePromise();
|
|
280
424
|
});
|
|
281
|
-
child.on('error', (
|
|
282
|
-
|
|
283
|
-
console.log(' Run manually: npm install @husar.ai/ssr @husar.ai/render');
|
|
284
|
-
resolve();
|
|
425
|
+
child.on('error', () => {
|
|
426
|
+
resolvePromise();
|
|
285
427
|
});
|
|
286
428
|
});
|
|
287
429
|
}
|
|
288
430
|
async function generateCmsClient(projectPath, framework) {
|
|
289
|
-
const srcFolder =
|
|
290
|
-
return new Promise((
|
|
431
|
+
const srcFolder = './src';
|
|
432
|
+
return new Promise((resolvePromise) => {
|
|
291
433
|
const child = spawn('npx', ['@husar.ai/cli', 'generate', srcFolder], {
|
|
292
434
|
cwd: projectPath,
|
|
293
|
-
stdio: '
|
|
435
|
+
stdio: 'pipe',
|
|
294
436
|
shell: true,
|
|
295
437
|
});
|
|
296
|
-
child.on('close', (
|
|
297
|
-
|
|
298
|
-
console.log(' ā Generated cms/ folder with Zeus client');
|
|
299
|
-
}
|
|
300
|
-
else {
|
|
301
|
-
console.log(' ā CMS generation may have failed - you can run "husar generate" later');
|
|
302
|
-
}
|
|
303
|
-
resolve();
|
|
438
|
+
child.on('close', () => {
|
|
439
|
+
resolvePromise();
|
|
304
440
|
});
|
|
305
441
|
child.on('error', () => {
|
|
306
|
-
|
|
307
|
-
resolve();
|
|
442
|
+
resolvePromise();
|
|
308
443
|
});
|
|
309
444
|
});
|
|
310
445
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/functions/create.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/functions/create.ts"],"names":[],"mappings":"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"}
|