@cspell/cspell-tools
Version:
Tools to assist with the development of cSpell
41 lines • 1.97 kB
JavaScript
import { writeFile } from 'node:fs/promises';
import { opConcatMap, pipe } from '@cspell/cspell-pipe/sync';
import YAML from 'yaml';
import { compile } from './compiler/compile.js';
import { createCompileRequest } from './compiler/createCompileRequest.js';
import { configFileSchemaURL } from './config/config.js';
import { getSystemFeatureFlags, parseFlags } from './FeatureFlags/index.js';
import { globP } from './util/globP.js';
getSystemFeatureFlags().register('compound', 'Enable compound dictionary sources.');
const defaultConfigFile = 'cspell-tools.config.yaml';
export const configFileHeader = `# yaml-language-server: $schema=${configFileSchemaURL}\n\n`;
export async function processCompileAction(src, options, featureFlags) {
const ff = featureFlags || getSystemFeatureFlags();
parseFlags(ff, options.experimental || []);
return useCompile(src, options);
}
async function useCompile(src, options) {
console.log('Compile:\n output: %s\n compress: %s\n files:\n %s', options.output || 'default', options.compress ? 'true' : 'false', src.join('\n '));
if (options.listFile && options.listFile.length) {
console.log(' list files:\n %s', options.listFile.join('\n '));
}
console.log('\n\n');
const globResults = await Promise.all(src.map((s) => globP(s)));
const sources = [
...pipe(globResults, opConcatMap((a) => a)),
];
const request = createCompileRequest(sources, options);
return options.init ? initConfig(request) : compile(request);
}
async function initConfig(runConfig) {
const { $schema = configFileSchemaURL, ...cfg } = runConfig;
const config = { $schema, ...cfg };
const content = configFileHeader + YAML.stringify(config, undefined, 2);
console.log('Writing config file: %s', defaultConfigFile);
await writeFile(defaultConfigFile, content);
console.log(`Init complete.
To build, use:
cspell-tools-cli build
`);
}
//# sourceMappingURL=compile.js.map