forked from stackbit/stackbit-cli
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinit.ts
More file actions
28 lines (24 loc) · 1.42 KB
/
init.ts
File metadata and controls
28 lines (24 loc) · 1.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import path from 'path';
import chalk from 'chalk';
import yaml from 'js-yaml';
import { analyzeSite, convertToYamlConfig, FileBrowser, FileSystemFileBrowserAdapter, writeConfig } from '@stackbit/sdk';
import { printCMSMatchResult, printSSGMatchResult, trackInitResultStats } from './utils';
import { track, EVENTS } from './telemetry';
export async function init({ inputDir, dryRun }: { inputDir: string; dryRun: boolean }) {
track(EVENTS.init, { dry_run: dryRun, inputDir });
console.log(`Analyzing files in ${chalk.blueBright(path.resolve(inputDir))} ...`);
const fileBrowserAdapter = new FileSystemFileBrowserAdapter({ dirPath: inputDir });
const fileBrowser = new FileBrowser({ fileBrowserAdapter });
const analyzeResult = await analyzeSite({ fileBrowser });
printSSGMatchResult(analyzeResult.ssgMatchResult);
printCMSMatchResult(analyzeResult.cmsMatchResult);
trackInitResultStats(analyzeResult, inputDir);
if (dryRun) {
const yamlConfig = convertToYamlConfig({ config: analyzeResult.config });
const yamlString = yaml.dump(yamlConfig);
console.log(`\n${chalk.underline.bold('stackbit.yaml')}:\n${chalk.cyanBright(yamlString)}`);
} else {
await writeConfig({ dirPath: inputDir, config: analyzeResult.config });
console.log(`\nThe ${chalk.cyanBright('stackbit.yaml')} file have been generated and saved at: ${path.resolve(inputDir, 'stackbit.yaml')}`);
}
}