UNPKG

@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
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 };