@fontoxml/fontoxml-development-tools
Version:
Development tools for Fonto.
84 lines (78 loc) • 2.44 kB
JavaScript
import path from 'path';
import EditorRepository from './EditorRepository.js';
export default async function addModulesToApp(app) {
// Default modules.
await app.enableBuiltInModule(
path.join(app.builtInModulesPath, 'localization'),
);
await app.enableBuiltInModule(
path.join(app.builtInModulesPath, 'operations'),
);
await app.enableBuiltInModule(path.join(app.builtInModulesPath, 'schema'));
// The editor repository information is normally initialized in the first pre-controller on the
// cli command, but we need this information earlier. Stubb the logger to not output anything
// yet, as that will be done later anyway.
const editorRepository = new EditorRepository();
await editorRepository.init(
{
logger: {
break: () => undefined,
notice: () => undefined,
InputError: app.logger.InputError,
},
},
{}
);
// Conditional modules based on product license (without actually validating the license).
await app.enableBuiltInModule(
path.join(app.builtInModulesPath, 'connectors'),
);
await app.enableBuiltInModule(
path.join(app.builtInModulesPath, 'content-quality'),
);
await app.enableBuiltInModule(
path.join(app.builtInModulesPath, 'document-history'),
);
if (
editorRepository &&
editorRepository.sdkVersion &&
editorRepository.sdkVersion.isPre7_7_0
) {
await app.enableBuiltInModule(
path.join(app.builtInModulesPath, 'editor-pre-7-7-0'),
);
} else {
await app.enableBuiltInModule(path.join(app.builtInModulesPath, 'editor'));
}
await app.enableBuiltInModule(path.join(app.builtInModulesPath, 'output'));
await app.enableBuiltInModule(path.join(app.builtInModulesPath, 'review'));
await app.enableBuiltInModule(
path.join(app.builtInModulesPath, 'schema-compiler'),
);
await app.enableBuiltInModule(
path.join(app.builtInModulesPath, 'spell-checker'),
);
// Load additional modules from config.json.
if (
editorRepository &&
editorRepository.config &&
editorRepository.config.developmentToolsModules &&
editorRepository.path
) {
await Promise.all(
editorRepository.config.developmentToolsModules.map(
(developmentToolsModule) => {
const developmentToolsModulePath = path.isAbsolute(
developmentToolsModule
)
? developmentToolsModule
: path.join(
editorRepository.path,
developmentToolsModule
);
return app.enableModule(developmentToolsModulePath);
}
)
);
}
}