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