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

52 lines (41 loc) 1.46 kB
import { Command, CommandOption } from '../common/command.js'; import { Composition } from './composition.js'; import { log } from '@gouvfr/dsfr-forge'; let FRAMEWORK_IDS, FRAMEWORKS; try { const weave = await import('@gouvfr/dsfr-weave'); FRAMEWORK_IDS = weave.FRAMEWORK_IDS; FRAMEWORKS = weave.FRAMEWORKS; } catch (e) { log.warn('Weave dependency is not available.'); FRAMEWORK_IDS = []; FRAMEWORKS = { }; } class CompositionCommand extends Command{ constructor () { super('compose', 'Génère les composants du dsfr'); } get usage () { return ` -p <part> <part> ${FRAMEWORKS.map(framework => `[--${framework.alias}]`).join(' ')}`; } get example () { return 'génère les composants pour les parties spécifiées et les frameworks indiqués'; } get options () { return [ new CommandOption('parts', 'limite la composition aux parties listées', 'array', 'p'), ...FRAMEWORKS.map(framework => new CommandOption(framework.id, `limite la composition au framework ${framework.name}`, 'boolean', framework.alias)) ]; } async handler (argv) { const all = !FRAMEWORK_IDS.some(id => argv[id] === true); const settings = { partIds: argv.parts ?? null, frameworkIds: Object.fromEntries(FRAMEWORK_IDS.map(id => [id, argv[id] === true || all])), }; const composition = new Composition(); await composition.compose(settings); } } export { CompositionCommand };