@gouvfr/dsfr-nexus
Version:
Le module `dsfr-nexus` est l'interface de ligne de commande (CLI) centrale du Système de Design de l’État - DSFR. Il offre des outils pour gérer et compiler les ressources du DSFR
48 lines (34 loc) • 1.31 kB
JavaScript
import { getStates } from '../../common/state/state.js';
import { PartComposer } from './part/part-composer.js';
import { Description } from './description/description.js';
import { ExportComposer } from './export/export-composer.js';
class DSFRComposer {
constructor (dest = '../') {
this._dest = dest;
}
async compose (settings) {
const states = await getStates({ src: '.', dest: this._dest });
for (const state of states) {
await this._compose(settings, state);
}
}
async _compose (settings, state) {
const partIds = settings.partIds ? state.partIds.filter(id => settings.partIds.includes(id)) : state.partIds;
this._parts = [];
const description = new Description(state);
await description.read();
const frameworkIds = Object.entries(settings.frameworkIds).filter(([, enabled]) => enabled).map(([id]) => id);
for (const id of partIds) {
const partState = state.setPart(id);
const part = new PartComposer(partState, frameworkIds, description.data);
this._parts.push(part);
await part.read();
}
for (const part of this._parts) {
await part.write();
}
const exportComposer = new ExportComposer(state, frameworkIds, description.data);
await exportComposer.write();
}
}
export { DSFRComposer };