UNPKG

1.81 kBJavaScriptView Raw
1import { executeCodegen } from './codegen';
2import { createWatcher } from './utils/watcher';
3import { fileExists, writeSync } from './utils/file-system';
4import { sync as mkdirpSync } from 'mkdirp';
5import { dirname } from 'path';
6import { debugLog } from './utils/debugging';
7process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
8export async function generate(config, saveToFile = true) {
9 async function writeOutput(generationResult) {
10 if (!saveToFile) {
11 return generationResult;
12 }
13 await Promise.all(generationResult.map(async (result) => {
14 if (!shouldOverwrite(config, result.filename) && fileExists(result.filename)) {
15 return;
16 }
17 const content = result.content || '';
18 if (content.length === 0) {
19 return;
20 }
21 const basedir = dirname(result.filename);
22 mkdirpSync(basedir);
23 writeSync(result.filename, result.content);
24 }));
25 return generationResult;
26 }
27 // watch mode
28 if (config.watch) {
29 return createWatcher(config, writeOutput);
30 }
31 const outputFiles = await executeCodegen(config);
32 await writeOutput(outputFiles);
33 return outputFiles;
34}
35function shouldOverwrite(config, outputPath) {
36 const globalValue = !!config.overwrite;
37 const outputConfig = config.generates[outputPath];
38 if (!outputConfig) {
39 debugLog(`Couldn't find a config of ${outputPath}`);
40 return globalValue;
41 }
42 if (isConfiguredOutput(outputConfig) && typeof outputConfig.overwrite === 'boolean') {
43 return outputConfig.overwrite;
44 }
45 return globalValue;
46}
47function isConfiguredOutput(output) {
48 return typeof output.plugins !== 'undefined';
49}
50//# sourceMappingURL=generate-and-save.js.map
\No newline at end of file