@millstone/synapse-cli 0.1.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/README.md +135 -0
- package/bin/synapse.js +3 -0
- package/dist/commands/eject.d.ts +19 -0
- package/dist/commands/eject.d.ts.map +1 -0
- package/dist/commands/eject.js +146 -0
- package/dist/commands/eject.js.map +1 -0
- package/dist/commands/fetch-reference.d.ts +19 -0
- package/dist/commands/fetch-reference.d.ts.map +1 -0
- package/dist/commands/fetch-reference.js +93 -0
- package/dist/commands/fetch-reference.js.map +1 -0
- package/dist/commands/format.d.ts +26 -0
- package/dist/commands/format.d.ts.map +1 -0
- package/dist/commands/format.js +126 -0
- package/dist/commands/format.js.map +1 -0
- package/dist/commands/generate-pdf.d.ts +19 -0
- package/dist/commands/generate-pdf.d.ts.map +1 -0
- package/dist/commands/generate-pdf.js +140 -0
- package/dist/commands/generate-pdf.js.map +1 -0
- package/dist/commands/index.d.ts +17 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +26 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/init.d.ts +58 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +234 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/migrate.d.ts +29 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +297 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/scaffold.d.ts +24 -0
- package/dist/commands/scaffold.d.ts.map +1 -0
- package/dist/commands/scaffold.js +244 -0
- package/dist/commands/scaffold.js.map +1 -0
- package/dist/commands/update.d.ts +25 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +253 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/validate.d.ts +37 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +526 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +277 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/bodyRules.d.ts +70 -0
- package/dist/lib/bodyRules.d.ts.map +1 -0
- package/dist/lib/bodyRules.js +711 -0
- package/dist/lib/bodyRules.js.map +1 -0
- package/dist/lib/config.d.ts +49 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +91 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/git.d.ts +99 -0
- package/dist/lib/git.d.ts.map +1 -0
- package/dist/lib/git.js +266 -0
- package/dist/lib/git.js.map +1 -0
- package/dist/lib/graph.d.ts +6 -0
- package/dist/lib/graph.d.ts.map +1 -0
- package/dist/lib/graph.js +6 -0
- package/dist/lib/graph.js.map +1 -0
- package/dist/lib/homepage.d.ts +10 -0
- package/dist/lib/homepage.d.ts.map +1 -0
- package/dist/lib/homepage.js +172 -0
- package/dist/lib/homepage.js.map +1 -0
- package/dist/lib/markdown.d.ts +107 -0
- package/dist/lib/markdown.d.ts.map +1 -0
- package/dist/lib/markdown.js +318 -0
- package/dist/lib/markdown.js.map +1 -0
- package/dist/lib/mode-detection.d.ts +10 -0
- package/dist/lib/mode-detection.d.ts.map +1 -0
- package/dist/lib/mode-detection.js +29 -0
- package/dist/lib/mode-detection.js.map +1 -0
- package/dist/lib/naming.d.ts +47 -0
- package/dist/lib/naming.d.ts.map +1 -0
- package/dist/lib/naming.js +403 -0
- package/dist/lib/naming.js.map +1 -0
- package/dist/lib/schemas.d.ts +38 -0
- package/dist/lib/schemas.d.ts.map +1 -0
- package/dist/lib/schemas.js +248 -0
- package/dist/lib/schemas.js.map +1 -0
- package/dist/lib/templateLint.d.ts +21 -0
- package/dist/lib/templateLint.d.ts.map +1 -0
- package/dist/lib/templateLint.js +243 -0
- package/dist/lib/templateLint.js.map +1 -0
- package/dist/lib/templates.d.ts +53 -0
- package/dist/lib/templates.d.ts.map +1 -0
- package/dist/lib/templates.js +128 -0
- package/dist/lib/templates.js.map +1 -0
- package/dist/lib/tracking.d.ts +52 -0
- package/dist/lib/tracking.d.ts.map +1 -0
- package/dist/lib/tracking.js +135 -0
- package/dist/lib/tracking.js.map +1 -0
- package/dist/lib/types.generated.d.ts +54 -0
- package/dist/lib/types.generated.d.ts.map +1 -0
- package/dist/lib/types.generated.js +144 -0
- package/dist/lib/types.generated.js.map +1 -0
- package/dist/lib/validate-plugins.d.ts +22 -0
- package/dist/lib/validate-plugins.d.ts.map +1 -0
- package/dist/lib/validate-plugins.js +851 -0
- package/dist/lib/validate-plugins.js.map +1 -0
- package/package.json +85 -0
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
import fsExtra from 'fs-extra';
|
|
3
|
+
const fs = fsExtra;
|
|
4
|
+
import { trackingExists } from '../lib/tracking.js';
|
|
5
|
+
import { DOC_TYPES, TEMPLATE_REGISTRY } from '../lib/types.generated.js';
|
|
6
|
+
let chalk;
|
|
7
|
+
async function getChalk() {
|
|
8
|
+
if (!chalk) {
|
|
9
|
+
try {
|
|
10
|
+
chalk = (await import('chalk')).default;
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
chalk = {
|
|
14
|
+
green: (str) => str,
|
|
15
|
+
red: (str) => str,
|
|
16
|
+
yellow: (str) => str,
|
|
17
|
+
blue: (str) => str,
|
|
18
|
+
gray: (str) => str,
|
|
19
|
+
bold: (str) => str,
|
|
20
|
+
cyan: (str) => str,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return chalk;
|
|
25
|
+
}
|
|
26
|
+
/** Files associated with fork mode that should be archived */
|
|
27
|
+
const FORK_MODE_FILES = [
|
|
28
|
+
'.synapse-upstream',
|
|
29
|
+
];
|
|
30
|
+
/** Directories that may contain custom user schemas */
|
|
31
|
+
const CUSTOM_SCHEMA_DIRS = [
|
|
32
|
+
'schemas/frontmatter/custom',
|
|
33
|
+
'schemas/body-grammars/custom',
|
|
34
|
+
];
|
|
35
|
+
/**
|
|
36
|
+
* Detect the current state of the repository for migration planning
|
|
37
|
+
*/
|
|
38
|
+
export async function detectMigrationState(cwd) {
|
|
39
|
+
const plan = {
|
|
40
|
+
isForkMode: false,
|
|
41
|
+
hasCustomSchemas: false,
|
|
42
|
+
hasCustomPlugins: false,
|
|
43
|
+
hasSynapseConfig: false,
|
|
44
|
+
customSchemas: [],
|
|
45
|
+
customPlugins: [],
|
|
46
|
+
forkFiles: [],
|
|
47
|
+
contentDirs: [],
|
|
48
|
+
actions: [],
|
|
49
|
+
};
|
|
50
|
+
// 1. Detect fork mode via .synapse-upstream
|
|
51
|
+
if (await trackingExists(cwd)) {
|
|
52
|
+
plan.isForkMode = true;
|
|
53
|
+
plan.forkFiles.push('.synapse-upstream');
|
|
54
|
+
}
|
|
55
|
+
// 2. Detect synapse.config.json
|
|
56
|
+
if (await fs.pathExists(path.join(cwd, 'synapse.config.json'))) {
|
|
57
|
+
plan.hasSynapseConfig = true;
|
|
58
|
+
}
|
|
59
|
+
// 3. Detect custom schemas
|
|
60
|
+
for (const schemaDir of CUSTOM_SCHEMA_DIRS) {
|
|
61
|
+
const fullDir = path.join(cwd, schemaDir);
|
|
62
|
+
if (await fs.pathExists(fullDir)) {
|
|
63
|
+
const files = await fs.readdir(fullDir);
|
|
64
|
+
const schemaFiles = files.filter(f => f.endsWith('.json') || f.endsWith('.schema.json'));
|
|
65
|
+
for (const f of schemaFiles) {
|
|
66
|
+
plan.customSchemas.push(path.join(schemaDir, f));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
plan.hasCustomSchemas = plan.customSchemas.length > 0;
|
|
71
|
+
// 4. Detect custom plugins
|
|
72
|
+
const pluginsDir = path.join(cwd, 'plugins');
|
|
73
|
+
if (await fs.pathExists(pluginsDir)) {
|
|
74
|
+
const pluginFolders = await fs.readdir(pluginsDir);
|
|
75
|
+
for (const folder of pluginFolders) {
|
|
76
|
+
const customDir = path.join(pluginsDir, folder, 'custom');
|
|
77
|
+
if (await fs.pathExists(customDir)) {
|
|
78
|
+
const files = await fs.readdir(customDir);
|
|
79
|
+
const customFiles = files.filter(f => f !== '.gitkeep');
|
|
80
|
+
for (const f of customFiles) {
|
|
81
|
+
plan.customPlugins.push(path.join('plugins', folder, 'custom', f));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
plan.hasCustomPlugins = plan.customPlugins.length > 0;
|
|
87
|
+
// 5. Detect content directories
|
|
88
|
+
const contentDir = path.join(cwd, 'content');
|
|
89
|
+
if (await fs.pathExists(contentDir)) {
|
|
90
|
+
const entries = await fs.readdir(contentDir, { withFileTypes: true });
|
|
91
|
+
for (const entry of entries) {
|
|
92
|
+
if (entry.isDirectory() && /^\d+_/.test(entry.name)) {
|
|
93
|
+
plan.contentDirs.push(path.join('content', entry.name));
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// 6. Build action plan
|
|
98
|
+
if (plan.isForkMode) {
|
|
99
|
+
plan.actions.push('Archive fork-mode files to .archive-fork/');
|
|
100
|
+
}
|
|
101
|
+
if (plan.hasCustomSchemas) {
|
|
102
|
+
plan.actions.push(`Preserve ${plan.customSchemas.length} custom schema(s) in schemas/frontmatter/custom/`);
|
|
103
|
+
}
|
|
104
|
+
if (plan.hasCustomPlugins) {
|
|
105
|
+
plan.actions.push(`Preserve ${plan.customPlugins.length} custom plugin file(s)`);
|
|
106
|
+
}
|
|
107
|
+
plan.actions.push('Generate package.json with @synapse/* npm dependencies');
|
|
108
|
+
if (!plan.hasSynapseConfig) {
|
|
109
|
+
plan.actions.push('Create synapse.config.json with defaults');
|
|
110
|
+
}
|
|
111
|
+
plan.actions.push('Create .gitkeep stubs for content directories');
|
|
112
|
+
return plan;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Generate a package.json for npm mode
|
|
116
|
+
*/
|
|
117
|
+
function generatePackageJson(existingPkg) {
|
|
118
|
+
const name = existingPkg?.name || 'my-synapse-docs';
|
|
119
|
+
const version = existingPkg?.version || '1.0.0';
|
|
120
|
+
const description = existingPkg?.description || 'Documentation site powered by Synapse';
|
|
121
|
+
return {
|
|
122
|
+
name,
|
|
123
|
+
version,
|
|
124
|
+
description,
|
|
125
|
+
private: true,
|
|
126
|
+
type: 'module',
|
|
127
|
+
scripts: {
|
|
128
|
+
validate: 'synapse validate',
|
|
129
|
+
format: 'synapse format --write',
|
|
130
|
+
scaffold: 'synapse scaffold',
|
|
131
|
+
build: 'synapse index && quartz build',
|
|
132
|
+
dev: 'quartz dev',
|
|
133
|
+
},
|
|
134
|
+
dependencies: {
|
|
135
|
+
'@synapse/cli': '^0.1.0',
|
|
136
|
+
},
|
|
137
|
+
devDependencies: existingPkg?.devDependencies || {},
|
|
138
|
+
engines: {
|
|
139
|
+
node: '>=20.0.0',
|
|
140
|
+
},
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Generate a default synapse.config.json
|
|
145
|
+
*/
|
|
146
|
+
function generateSynapseConfig() {
|
|
147
|
+
return {
|
|
148
|
+
branding: {
|
|
149
|
+
siteName: 'My Documentation',
|
|
150
|
+
displayName: 'My Documentation',
|
|
151
|
+
baseUrl: 'https://docs.example.com',
|
|
152
|
+
},
|
|
153
|
+
schemas: {
|
|
154
|
+
customDir: 'schemas/custom',
|
|
155
|
+
loadBase: true,
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Execute the migration from fork mode to npm mode
|
|
161
|
+
*/
|
|
162
|
+
export async function migrate(options = {}) {
|
|
163
|
+
const c = await getChalk();
|
|
164
|
+
const cwd = options.cwd || process.cwd();
|
|
165
|
+
console.log(c.bold('\nSynapse Fork-to-NPM Migration\n'));
|
|
166
|
+
// 1. Detect current state
|
|
167
|
+
const plan = await detectMigrationState(cwd);
|
|
168
|
+
if (!plan.isForkMode && !options.yes) {
|
|
169
|
+
console.log(c.yellow('No fork-mode markers detected (.synapse-upstream not found).'));
|
|
170
|
+
console.log(c.gray('This command migrates a fork-based repo to npm-based dependency mode.'));
|
|
171
|
+
console.log(c.gray('If this is already an npm-based repo, no migration is needed.\n'));
|
|
172
|
+
}
|
|
173
|
+
// 2. Show migration plan
|
|
174
|
+
console.log(c.blue('Migration Plan:'));
|
|
175
|
+
for (const action of plan.actions) {
|
|
176
|
+
console.log(c.gray(` - ${action}`));
|
|
177
|
+
}
|
|
178
|
+
console.log('');
|
|
179
|
+
if (plan.hasCustomSchemas) {
|
|
180
|
+
console.log(c.cyan('Custom schemas detected:'));
|
|
181
|
+
for (const schema of plan.customSchemas) {
|
|
182
|
+
console.log(c.gray(` - ${schema}`));
|
|
183
|
+
}
|
|
184
|
+
console.log('');
|
|
185
|
+
}
|
|
186
|
+
if (plan.hasCustomPlugins) {
|
|
187
|
+
console.log(c.cyan('Custom plugins detected:'));
|
|
188
|
+
for (const plugin of plan.customPlugins) {
|
|
189
|
+
console.log(c.gray(` - ${plugin}`));
|
|
190
|
+
}
|
|
191
|
+
console.log('');
|
|
192
|
+
}
|
|
193
|
+
// 3. Dry-run mode stops here
|
|
194
|
+
if (options.dryRun) {
|
|
195
|
+
console.log(c.yellow('Dry run complete. No changes were made.\n'));
|
|
196
|
+
return plan;
|
|
197
|
+
}
|
|
198
|
+
// 4. Archive fork files
|
|
199
|
+
if (plan.isForkMode) {
|
|
200
|
+
console.log(c.blue('Archiving fork-mode files...'));
|
|
201
|
+
const archiveDir = path.join(cwd, '.archive-fork');
|
|
202
|
+
await fs.ensureDir(archiveDir);
|
|
203
|
+
for (const file of plan.forkFiles) {
|
|
204
|
+
const src = path.join(cwd, file);
|
|
205
|
+
const dest = path.join(archiveDir, file);
|
|
206
|
+
if (await fs.pathExists(src)) {
|
|
207
|
+
await fs.ensureDir(path.dirname(dest));
|
|
208
|
+
await fs.copy(src, dest);
|
|
209
|
+
await fs.remove(src);
|
|
210
|
+
console.log(c.gray(` Archived: ${file}`));
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
console.log(c.green(' Done.\n'));
|
|
214
|
+
}
|
|
215
|
+
// 5. Ensure custom schema directories exist
|
|
216
|
+
if (plan.hasCustomSchemas) {
|
|
217
|
+
console.log(c.blue('Preserving custom schemas...'));
|
|
218
|
+
const customSchemaDir = path.join(cwd, 'schemas', 'frontmatter', 'custom');
|
|
219
|
+
await fs.ensureDir(customSchemaDir);
|
|
220
|
+
console.log(c.green(` Custom schemas preserved in schemas/frontmatter/custom/\n`));
|
|
221
|
+
}
|
|
222
|
+
// 6. Generate package.json
|
|
223
|
+
console.log(c.blue('Generating package.json for npm mode...'));
|
|
224
|
+
const pkgPath = path.join(cwd, 'package.json');
|
|
225
|
+
let existingPkg = null;
|
|
226
|
+
if (await fs.pathExists(pkgPath)) {
|
|
227
|
+
try {
|
|
228
|
+
existingPkg = JSON.parse(await fs.readFile(pkgPath, 'utf-8'));
|
|
229
|
+
}
|
|
230
|
+
catch {
|
|
231
|
+
// ignore parse errors
|
|
232
|
+
}
|
|
233
|
+
// Back up existing package.json
|
|
234
|
+
const archiveDir = path.join(cwd, '.archive-fork');
|
|
235
|
+
await fs.ensureDir(archiveDir);
|
|
236
|
+
await fs.copy(pkgPath, path.join(archiveDir, 'package.json'));
|
|
237
|
+
console.log(c.gray(' Backed up existing package.json to .archive-fork/'));
|
|
238
|
+
}
|
|
239
|
+
const newPkg = generatePackageJson(existingPkg);
|
|
240
|
+
await fs.writeFile(pkgPath, JSON.stringify(newPkg, null, 2) + '\n', 'utf-8');
|
|
241
|
+
console.log(c.green(' Generated package.json with @synapse/* dependencies.\n'));
|
|
242
|
+
// 7. Create synapse.config.json if missing
|
|
243
|
+
if (!plan.hasSynapseConfig) {
|
|
244
|
+
console.log(c.blue('Creating synapse.config.json...'));
|
|
245
|
+
const configPath = path.join(cwd, 'synapse.config.json');
|
|
246
|
+
const config = generateSynapseConfig();
|
|
247
|
+
await fs.writeFile(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
|
|
248
|
+
console.log(c.green(' Created synapse.config.json.\n'));
|
|
249
|
+
}
|
|
250
|
+
// 8. Create .gitkeep stubs for content directories
|
|
251
|
+
console.log(c.blue('Ensuring content directory structure...'));
|
|
252
|
+
for (const type of DOC_TYPES) {
|
|
253
|
+
const folder = TEMPLATE_REGISTRY[type].folder;
|
|
254
|
+
const dirPath = path.join(cwd, 'content', folder);
|
|
255
|
+
await fs.ensureDir(dirPath);
|
|
256
|
+
const gitkeepPath = path.join(dirPath, '.gitkeep');
|
|
257
|
+
if (!(await fs.pathExists(gitkeepPath))) {
|
|
258
|
+
// Only create .gitkeep if directory is empty
|
|
259
|
+
const files = await fs.readdir(dirPath);
|
|
260
|
+
if (files.length === 0) {
|
|
261
|
+
await fs.writeFile(gitkeepPath, '', 'utf-8');
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
console.log(c.green(' Content directories ready.\n'));
|
|
266
|
+
// 9. Print success and next steps
|
|
267
|
+
console.log(c.bold(c.green('Migration complete!\n')));
|
|
268
|
+
console.log(c.gray('Next steps:'));
|
|
269
|
+
console.log(c.gray(' 1. Run "npm install" to install @synapse/cli from npm'));
|
|
270
|
+
console.log(c.gray(' 2. Edit synapse.config.json to customize your site'));
|
|
271
|
+
console.log(c.gray(' 3. Run "synapse validate" to verify your documents'));
|
|
272
|
+
console.log(c.gray(' 4. Remove the fork-specific git remote if desired:'));
|
|
273
|
+
console.log(c.gray(' git remote remove upstream'));
|
|
274
|
+
console.log(c.gray(' 5. Commit the migration changes'));
|
|
275
|
+
if (plan.isForkMode) {
|
|
276
|
+
console.log(c.gray(' 6. Review .archive-fork/ for any files you want to keep'));
|
|
277
|
+
}
|
|
278
|
+
console.log('');
|
|
279
|
+
return plan;
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* CLI command handler for migrate
|
|
283
|
+
*/
|
|
284
|
+
export async function migrateCommand(args) {
|
|
285
|
+
const c = await getChalk();
|
|
286
|
+
try {
|
|
287
|
+
await migrate({
|
|
288
|
+
dryRun: args.dryRun,
|
|
289
|
+
yes: args.yes,
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
catch (error) {
|
|
293
|
+
console.error(c.red('\nError:'), error instanceof Error ? error.message : error);
|
|
294
|
+
process.exit(1);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
//# sourceMappingURL=migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { DocType } from '../lib/types.generated.js';
|
|
2
|
+
export interface ScaffoldOptions {
|
|
3
|
+
type: string;
|
|
4
|
+
title: string;
|
|
5
|
+
owner?: string;
|
|
6
|
+
id?: string;
|
|
7
|
+
targetDir?: string;
|
|
8
|
+
force?: boolean;
|
|
9
|
+
cwd?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Scaffold a new document from an example file
|
|
13
|
+
*/
|
|
14
|
+
export declare function scaffold(options: ScaffoldOptions): Promise<string>;
|
|
15
|
+
export declare function scaffoldCommand(args: Record<string, any>): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Generate a filename from type, id, and title
|
|
18
|
+
*/
|
|
19
|
+
export declare function generateFilename(type: DocType, id: string, title: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* Parse template variables from a "key=val,key2=val2" string
|
|
22
|
+
*/
|
|
23
|
+
export declare function parseTemplateVars(varsString?: string): Record<string, string>;
|
|
24
|
+
//# sourceMappingURL=scaffold.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../src/commands/scaffold.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAA8D,MAAM,2BAA2B,CAAC;AAuBhH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAqHD;;GAEG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAmGxE;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAa9E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAGjF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAU7E"}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
import fsExtra from 'fs-extra';
|
|
3
|
+
const fs = fsExtra;
|
|
4
|
+
import * as yaml from 'js-yaml';
|
|
5
|
+
import { DOC_TYPES, isDocType, TEMPLATE_REGISTRY, getExpectedFolder } from '../lib/types.generated.js';
|
|
6
|
+
let chalk;
|
|
7
|
+
async function getChalk() {
|
|
8
|
+
if (!chalk) {
|
|
9
|
+
try {
|
|
10
|
+
chalk = (await import('chalk')).default;
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
chalk = {
|
|
14
|
+
green: (str) => str,
|
|
15
|
+
red: (str) => str,
|
|
16
|
+
yellow: (str) => str,
|
|
17
|
+
blue: (str) => str,
|
|
18
|
+
gray: (str) => str,
|
|
19
|
+
bold: (str) => str,
|
|
20
|
+
cyan: (str) => str
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return chalk;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Convert a title to kebab-case for use in filenames
|
|
28
|
+
*/
|
|
29
|
+
function toKebabCase(str) {
|
|
30
|
+
return str
|
|
31
|
+
.toLowerCase()
|
|
32
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
33
|
+
.replace(/^-+|-+$/g, '');
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Find the example file for a given document type
|
|
37
|
+
*/
|
|
38
|
+
async function findExampleFile(type, cwd) {
|
|
39
|
+
const folder = TEMPLATE_REGISTRY[type].folder;
|
|
40
|
+
const examplesDir = path.join(cwd, 'content', folder, 'examples');
|
|
41
|
+
if (!await fs.pathExists(examplesDir)) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
const files = await fs.readdir(examplesDir);
|
|
45
|
+
const mdFiles = files.filter(f => f.endsWith('.md'));
|
|
46
|
+
if (mdFiles.length === 0) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
return path.join(examplesDir, mdFiles[0]);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Parse frontmatter and body from markdown content
|
|
53
|
+
*/
|
|
54
|
+
function parseFrontmatterAndBody(content) {
|
|
55
|
+
const lines = content.split('\n');
|
|
56
|
+
let startLine = -1;
|
|
57
|
+
let endLine = -1;
|
|
58
|
+
for (let i = 0; i < lines.length; i++) {
|
|
59
|
+
if (lines[i].trim() === '---') {
|
|
60
|
+
if (startLine === -1) {
|
|
61
|
+
startLine = i;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
endLine = i;
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (startLine === -1 || endLine === -1) {
|
|
70
|
+
return { frontmatter: {}, body: content };
|
|
71
|
+
}
|
|
72
|
+
const fmString = lines.slice(startLine + 1, endLine).join('\n');
|
|
73
|
+
const body = lines.slice(endLine + 1).join('\n');
|
|
74
|
+
const frontmatter = yaml.load(fmString) || {};
|
|
75
|
+
return { frontmatter, body };
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Generate the next sequential ID for a document type by scanning existing files
|
|
79
|
+
*/
|
|
80
|
+
async function generateNextId(type, cwd) {
|
|
81
|
+
const label = TEMPLATE_REGISTRY[type].displayLabel;
|
|
82
|
+
const prefix = label.toUpperCase().replace(/\s+/g, '-');
|
|
83
|
+
const folder = getExpectedFolder(type);
|
|
84
|
+
const typeDir = path.join(cwd, folder);
|
|
85
|
+
let maxNum = 0;
|
|
86
|
+
if (await fs.pathExists(typeDir)) {
|
|
87
|
+
const files = await fs.readdir(typeDir);
|
|
88
|
+
const pattern = new RegExp(`^${prefix}-(\\d+)`, 'i');
|
|
89
|
+
for (const file of files) {
|
|
90
|
+
const match = file.match(pattern);
|
|
91
|
+
if (match) {
|
|
92
|
+
const num = parseInt(match[1], 10);
|
|
93
|
+
if (num > maxNum) {
|
|
94
|
+
maxNum = num;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// Also check frontmatter id fields for the pattern
|
|
99
|
+
for (const file of files) {
|
|
100
|
+
if (!file.endsWith('.md'))
|
|
101
|
+
continue;
|
|
102
|
+
const filePath = path.join(typeDir, file);
|
|
103
|
+
const stat = await fs.stat(filePath);
|
|
104
|
+
if (!stat.isFile())
|
|
105
|
+
continue;
|
|
106
|
+
try {
|
|
107
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
108
|
+
const { frontmatter } = parseFrontmatterAndBody(content);
|
|
109
|
+
if (frontmatter.id && typeof frontmatter.id === 'string') {
|
|
110
|
+
const match = frontmatter.id.match(new RegExp(`^${prefix}-(\\d+)$`, 'i'));
|
|
111
|
+
if (match) {
|
|
112
|
+
const num = parseInt(match[1], 10);
|
|
113
|
+
if (num > maxNum) {
|
|
114
|
+
maxNum = num;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
// skip files that can't be read
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
const nextNum = String(maxNum + 1).padStart(3, '0');
|
|
125
|
+
return `${prefix}-${nextNum}`;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Scaffold a new document from an example file
|
|
129
|
+
*/
|
|
130
|
+
export async function scaffold(options) {
|
|
131
|
+
const c = await getChalk();
|
|
132
|
+
const cwd = options.cwd || process.cwd();
|
|
133
|
+
// 1. Validate document type
|
|
134
|
+
const type = options.type?.toLowerCase();
|
|
135
|
+
if (!type) {
|
|
136
|
+
throw new Error('Missing required option: --type. Available types: ' + DOC_TYPES.join(', '));
|
|
137
|
+
}
|
|
138
|
+
if (!isDocType(type)) {
|
|
139
|
+
throw new Error(`Invalid document type: "${type}". Available types: ${DOC_TYPES.join(', ')}`);
|
|
140
|
+
}
|
|
141
|
+
// 2. Validate title
|
|
142
|
+
if (!options.title) {
|
|
143
|
+
throw new Error('Missing required option: --title');
|
|
144
|
+
}
|
|
145
|
+
// 3. Find the example file
|
|
146
|
+
const examplePath = await findExampleFile(type, cwd);
|
|
147
|
+
if (!examplePath) {
|
|
148
|
+
throw new Error(`No example file found for type "${type}". Expected examples in: content/${TEMPLATE_REGISTRY[type].folder}/examples/`);
|
|
149
|
+
}
|
|
150
|
+
// 4. Read and parse example
|
|
151
|
+
const exampleContent = await fs.readFile(examplePath, 'utf-8');
|
|
152
|
+
const { frontmatter, body } = parseFrontmatterAndBody(exampleContent);
|
|
153
|
+
// 5. Generate or use provided ID
|
|
154
|
+
const id = options.id || await generateNextId(type, cwd);
|
|
155
|
+
// 6. Update frontmatter fields
|
|
156
|
+
const now = new Date().toISOString();
|
|
157
|
+
frontmatter.id = id;
|
|
158
|
+
frontmatter.title = options.title;
|
|
159
|
+
frontmatter.status = 'draft';
|
|
160
|
+
frontmatter.created = now;
|
|
161
|
+
frontmatter.updated = now;
|
|
162
|
+
if (options.owner) {
|
|
163
|
+
frontmatter.owner = options.owner;
|
|
164
|
+
}
|
|
165
|
+
// Remove example flag
|
|
166
|
+
delete frontmatter.example;
|
|
167
|
+
// Remove tags that are just the type name (auto-populated from example)
|
|
168
|
+
if (Array.isArray(frontmatter.tags)) {
|
|
169
|
+
frontmatter.tags = frontmatter.tags.filter((t) => t !== type);
|
|
170
|
+
if (frontmatter.tags.length === 0) {
|
|
171
|
+
delete frontmatter.tags;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// 7. Generate output filename
|
|
175
|
+
const kebabTitle = toKebabCase(options.title);
|
|
176
|
+
const filename = `${id}-${kebabTitle}.md`;
|
|
177
|
+
// 8. Determine output directory
|
|
178
|
+
const outputDir = options.targetDir || path.join(cwd, getExpectedFolder(type));
|
|
179
|
+
// 9. Build output path and check existence
|
|
180
|
+
const outputPath = path.join(outputDir, filename);
|
|
181
|
+
if (await fs.pathExists(outputPath)) {
|
|
182
|
+
if (!options.force) {
|
|
183
|
+
throw new Error(`File already exists: ${outputPath}\nUse --force to overwrite.`);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
// 10. Build output content
|
|
187
|
+
const fmYaml = yaml.dump(frontmatter, {
|
|
188
|
+
lineWidth: -1,
|
|
189
|
+
quotingType: '"',
|
|
190
|
+
forceQuotes: false
|
|
191
|
+
}).trim();
|
|
192
|
+
const outputContent = `---\n${fmYaml}\n---\n${body}`;
|
|
193
|
+
// 11. Write file
|
|
194
|
+
await fs.ensureDir(outputDir);
|
|
195
|
+
await fs.writeFile(outputPath, outputContent, 'utf-8');
|
|
196
|
+
// 12. Print success
|
|
197
|
+
const relPath = path.relative(cwd, outputPath);
|
|
198
|
+
console.log(c.green(`\nCreated ${TEMPLATE_REGISTRY[type].displayLabel} document:`));
|
|
199
|
+
console.log(c.cyan(` ${relPath}`));
|
|
200
|
+
console.log(c.gray(` Type: ${type}`));
|
|
201
|
+
console.log(c.gray(` ID: ${id}`));
|
|
202
|
+
console.log(c.gray(` Title: ${options.title}`));
|
|
203
|
+
if (options.owner) {
|
|
204
|
+
console.log(c.gray(` Owner: ${options.owner}`));
|
|
205
|
+
}
|
|
206
|
+
console.log('');
|
|
207
|
+
return outputPath;
|
|
208
|
+
}
|
|
209
|
+
export async function scaffoldCommand(args) {
|
|
210
|
+
// Support both --type and --template for backward compatibility
|
|
211
|
+
const type = args.type || args.template;
|
|
212
|
+
const title = args.title;
|
|
213
|
+
await scaffold({
|
|
214
|
+
type,
|
|
215
|
+
title,
|
|
216
|
+
owner: args.owner,
|
|
217
|
+
id: args.id,
|
|
218
|
+
targetDir: args.targetDir || args.outdir,
|
|
219
|
+
force: args.force,
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Generate a filename from type, id, and title
|
|
224
|
+
*/
|
|
225
|
+
export function generateFilename(type, id, title) {
|
|
226
|
+
const kebabTitle = toKebabCase(title);
|
|
227
|
+
return `${id}-${kebabTitle}.md`;
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Parse template variables from a "key=val,key2=val2" string
|
|
231
|
+
*/
|
|
232
|
+
export function parseTemplateVars(varsString) {
|
|
233
|
+
if (!varsString)
|
|
234
|
+
return {};
|
|
235
|
+
const vars = {};
|
|
236
|
+
for (const pair of varsString.split(',')) {
|
|
237
|
+
const [key, ...rest] = pair.split('=');
|
|
238
|
+
if (key && rest.length > 0) {
|
|
239
|
+
vars[key.trim()] = rest.join('=').trim();
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
return vars;
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=scaffold.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../../src/commands/scaffold.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface UpdateOptions {
|
|
2
|
+
continue?: boolean;
|
|
3
|
+
acceptUpstream?: boolean;
|
|
4
|
+
acceptOurs?: boolean;
|
|
5
|
+
abort?: boolean;
|
|
6
|
+
remoteName?: string;
|
|
7
|
+
remoteBranch?: string;
|
|
8
|
+
cwd?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Fetch and merge upstream changes
|
|
12
|
+
*/
|
|
13
|
+
export declare function update(options?: UpdateOptions): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* CLI command handler for update
|
|
16
|
+
*/
|
|
17
|
+
export declare function updateCommand(args: {
|
|
18
|
+
continue?: boolean;
|
|
19
|
+
acceptUpstream?: boolean;
|
|
20
|
+
acceptOurs?: boolean;
|
|
21
|
+
abort?: boolean;
|
|
22
|
+
remote?: string;
|
|
23
|
+
branch?: string;
|
|
24
|
+
}): Promise<void>;
|
|
25
|
+
//# sourceMappingURL=update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AA6CA,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AA6FD;;GAEG;AACH,wBAAsB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkKvE;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBhB"}
|