create-gitcms 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 +49 -0
- package/dist/args.d.ts +14 -0
- package/dist/args.d.ts.map +1 -0
- package/dist/args.js +119 -0
- package/dist/args.js.map +1 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +529 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/content-detection.d.ts +2 -0
- package/dist/core/content-detection.d.ts.map +1 -0
- package/dist/core/content-detection.js +2 -0
- package/dist/core/content-detection.js.map +1 -0
- package/dist/core/filesystem.d.ts +11 -0
- package/dist/core/filesystem.d.ts.map +1 -0
- package/dist/core/filesystem.js +93 -0
- package/dist/core/filesystem.js.map +1 -0
- package/dist/core/framework-detection.d.ts +17 -0
- package/dist/core/framework-detection.d.ts.map +1 -0
- package/dist/core/framework-detection.js +60 -0
- package/dist/core/framework-detection.js.map +1 -0
- package/dist/core/frontmatter-inference.d.ts +2 -0
- package/dist/core/frontmatter-inference.d.ts.map +1 -0
- package/dist/core/frontmatter-inference.js +2 -0
- package/dist/core/frontmatter-inference.js.map +1 -0
- package/dist/core/git.d.ts +4 -0
- package/dist/core/git.d.ts.map +1 -0
- package/dist/core/git.js +45 -0
- package/dist/core/git.js.map +1 -0
- package/dist/core/gitcms-config.d.ts +153 -0
- package/dist/core/gitcms-config.d.ts.map +1 -0
- package/dist/core/gitcms-config.js +436 -0
- package/dist/core/gitcms-config.js.map +1 -0
- package/dist/core/mode-resolution.d.ts +22 -0
- package/dist/core/mode-resolution.d.ts.map +1 -0
- package/dist/core/mode-resolution.js +136 -0
- package/dist/core/mode-resolution.js.map +1 -0
- package/dist/core/paths.d.ts +6 -0
- package/dist/core/paths.d.ts.map +1 -0
- package/dist/core/paths.js +19 -0
- package/dist/core/paths.js.map +1 -0
- package/dist/core/planner.d.ts +8 -0
- package/dist/core/planner.d.ts.map +1 -0
- package/dist/core/planner.js +295 -0
- package/dist/core/planner.js.map +1 -0
- package/dist/core/site-roots.d.ts +5 -0
- package/dist/core/site-roots.d.ts.map +1 -0
- package/dist/core/site-roots.js +32 -0
- package/dist/core/site-roots.js.map +1 -0
- package/dist/core/sitemap-discovery.d.ts +2 -0
- package/dist/core/sitemap-discovery.d.ts.map +1 -0
- package/dist/core/sitemap-discovery.js +2 -0
- package/dist/core/sitemap-discovery.js.map +1 -0
- package/dist/core/vendor/content-detection.d.ts +51 -0
- package/dist/core/vendor/content-detection.d.ts.map +1 -0
- package/dist/core/vendor/content-detection.js +462 -0
- package/dist/core/vendor/content-detection.js.map +1 -0
- package/dist/core/vendor/frontmatter-inference.d.ts +5 -0
- package/dist/core/vendor/frontmatter-inference.d.ts.map +1 -0
- package/dist/core/vendor/frontmatter-inference.js +234 -0
- package/dist/core/vendor/frontmatter-inference.js.map +1 -0
- package/dist/core/vendor/paths.d.ts +3 -0
- package/dist/core/vendor/paths.d.ts.map +1 -0
- package/dist/core/vendor/paths.js +23 -0
- package/dist/core/vendor/paths.js.map +1 -0
- package/dist/core/vendor/sitemap.d.ts +10 -0
- package/dist/core/vendor/sitemap.d.ts.map +1 -0
- package/dist/core/vendor/sitemap.js +162 -0
- package/dist/core/vendor/sitemap.js.map +1 -0
- package/dist/core/writer.d.ts +4 -0
- package/dist/core/writer.d.ts.map +1 -0
- package/dist/core/writer.js +45 -0
- package/dist/core/writer.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts.d.ts +12 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +41 -0
- package/dist/prompts.js.map +1 -0
- package/dist/types.d.ts +74 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +54 -0
package/dist/cli.js
ADDED
|
@@ -0,0 +1,529 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { parseCliFlags, usageText } from './args.js';
|
|
5
|
+
import { buildInitPlan } from './core/planner.js';
|
|
6
|
+
import { ensureDirectoryExists, isGitRepository } from './core/filesystem.js';
|
|
7
|
+
import { resolveModeAndSiteRoots, siteRootExists } from './core/mode-resolution.js';
|
|
8
|
+
import { normalizeSiteRoot } from './core/paths.js';
|
|
9
|
+
import { discoverSitemapUrl, normalizeWebsiteUrlForDiscovery, } from './core/sitemap-discovery.js';
|
|
10
|
+
import { findExistingConfigPaths, writePlanToDisk } from './core/writer.js';
|
|
11
|
+
import { createPrompter, isInteractiveTerminal } from './prompts.js';
|
|
12
|
+
function supportsColorOutput() {
|
|
13
|
+
return Boolean(process.stdout.isTTY
|
|
14
|
+
&& process.env.NO_COLOR === undefined
|
|
15
|
+
&& process.env.TERM !== 'dumb');
|
|
16
|
+
}
|
|
17
|
+
function colorize(text, ansiCode, enabled) {
|
|
18
|
+
if (!enabled)
|
|
19
|
+
return text;
|
|
20
|
+
return `\u001B[${ansiCode}m${text}\u001B[0m`;
|
|
21
|
+
}
|
|
22
|
+
function displayBanner() {
|
|
23
|
+
const colorsEnabled = supportsColorOutput();
|
|
24
|
+
const title = 'gitcms - onboarding';
|
|
25
|
+
const rawChrome = `o o o ${title}`;
|
|
26
|
+
const width = Math.max(56, rawChrome.length + 6);
|
|
27
|
+
const border = `+${'-'.repeat(width - 2)}+`;
|
|
28
|
+
const redDot = colorize('o', '31', colorsEnabled);
|
|
29
|
+
const yellowDot = colorize('o', '33', colorsEnabled);
|
|
30
|
+
const greenDot = colorize('o', '32', colorsEnabled);
|
|
31
|
+
const titleText = colorize(title, '2', colorsEnabled);
|
|
32
|
+
const chrome = `${redDot} ${yellowDot} ${greenDot} ${titleText}`;
|
|
33
|
+
const rightPadding = ' '.repeat(Math.max(0, width - 4 - rawChrome.length));
|
|
34
|
+
const cardLine = `| ${chrome}${rightPadding} |`;
|
|
35
|
+
console.log(border);
|
|
36
|
+
console.log(cardLine);
|
|
37
|
+
console.log(border);
|
|
38
|
+
console.log('');
|
|
39
|
+
console.log(colorize('// GitCMS', '38;5;111', colorsEnabled));
|
|
40
|
+
console.log(colorize('------------------------------', '38;5;111', colorsEnabled));
|
|
41
|
+
console.log(colorize('Content management, version controlled.', '2', colorsEnabled));
|
|
42
|
+
console.log('');
|
|
43
|
+
console.log(colorize('v Welcome! Let\'s set up your GitCMS project.', '38;5;120', colorsEnabled));
|
|
44
|
+
console.log('');
|
|
45
|
+
}
|
|
46
|
+
function displayPlanSummary(mode, siteCount) {
|
|
47
|
+
console.log(`Mode: ${mode}`);
|
|
48
|
+
console.log(`Sites: ${siteCount}`);
|
|
49
|
+
}
|
|
50
|
+
function displaySiteSummary() {
|
|
51
|
+
console.log('');
|
|
52
|
+
console.log('Inferred Configuration');
|
|
53
|
+
console.log('----------------------');
|
|
54
|
+
}
|
|
55
|
+
function printWarnings(warnings) {
|
|
56
|
+
if (warnings.length === 0) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
console.log('');
|
|
60
|
+
console.log('Warnings');
|
|
61
|
+
console.log('--------');
|
|
62
|
+
for (const warning of warnings) {
|
|
63
|
+
console.log(`- ${warning}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
function autoFilterEmptyCollectionSites(sites) {
|
|
67
|
+
const sitesWithCollections = sites.filter((site) => site.config.collections.length > 0);
|
|
68
|
+
if (sitesWithCollections.length === 0) {
|
|
69
|
+
return {
|
|
70
|
+
filteredSites: sites,
|
|
71
|
+
removedConfigPaths: [],
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
if (sitesWithCollections.length === sites.length) {
|
|
75
|
+
return {
|
|
76
|
+
filteredSites: sites,
|
|
77
|
+
removedConfigPaths: [],
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
const keptSet = new Set(sitesWithCollections.map((site) => site.configPath));
|
|
81
|
+
const removedConfigPaths = [];
|
|
82
|
+
for (const site of sites) {
|
|
83
|
+
if (!keptSet.has(site.configPath)) {
|
|
84
|
+
removedConfigPaths.push(site.configPath);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
filteredSites: sitesWithCollections,
|
|
89
|
+
removedConfigPaths,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
function summarizeSite(site) {
|
|
93
|
+
const rootLabel = site.siteRoot || '.';
|
|
94
|
+
const frameworkLabel = site.config.ssg_framework || 'undetected';
|
|
95
|
+
const mediaPathLabel = site.config.media_path || '(empty)';
|
|
96
|
+
const frontmatterLabel = site.config.frontmatter_format || 'yaml';
|
|
97
|
+
const websiteLabel = site.config.website_url || '(empty)';
|
|
98
|
+
const sitemapLabel = site.config.sitemap_url || '(empty)';
|
|
99
|
+
const i18nLabel = (() => {
|
|
100
|
+
if (!site.config.i18n
|
|
101
|
+
|| site.config.i18n.enabled === false
|
|
102
|
+
|| site.config.i18n.locales.length === 0) {
|
|
103
|
+
return 'disabled';
|
|
104
|
+
}
|
|
105
|
+
const defaultLocale = site.config.i18n.default_locale || site.config.i18n.locales[0];
|
|
106
|
+
const mode = site.config.i18n.prefix_default_locale ? 'prefixed' : 'unprefixed';
|
|
107
|
+
return `${site.config.i18n.locales.length} locale(s), default ${defaultLocale} (${mode})`;
|
|
108
|
+
})();
|
|
109
|
+
console.log(`- ${site.configPath}`);
|
|
110
|
+
console.log(` root: ${rootLabel}`);
|
|
111
|
+
console.log(` framework: ${frameworkLabel}`);
|
|
112
|
+
console.log(` media_path: ${mediaPathLabel}`);
|
|
113
|
+
console.log(` frontmatter_format: ${frontmatterLabel}`);
|
|
114
|
+
console.log(` i18n: ${i18nLabel}`);
|
|
115
|
+
console.log(` website_url: ${websiteLabel}`);
|
|
116
|
+
console.log(` sitemap_url: ${sitemapLabel}`);
|
|
117
|
+
console.log(` collections: ${site.config.collections.length} (${site.collectionDetection.confidence})`);
|
|
118
|
+
}
|
|
119
|
+
function clearCurrentLine() {
|
|
120
|
+
if (!process.stdout.isTTY)
|
|
121
|
+
return;
|
|
122
|
+
process.stdout.write('\r\u001B[2K');
|
|
123
|
+
}
|
|
124
|
+
async function runWithSpinner(message, action, enabled) {
|
|
125
|
+
if (!enabled || !process.stdout.isTTY) {
|
|
126
|
+
return action();
|
|
127
|
+
}
|
|
128
|
+
const frames = ['-', '\\', '|', '/'];
|
|
129
|
+
let frameIndex = 0;
|
|
130
|
+
process.stdout.write(`${message} ${frames[frameIndex]}`);
|
|
131
|
+
const timer = setInterval(() => {
|
|
132
|
+
frameIndex = (frameIndex + 1) % frames.length;
|
|
133
|
+
const frame = frames[frameIndex] ?? '-';
|
|
134
|
+
clearCurrentLine();
|
|
135
|
+
process.stdout.write(`${message} ${frame}`);
|
|
136
|
+
}, 90);
|
|
137
|
+
try {
|
|
138
|
+
const result = await action();
|
|
139
|
+
clearInterval(timer);
|
|
140
|
+
clearCurrentLine();
|
|
141
|
+
console.log(`${message} done`);
|
|
142
|
+
return result;
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
clearInterval(timer);
|
|
146
|
+
clearCurrentLine();
|
|
147
|
+
console.log(`${message} failed`);
|
|
148
|
+
throw error;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
function isLikelyValidHost(hostname) {
|
|
152
|
+
if (!hostname)
|
|
153
|
+
return false;
|
|
154
|
+
if (hostname === 'localhost')
|
|
155
|
+
return true;
|
|
156
|
+
if (hostname.includes('.'))
|
|
157
|
+
return true;
|
|
158
|
+
if (/^\d{1,3}(\.\d{1,3}){3}$/.test(hostname))
|
|
159
|
+
return true;
|
|
160
|
+
if (hostname.includes(':'))
|
|
161
|
+
return true;
|
|
162
|
+
return false;
|
|
163
|
+
}
|
|
164
|
+
function normalizeAndValidateUrlInput(value) {
|
|
165
|
+
const normalized = normalizeWebsiteUrlForDiscovery(value);
|
|
166
|
+
if (!normalized) {
|
|
167
|
+
return null;
|
|
168
|
+
}
|
|
169
|
+
try {
|
|
170
|
+
const parsed = new URL(normalized);
|
|
171
|
+
if (!isLikelyValidHost(parsed.hostname)) {
|
|
172
|
+
return null;
|
|
173
|
+
}
|
|
174
|
+
return normalized;
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
return null;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
async function promptValidatedOptionalUrl(askText, question, defaultValue) {
|
|
181
|
+
while (true) {
|
|
182
|
+
const value = await askText(question, defaultValue);
|
|
183
|
+
const normalizedValue = normalizeWebsiteInput(value);
|
|
184
|
+
if (!normalizedValue) {
|
|
185
|
+
return '';
|
|
186
|
+
}
|
|
187
|
+
const validated = normalizeAndValidateUrlInput(normalizedValue);
|
|
188
|
+
if (validated) {
|
|
189
|
+
return validated;
|
|
190
|
+
}
|
|
191
|
+
console.log('Invalid URL. Use a full URL or domain like example.com');
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
async function discoverAndApplySitemap(site, options) {
|
|
195
|
+
const website = normalizeWebsiteInput(site.config.website_url);
|
|
196
|
+
site.config.website_url = website;
|
|
197
|
+
delete site.config.sitemap_url;
|
|
198
|
+
if (!website) {
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
const siteLabel = site.siteRoot || '.';
|
|
202
|
+
const detectedSitemap = await runWithSpinner(`Discovering sitemap for ${siteLabel}`, () => discoverSitemapUrl(website), options.showLoader);
|
|
203
|
+
if (options.interactiveSitemapInputPrompt && options.askText) {
|
|
204
|
+
while (true) {
|
|
205
|
+
const promptLabel = detectedSitemap
|
|
206
|
+
? `Sitemap URL for ${siteLabel} (enter to use detected: ${detectedSitemap}, "-" to skip)`
|
|
207
|
+
: `Sitemap URL for ${siteLabel} (leave empty to skip)`;
|
|
208
|
+
const entered = await options.askText(promptLabel);
|
|
209
|
+
const normalizedEntered = normalizeWebsiteInput(entered);
|
|
210
|
+
if (!normalizedEntered && detectedSitemap) {
|
|
211
|
+
site.config.sitemap_url = detectedSitemap;
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
if (!normalizedEntered || normalizedEntered === '-') {
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
const validatedSitemap = normalizeAndValidateUrlInput(normalizedEntered);
|
|
218
|
+
if (validatedSitemap) {
|
|
219
|
+
site.config.sitemap_url = validatedSitemap;
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
console.log('Invalid sitemap URL. Use a full URL or domain like example.com/sitemap.xml');
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
if (!detectedSitemap) {
|
|
226
|
+
options.warnings.push(`${site.configPath}: Could not auto-discover sitemap_url from website_url (${website}).`);
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
site.config.sitemap_url = detectedSitemap;
|
|
230
|
+
}
|
|
231
|
+
async function promptWebsiteAndSitemap(askText, sites, warnings) {
|
|
232
|
+
for (const site of sites) {
|
|
233
|
+
const existingWebsite = normalizeWebsiteInput(site.config.website_url);
|
|
234
|
+
site.config.website_url = existingWebsite;
|
|
235
|
+
if (existingWebsite) {
|
|
236
|
+
await discoverAndApplySitemap(site, {
|
|
237
|
+
askText,
|
|
238
|
+
interactiveSitemapInputPrompt: true,
|
|
239
|
+
showLoader: true,
|
|
240
|
+
warnings,
|
|
241
|
+
});
|
|
242
|
+
continue;
|
|
243
|
+
}
|
|
244
|
+
const label = site.siteRoot || '.';
|
|
245
|
+
const websiteUrl = await promptValidatedOptionalUrl(askText, `Website URL for ${label} (leave empty to skip)`, site.config.website_url || undefined);
|
|
246
|
+
site.config.website_url = websiteUrl;
|
|
247
|
+
await discoverAndApplySitemap(site, {
|
|
248
|
+
askText,
|
|
249
|
+
interactiveSitemapInputPrompt: true,
|
|
250
|
+
showLoader: true,
|
|
251
|
+
warnings,
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
async function applySitemapDiscoveryForSites(sites, warnings) {
|
|
256
|
+
for (const site of sites) {
|
|
257
|
+
await discoverAndApplySitemap(site, {
|
|
258
|
+
interactiveSitemapInputPrompt: false,
|
|
259
|
+
showLoader: false,
|
|
260
|
+
warnings,
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
function normalizeWebsiteInput(value) {
|
|
265
|
+
return value.trim();
|
|
266
|
+
}
|
|
267
|
+
function looksLikeWebsitePrefix(value) {
|
|
268
|
+
return (value.includes('://')
|
|
269
|
+
|| value.includes('?')
|
|
270
|
+
|| /^[^/\s]+\.[^/\s]+/.test(value));
|
|
271
|
+
}
|
|
272
|
+
function parseWebsiteUrlInputs(values, availableSiteRoots) {
|
|
273
|
+
const rawGlobalWebsiteUrls = [];
|
|
274
|
+
const websiteBySiteRoot = new Map();
|
|
275
|
+
for (const value of values) {
|
|
276
|
+
const normalizedValue = normalizeWebsiteInput(value);
|
|
277
|
+
if (!normalizedValue) {
|
|
278
|
+
continue;
|
|
279
|
+
}
|
|
280
|
+
const separatorIndex = normalizedValue.indexOf('=');
|
|
281
|
+
if (separatorIndex <= 0) {
|
|
282
|
+
rawGlobalWebsiteUrls.push(normalizedValue);
|
|
283
|
+
continue;
|
|
284
|
+
}
|
|
285
|
+
const rawSiteRoot = normalizedValue.slice(0, separatorIndex).trim();
|
|
286
|
+
const rawWebsiteUrl = normalizedValue.slice(separatorIndex + 1).trim();
|
|
287
|
+
const siteRootLooksLikeWebsite = looksLikeWebsitePrefix(rawSiteRoot);
|
|
288
|
+
if (!rawWebsiteUrl) {
|
|
289
|
+
throw new Error(`Invalid --website-url value: "${normalizedValue}". Website URL cannot be empty.`);
|
|
290
|
+
}
|
|
291
|
+
if (siteRootLooksLikeWebsite) {
|
|
292
|
+
const validatedGlobalValue = normalizeAndValidateUrlInput(normalizedValue);
|
|
293
|
+
if (!validatedGlobalValue) {
|
|
294
|
+
throw new Error(`Invalid --website-url value: "${normalizedValue}".`);
|
|
295
|
+
}
|
|
296
|
+
rawGlobalWebsiteUrls.push(validatedGlobalValue);
|
|
297
|
+
continue;
|
|
298
|
+
}
|
|
299
|
+
const normalizedSiteRoot = rawSiteRoot === '.' || rawSiteRoot === '/'
|
|
300
|
+
? ''
|
|
301
|
+
: normalizeSiteRoot(rawSiteRoot);
|
|
302
|
+
if (!availableSiteRoots.has(normalizedSiteRoot)) {
|
|
303
|
+
throw new Error(`Unknown site root in --website-url mapping: ${rawSiteRoot}. Available site roots: ${Array.from(availableSiteRoots).map((root) => root || '.').join(', ')}`);
|
|
304
|
+
}
|
|
305
|
+
const validatedMappedValue = normalizeAndValidateUrlInput(rawWebsiteUrl);
|
|
306
|
+
if (!validatedMappedValue) {
|
|
307
|
+
throw new Error(`Invalid --website-url mapping value for ${rawSiteRoot}: "${rawWebsiteUrl}".`);
|
|
308
|
+
}
|
|
309
|
+
websiteBySiteRoot.set(normalizedSiteRoot, validatedMappedValue);
|
|
310
|
+
}
|
|
311
|
+
const globalWebsiteUrls = [];
|
|
312
|
+
for (const globalWebsiteUrl of rawGlobalWebsiteUrls) {
|
|
313
|
+
const validatedGlobalValue = normalizeAndValidateUrlInput(globalWebsiteUrl);
|
|
314
|
+
if (!validatedGlobalValue) {
|
|
315
|
+
throw new Error(`Invalid --website-url value: "${globalWebsiteUrl}".`);
|
|
316
|
+
}
|
|
317
|
+
globalWebsiteUrls.push(validatedGlobalValue);
|
|
318
|
+
}
|
|
319
|
+
return {
|
|
320
|
+
globalWebsiteUrls,
|
|
321
|
+
websiteBySiteRoot,
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
async function run() {
|
|
325
|
+
const flags = parseCliFlags(process.argv.slice(2));
|
|
326
|
+
if (flags.help) {
|
|
327
|
+
console.log(usageText());
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
const interactive = isInteractiveTerminal();
|
|
331
|
+
if (!interactive && !flags.yes) {
|
|
332
|
+
throw new Error('Non-interactive terminal detected. Use --yes to continue.');
|
|
333
|
+
}
|
|
334
|
+
const repoRoot = path.resolve(flags.repoPath);
|
|
335
|
+
await ensureDirectoryExists(repoRoot);
|
|
336
|
+
const gitRepository = await isGitRepository(repoRoot);
|
|
337
|
+
if (!gitRepository) {
|
|
338
|
+
throw new Error(`Not a git repository: ${repoRoot}`);
|
|
339
|
+
}
|
|
340
|
+
displayBanner();
|
|
341
|
+
console.log(`Repository: ${repoRoot}`);
|
|
342
|
+
const modeResolution = await resolveModeAndSiteRoots({
|
|
343
|
+
repoRoot,
|
|
344
|
+
mode: flags.mode,
|
|
345
|
+
siteRoots: flags.siteRoots,
|
|
346
|
+
});
|
|
347
|
+
let resolvedSiteRoots = [...modeResolution.siteRoots];
|
|
348
|
+
let resolvedMode = modeResolution.resolvedMode;
|
|
349
|
+
const shouldPromptRootInclusion = flags.mode === 'auto'
|
|
350
|
+
&& !flags.yes
|
|
351
|
+
&& interactive
|
|
352
|
+
&& modeResolution.rootCandidateDetected
|
|
353
|
+
&& modeResolution.nestedRootCandidates.length > 0
|
|
354
|
+
&& modeResolution.siteRoots.includes('');
|
|
355
|
+
let prompter = null;
|
|
356
|
+
try {
|
|
357
|
+
if (shouldPromptRootInclusion) {
|
|
358
|
+
prompter = createPrompter();
|
|
359
|
+
const includeRootSite = await prompter.askYesNo('Detected framework config in root and subdirectories. Include root site?', true);
|
|
360
|
+
if (!includeRootSite) {
|
|
361
|
+
resolvedSiteRoots = resolvedSiteRoots.filter((siteRoot) => siteRoot !== '');
|
|
362
|
+
}
|
|
363
|
+
if (resolvedSiteRoots.length === 0) {
|
|
364
|
+
resolvedSiteRoots = [''];
|
|
365
|
+
resolvedMode = 'single';
|
|
366
|
+
}
|
|
367
|
+
else if (resolvedSiteRoots.length === 1 && resolvedSiteRoots[0] === '') {
|
|
368
|
+
resolvedMode = 'single';
|
|
369
|
+
}
|
|
370
|
+
else {
|
|
371
|
+
resolvedMode = 'monorepo';
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
for (const siteRoot of resolvedSiteRoots) {
|
|
375
|
+
const exists = await siteRootExists(repoRoot, siteRoot);
|
|
376
|
+
if (!exists) {
|
|
377
|
+
throw new Error(`Site root does not exist: ${siteRoot || '.'}`);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
const plan = await buildInitPlan({
|
|
381
|
+
repoRoot,
|
|
382
|
+
mode: resolvedMode,
|
|
383
|
+
siteRoots: resolvedSiteRoots,
|
|
384
|
+
});
|
|
385
|
+
for (const warning of modeResolution.warnings) {
|
|
386
|
+
plan.warnings.push(warning);
|
|
387
|
+
}
|
|
388
|
+
const shouldAutoFilterEmptySites = flags.mode === 'auto'
|
|
389
|
+
&& flags.siteRoots.length === 0
|
|
390
|
+
&& resolvedMode === 'monorepo';
|
|
391
|
+
if (shouldAutoFilterEmptySites) {
|
|
392
|
+
const filtered = autoFilterEmptyCollectionSites(plan.sites);
|
|
393
|
+
if (filtered.removedConfigPaths.length > 0) {
|
|
394
|
+
plan.sites = filtered.filteredSites;
|
|
395
|
+
const removedWarningPrefixes = filtered.removedConfigPaths.map((configPath) => `${configPath}: `);
|
|
396
|
+
plan.warnings = plan.warnings.filter((warning) => {
|
|
397
|
+
for (const prefix of removedWarningPrefixes) {
|
|
398
|
+
if (warning.startsWith(prefix)) {
|
|
399
|
+
return false;
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
return true;
|
|
403
|
+
});
|
|
404
|
+
plan.warnings.push(`Skipped ${filtered.removedConfigPaths.length} detected site root(s) with no collections: ${filtered.removedConfigPaths.join(', ')}`);
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
if (plan.sites.length === 1 && plan.sites[0]?.siteRoot === '') {
|
|
408
|
+
plan.mode = 'single';
|
|
409
|
+
}
|
|
410
|
+
else {
|
|
411
|
+
plan.mode = 'monorepo';
|
|
412
|
+
}
|
|
413
|
+
displayPlanSummary(plan.mode, plan.sites.length);
|
|
414
|
+
const availableSiteRoots = new Set(plan.sites.map((site) => normalizeSiteRoot(site.siteRoot)));
|
|
415
|
+
const websiteInputs = parseWebsiteUrlInputs(flags.websiteUrls, availableSiteRoots);
|
|
416
|
+
if (websiteInputs.globalWebsiteUrls.length === 1) {
|
|
417
|
+
const globalWebsiteUrl = websiteInputs.globalWebsiteUrls[0];
|
|
418
|
+
if (globalWebsiteUrl) {
|
|
419
|
+
for (const site of plan.sites) {
|
|
420
|
+
site.config.website_url = globalWebsiteUrl;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
else if (websiteInputs.globalWebsiteUrls.length > 1) {
|
|
425
|
+
const sitesWithoutExplicitMapping = plan.sites.filter((site) => {
|
|
426
|
+
const siteRoot = normalizeSiteRoot(site.siteRoot);
|
|
427
|
+
return !websiteInputs.websiteBySiteRoot.has(siteRoot);
|
|
428
|
+
});
|
|
429
|
+
if (websiteInputs.globalWebsiteUrls.length !== sitesWithoutExplicitMapping.length) {
|
|
430
|
+
throw new Error(`Received ${websiteInputs.globalWebsiteUrls.length} plain --website-url values for ${sitesWithoutExplicitMapping.length} unmapped site(s). Provide either one global URL, exact count by site order, or explicit "<siteRoot>=<url>" mappings.`);
|
|
431
|
+
}
|
|
432
|
+
for (let index = 0; index < sitesWithoutExplicitMapping.length; index += 1) {
|
|
433
|
+
const site = sitesWithoutExplicitMapping[index];
|
|
434
|
+
const website = websiteInputs.globalWebsiteUrls[index];
|
|
435
|
+
if (site && website) {
|
|
436
|
+
site.config.website_url = website;
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
if (websiteInputs.websiteBySiteRoot.size > 0) {
|
|
441
|
+
for (const site of plan.sites) {
|
|
442
|
+
const siteKey = normalizeSiteRoot(site.siteRoot);
|
|
443
|
+
const mappedWebsite = websiteInputs.websiteBySiteRoot.get(siteKey);
|
|
444
|
+
if (mappedWebsite) {
|
|
445
|
+
site.config.website_url = mappedWebsite;
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
const hasPreconfiguredWebsiteInputs = websiteInputs.globalWebsiteUrls.length > 0
|
|
450
|
+
|| websiteInputs.websiteBySiteRoot.size > 0;
|
|
451
|
+
if (flags.yes || !interactive) {
|
|
452
|
+
if (hasPreconfiguredWebsiteInputs) {
|
|
453
|
+
await applySitemapDiscoveryForSites(plan.sites, plan.warnings);
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
else {
|
|
457
|
+
if (!prompter) {
|
|
458
|
+
prompter = createPrompter();
|
|
459
|
+
}
|
|
460
|
+
await promptWebsiteAndSitemap(prompter.askText, plan.sites, plan.warnings);
|
|
461
|
+
}
|
|
462
|
+
displaySiteSummary();
|
|
463
|
+
for (const site of plan.sites) {
|
|
464
|
+
summarizeSite(site);
|
|
465
|
+
}
|
|
466
|
+
printWarnings(plan.warnings);
|
|
467
|
+
const existingConfigs = await findExistingConfigPaths(plan);
|
|
468
|
+
let forceWrite = flags.force;
|
|
469
|
+
if (existingConfigs.length > 0 && !forceWrite) {
|
|
470
|
+
if (flags.yes || !interactive) {
|
|
471
|
+
throw new Error(`Existing config file(s) found: ${existingConfigs.join(', ')}. Use --force to overwrite.`);
|
|
472
|
+
}
|
|
473
|
+
if (!prompter) {
|
|
474
|
+
prompter = createPrompter();
|
|
475
|
+
}
|
|
476
|
+
const overwrite = await prompter.askYesNo(`Existing config file(s) found (${existingConfigs.join(', ')}). Overwrite?`, false);
|
|
477
|
+
if (!overwrite) {
|
|
478
|
+
console.log('Cancelled');
|
|
479
|
+
return;
|
|
480
|
+
}
|
|
481
|
+
forceWrite = true;
|
|
482
|
+
}
|
|
483
|
+
if (!flags.yes && !flags.dryRun && interactive) {
|
|
484
|
+
if (!prompter) {
|
|
485
|
+
prompter = createPrompter();
|
|
486
|
+
}
|
|
487
|
+
const shouldWrite = await prompter.askYesNo('Write gitcms.md file(s) now?', true);
|
|
488
|
+
if (!shouldWrite) {
|
|
489
|
+
console.log('Cancelled');
|
|
490
|
+
return;
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
const writeResults = await writePlanToDisk(plan, {
|
|
494
|
+
dryRun: flags.dryRun,
|
|
495
|
+
force: forceWrite,
|
|
496
|
+
});
|
|
497
|
+
console.log('');
|
|
498
|
+
if (flags.dryRun) {
|
|
499
|
+
console.log('Dry run complete. No files were written.');
|
|
500
|
+
}
|
|
501
|
+
else {
|
|
502
|
+
console.log('Initialization complete.');
|
|
503
|
+
}
|
|
504
|
+
for (const result of writeResults) {
|
|
505
|
+
const status = flags.dryRun
|
|
506
|
+
? 'planned'
|
|
507
|
+
: result.overwritten
|
|
508
|
+
? 'overwritten'
|
|
509
|
+
: 'created';
|
|
510
|
+
console.log(`- ${result.configPath} (${status})`);
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
finally {
|
|
514
|
+
if (prompter) {
|
|
515
|
+
prompter.close();
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
const invokedPath = process.argv[1];
|
|
520
|
+
const currentPath = fileURLToPath(import.meta.url);
|
|
521
|
+
if (invokedPath && path.resolve(invokedPath) === path.resolve(currentPath)) {
|
|
522
|
+
run().catch((error) => {
|
|
523
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
524
|
+
console.error(`Error: ${message}`);
|
|
525
|
+
process.exitCode = 1;
|
|
526
|
+
});
|
|
527
|
+
}
|
|
528
|
+
export { run };
|
|
529
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-detection.d.ts","sourceRoot":"","sources":["../../src/core/content-detection.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,GACxB,MAAM,+BAA+B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-detection.js","sourceRoot":"","sources":["../../src/core/content-detection.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,GAKjB,MAAM,+BAA+B,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare function ensureDirectoryExists(directoryPath: string): Promise<void>;
|
|
2
|
+
export declare function isGitRepository(repoRoot: string): Promise<boolean>;
|
|
3
|
+
export declare function pathExists(targetPath: string): Promise<boolean>;
|
|
4
|
+
export declare function walkRepositoryFiles(repoRoot: string): Promise<string[]>;
|
|
5
|
+
export declare function listImmediateChildren(directoryPath: string): Promise<{
|
|
6
|
+
fileNames: string[];
|
|
7
|
+
directoryNames: string[];
|
|
8
|
+
}>;
|
|
9
|
+
export declare function readFileUtf8(filePath: string): Promise<string>;
|
|
10
|
+
export declare function writeFileUtf8(filePath: string, content: string): Promise<void>;
|
|
11
|
+
//# sourceMappingURL=filesystem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../src/core/filesystem.ts"],"names":[],"mappings":"AAmBA,wBAAsB,qBAAqB,CAAC,aAAa,EAAE,MAAM,iBAKhE;AAED,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,oBAQrD;AAED,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,oBAOlD;AAED,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,qBAgCzD;AAED,wBAAsB,qBAAqB,CAAC,aAAa,EAAE,MAAM;;;GAqBhE;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,mBAElD;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,iBAGpE"}
|