@husar.ai/cli 0.4.2 ā 0.4.4
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/auth/login.js +1 -1
- package/dist/auth/login.js.map +1 -1
- 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 +286 -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 +9 -5
- package/src/auth/login.ts +3 -3
- package/src/cli.ts +182 -60
- package/src/functions/create.ts +354 -190
- package/src/ui.ts +260 -0
package/dist/functions/create.js
CHANGED
|
@@ -1,170 +1,163 @@
|
|
|
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
|
-
console.log(' 2. Login to husar.ai and select from list\n');
|
|
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
|
+
]);
|
|
104
136
|
}
|
|
105
137
|
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
|
-
});
|
|
138
|
+
const choice = await select('Select a project', projects.map((p) => ({
|
|
139
|
+
name: p.name,
|
|
140
|
+
message: p.name,
|
|
141
|
+
hint: p.adminURL,
|
|
142
|
+
})));
|
|
143
|
+
return projects.find((p) => p.name === choice);
|
|
152
144
|
}
|
|
153
145
|
async function ensureCloudLogin() {
|
|
154
146
|
const existingAuth = await getCloudAuth();
|
|
155
147
|
if (existingAuth) {
|
|
156
|
-
|
|
148
|
+
const spin = spinner('Checking existing session...');
|
|
157
149
|
const isValid = await verifyAccessToken(existingAuth.accessToken);
|
|
158
150
|
if (isValid) {
|
|
159
|
-
|
|
151
|
+
spin.succeed(`Logged in as ${theme.info(existingAuth.email ?? 'user')}`);
|
|
160
152
|
return existingAuth;
|
|
161
153
|
}
|
|
162
|
-
|
|
154
|
+
spin.warn('Session expired, need to re-authenticate');
|
|
163
155
|
}
|
|
164
|
-
|
|
156
|
+
log.info('Please log in to Husar.ai...');
|
|
157
|
+
log.blank();
|
|
165
158
|
const result = await startCloudLoginFlow();
|
|
166
159
|
if (result.success && result.accessToken) {
|
|
167
|
-
|
|
160
|
+
log.success(`Logged in as ${theme.info(result.email ?? 'user')}`);
|
|
168
161
|
return {
|
|
169
162
|
accessToken: result.accessToken,
|
|
170
163
|
email: result.email,
|
|
@@ -172,8 +165,47 @@ async function ensureCloudLogin() {
|
|
|
172
165
|
}
|
|
173
166
|
return null;
|
|
174
167
|
}
|
|
168
|
+
async function initCleanProject(projectName) {
|
|
169
|
+
const projectPath = resolve(process.cwd(), projectName);
|
|
170
|
+
return new Promise((done) => {
|
|
171
|
+
const mkdirChild = spawn('mkdir', ['-p', projectName], {
|
|
172
|
+
stdio: 'pipe',
|
|
173
|
+
shell: true,
|
|
174
|
+
});
|
|
175
|
+
mkdirChild.on('close', (mkdirCode) => {
|
|
176
|
+
if (mkdirCode !== 0) {
|
|
177
|
+
done(false);
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
const initChild = spawn('npm', ['init', '-y'], {
|
|
181
|
+
cwd: projectPath,
|
|
182
|
+
stdio: 'pipe',
|
|
183
|
+
shell: true,
|
|
184
|
+
});
|
|
185
|
+
initChild.on('close', async (initCode) => {
|
|
186
|
+
if (initCode !== 0) {
|
|
187
|
+
done(false);
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
try {
|
|
191
|
+
await fs.mkdir(join(projectPath, 'src'), { recursive: true });
|
|
192
|
+
done(true);
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
done(false);
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
initChild.on('error', () => {
|
|
199
|
+
done(false);
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
mkdirChild.on('error', () => {
|
|
203
|
+
done(false);
|
|
204
|
+
});
|
|
205
|
+
});
|
|
206
|
+
}
|
|
175
207
|
async function runFrameworkCli(framework, projectName) {
|
|
176
|
-
return new Promise((
|
|
208
|
+
return new Promise((resolvePromise) => {
|
|
177
209
|
let command;
|
|
178
210
|
let args;
|
|
179
211
|
if (framework === 'nextjs') {
|
|
@@ -194,22 +226,138 @@ async function runFrameworkCli(framework, projectName) {
|
|
|
194
226
|
command = 'npm';
|
|
195
227
|
args = ['create', 'vite@latest', projectName, '--', '--template', 'react-ts'];
|
|
196
228
|
}
|
|
197
|
-
|
|
229
|
+
log.dim(`Running: ${command} ${args.join(' ')}`);
|
|
230
|
+
log.blank();
|
|
198
231
|
const child = spawn(command, args, {
|
|
199
232
|
stdio: 'inherit',
|
|
200
233
|
shell: true,
|
|
201
234
|
});
|
|
202
235
|
child.on('close', (code) => {
|
|
203
|
-
|
|
236
|
+
resolvePromise(code === 0);
|
|
204
237
|
});
|
|
205
|
-
child.on('error', (
|
|
206
|
-
|
|
207
|
-
resolve(false);
|
|
238
|
+
child.on('error', () => {
|
|
239
|
+
resolvePromise(false);
|
|
208
240
|
});
|
|
209
241
|
});
|
|
210
242
|
}
|
|
243
|
+
const HUSAR_COMMAND_TEMPLATE = `# /husar - Husar.ai CMS Operations
|
|
244
|
+
|
|
245
|
+
Use the **husar.ai** MCP server (configured in \`opencode.jsonc\`) for all CMS operations.
|
|
246
|
+
|
|
247
|
+
## Available MCP Tools
|
|
248
|
+
|
|
249
|
+
### Discovery & Schema
|
|
250
|
+
|
|
251
|
+
- \`listModels\` ā List all model definitions with their field structures
|
|
252
|
+
- \`listViews\` ā List all view definitions with their field structures
|
|
253
|
+
- \`listShapes\` ā List all shape definitions
|
|
254
|
+
- \`graphQLTypes\` ā Get the generated GraphQL SDL schema (understand exact input/output types)
|
|
255
|
+
- \`rootParams\` ā Get root parameters (e.g. available \`_language\` options)
|
|
256
|
+
- \`links\` ā List internal links
|
|
257
|
+
|
|
258
|
+
### Shape Inspection
|
|
259
|
+
|
|
260
|
+
- \`shape.getWithDefinition\` ā Get complete shape info including definition, fieldSet, and GraphQL types
|
|
261
|
+
- \`shape.model\` ā Get full shape configuration
|
|
262
|
+
- \`shape.previewFields\` ā Get expanded fields for a shape
|
|
263
|
+
- \`shape.fieldSet\` ā Get admin page fieldset for a shape
|
|
264
|
+
|
|
265
|
+
### Model Operations
|
|
266
|
+
|
|
267
|
+
- \`model.getWithContent\` ā **Use before upsert** to understand exact structure and get current content
|
|
268
|
+
- \`model.list\` ā List all documents for a model
|
|
269
|
+
- \`model.one\` ā Get a single document by slug
|
|
270
|
+
- \`model.upsert\` ā Create or update a model document (provide slug + args matching field definitions)
|
|
271
|
+
- \`model.remove\` ā Remove a document by slug
|
|
272
|
+
|
|
273
|
+
### View Operations (singletons)
|
|
274
|
+
|
|
275
|
+
- \`view.getWithContent\` ā **Use before upsert** to understand exact structure and get current content
|
|
276
|
+
- \`view.one\` ā Get view content
|
|
277
|
+
- \`view.upsert\` ā Create or update view content
|
|
278
|
+
- \`view.remove\` ā Remove a view entry
|
|
279
|
+
|
|
280
|
+
### Definition Management
|
|
281
|
+
|
|
282
|
+
- \`upsertModel\` / \`removeModel\` ā Manage model definitions (schema)
|
|
283
|
+
- \`upsertView\` / \`removeView\` ā Manage view definitions (schema)
|
|
284
|
+
- \`upsertShape\` / \`removeShape\` ā Manage shape definitions (schema)
|
|
285
|
+
- \`removeModelWithDocuments\` ā Remove a model and all its documents
|
|
286
|
+
|
|
287
|
+
### Styling
|
|
288
|
+
|
|
289
|
+
- \`style.tailwind.css.get\` ā Fetch current Tailwind CSS source and compiled variants
|
|
290
|
+
- \`style.tailwind.css.set\` ā Set Tailwind CSS source content (Tailwind v4 compiles it after save)
|
|
291
|
+
|
|
292
|
+
### AI Generation
|
|
293
|
+
|
|
294
|
+
- \`generateContent\` ā Generate content using AI
|
|
295
|
+
- \`generateImage\` ā Generate an image using AI
|
|
296
|
+
- \`translateDocument\` ā Translate a model document to another language
|
|
297
|
+
- \`translateView\` ā Translate a view to another language
|
|
298
|
+
|
|
299
|
+
### Links
|
|
300
|
+
|
|
301
|
+
- \`upsertLink\` ā Create or update an internal link
|
|
302
|
+
- \`removeLink\` ā Remove an internal link
|
|
303
|
+
|
|
304
|
+
### Files
|
|
305
|
+
|
|
306
|
+
- \`uploadFile\` ā Get a signed S3 PUT URL for uploading a file
|
|
307
|
+
|
|
308
|
+
## Workflow Guidelines
|
|
309
|
+
|
|
310
|
+
1. **Always call \`getWithContent\` before any upsert** ā This gives you the exact field structure and current data so you can construct valid input.
|
|
311
|
+
2. **Use \`graphQLTypes\`** when you need to understand the precise GraphQL input/output types expected by upsert operations.
|
|
312
|
+
3. **Use \`listModels\` / \`listViews\` / \`listShapes\`** for discovery ā find out what content types exist before operating on them.
|
|
313
|
+
4. **For SHAPE fields**, provide nested objects matching the shape's field structure.
|
|
314
|
+
5. **For RELATION fields**, provide \`_id\` strings.
|
|
315
|
+
6. **Root params** (like \`_language\`) can be passed as a \`filter\` parameter to scope operations by locale.
|
|
316
|
+
7. **Tailwind styles** are managed through the CMS ā fetch with \`style.tailwind.css.get\` and update with \`style.tailwind.css.set\`.
|
|
317
|
+
8. **Draft versions** can be saved by setting \`draft_version: true\` on upsert calls.
|
|
318
|
+
|
|
319
|
+
## Example Workflows
|
|
320
|
+
|
|
321
|
+
### Update view content
|
|
322
|
+
|
|
323
|
+
\`\`\`
|
|
324
|
+
1. view.getWithContent (understand structure + current data)
|
|
325
|
+
2. view.upsert (provide updated args)
|
|
326
|
+
\`\`\`
|
|
327
|
+
|
|
328
|
+
### Create a new model document
|
|
329
|
+
|
|
330
|
+
\`\`\`
|
|
331
|
+
1. model.getWithContent (understand field structure)
|
|
332
|
+
2. model.upsert (provide slug + args)
|
|
333
|
+
\`\`\`
|
|
334
|
+
|
|
335
|
+
### Modify CMS schema
|
|
336
|
+
|
|
337
|
+
\`\`\`
|
|
338
|
+
1. listModels / listViews / listShapes (see what exists)
|
|
339
|
+
2. graphQLTypes (understand current schema)
|
|
340
|
+
3. upsertModel / upsertView / upsertShape (modify definitions)
|
|
341
|
+
\`\`\`
|
|
342
|
+
|
|
343
|
+
### Update Tailwind styles
|
|
344
|
+
|
|
345
|
+
\`\`\`
|
|
346
|
+
1. style.tailwind.css.get (see current styles)
|
|
347
|
+
2. style.tailwind.css.set (update with new content)
|
|
348
|
+
\`\`\`
|
|
349
|
+
`;
|
|
350
|
+
async function createOpencodeCommandFolder(projectPath) {
|
|
351
|
+
const commandDir = join(projectPath, '.opencode', 'command');
|
|
352
|
+
try {
|
|
353
|
+
await fs.mkdir(commandDir, { recursive: true });
|
|
354
|
+
await fs.writeFile(join(commandDir, 'husar.md'), HUSAR_COMMAND_TEMPLATE);
|
|
355
|
+
}
|
|
356
|
+
catch {
|
|
357
|
+
}
|
|
358
|
+
}
|
|
211
359
|
async function addHusarConfig(projectPath, project, framework) {
|
|
212
|
-
const hostEnvVar = framework === 'nextjs' ? 'NEXT_PUBLIC_HUSAR_HOST' : 'VITE_HUSAR_HOST';
|
|
360
|
+
const hostEnvVar = framework === 'nextjs' ? 'NEXT_PUBLIC_HUSAR_HOST' : framework === 'vite' ? 'VITE_HUSAR_HOST' : 'HUSAR_HOST';
|
|
213
361
|
const husarConfig = {
|
|
214
362
|
host: project.host,
|
|
215
363
|
hostEnvironmentVariable: hostEnvVar,
|
|
@@ -218,7 +366,6 @@ async function addHusarConfig(projectPath, project, framework) {
|
|
|
218
366
|
overrideHost: false,
|
|
219
367
|
};
|
|
220
368
|
await fs.writeFile(join(projectPath, 'husar.json'), JSON.stringify(husarConfig, null, 2));
|
|
221
|
-
console.log(' ā Created husar.json');
|
|
222
369
|
const envContent = `# Husar CMS Configuration
|
|
223
370
|
# This file contains secrets - DO NOT commit to version control!
|
|
224
371
|
|
|
@@ -232,7 +379,6 @@ HUSAR_API_KEY=
|
|
|
232
379
|
HUSAR_ADMIN_TOKEN=${project.adminToken}
|
|
233
380
|
`;
|
|
234
381
|
await fs.writeFile(join(projectPath, '.env.local'), envContent);
|
|
235
|
-
console.log(' ā Created .env.local (contains admin credentials)');
|
|
236
382
|
const opencodeConfig = {
|
|
237
383
|
$schema: 'https://opencode.ai/schemas/opencode.json',
|
|
238
384
|
mcpServers: {
|
|
@@ -244,7 +390,7 @@ HUSAR_ADMIN_TOKEN=${project.adminToken}
|
|
|
244
390
|
},
|
|
245
391
|
};
|
|
246
392
|
await fs.writeFile(join(projectPath, 'opencode.jsonc'), JSON.stringify(opencodeConfig, null, 2));
|
|
247
|
-
|
|
393
|
+
await createOpencodeCommandFolder(projectPath);
|
|
248
394
|
const gitignorePath = join(projectPath, '.gitignore');
|
|
249
395
|
try {
|
|
250
396
|
let gitignore = await fs.readFile(gitignorePath, 'utf-8');
|
|
@@ -258,53 +404,41 @@ HUSAR_ADMIN_TOKEN=${project.adminToken}
|
|
|
258
404
|
if (additions.length > 0) {
|
|
259
405
|
gitignore += '\n# Local environment files (contain secrets)\n' + additions.join('\n') + '\n';
|
|
260
406
|
await fs.writeFile(gitignorePath, gitignore);
|
|
261
|
-
console.log(' ā Updated .gitignore');
|
|
262
407
|
}
|
|
263
408
|
}
|
|
264
409
|
catch {
|
|
265
410
|
await fs.writeFile(gitignorePath, '# Local environment files (contain secrets)\n.env.local\n.env*.local\n');
|
|
266
|
-
console.log(' ā Created .gitignore');
|
|
267
411
|
}
|
|
268
412
|
}
|
|
269
413
|
async function installHusarPackages(projectPath) {
|
|
270
|
-
return new Promise((
|
|
414
|
+
return new Promise((resolvePromise) => {
|
|
271
415
|
const packages = ['@husar.ai/ssr', '@husar.ai/render'];
|
|
272
416
|
const child = spawn('npm', ['install', ...packages], {
|
|
273
417
|
cwd: projectPath,
|
|
274
|
-
stdio: '
|
|
418
|
+
stdio: 'pipe',
|
|
275
419
|
shell: true,
|
|
276
420
|
});
|
|
277
421
|
child.on('close', () => {
|
|
278
|
-
|
|
279
|
-
resolve();
|
|
422
|
+
resolvePromise();
|
|
280
423
|
});
|
|
281
|
-
child.on('error', (
|
|
282
|
-
|
|
283
|
-
console.log(' Run manually: npm install @husar.ai/ssr @husar.ai/render');
|
|
284
|
-
resolve();
|
|
424
|
+
child.on('error', () => {
|
|
425
|
+
resolvePromise();
|
|
285
426
|
});
|
|
286
427
|
});
|
|
287
428
|
}
|
|
288
429
|
async function generateCmsClient(projectPath, framework) {
|
|
289
|
-
const srcFolder =
|
|
290
|
-
return new Promise((
|
|
430
|
+
const srcFolder = './src';
|
|
431
|
+
return new Promise((resolvePromise) => {
|
|
291
432
|
const child = spawn('npx', ['@husar.ai/cli', 'generate', srcFolder], {
|
|
292
433
|
cwd: projectPath,
|
|
293
|
-
stdio: '
|
|
434
|
+
stdio: 'pipe',
|
|
294
435
|
shell: true,
|
|
295
436
|
});
|
|
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();
|
|
437
|
+
child.on('close', () => {
|
|
438
|
+
resolvePromise();
|
|
304
439
|
});
|
|
305
440
|
child.on('error', () => {
|
|
306
|
-
|
|
307
|
-
resolve();
|
|
441
|
+
resolvePromise();
|
|
308
442
|
});
|
|
309
443
|
});
|
|
310
444
|
}
|
|
@@ -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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"}
|