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

43 lines (30 loc) 1.44 kB
import fs from 'fs'; import semver from 'semver'; import { ArchiveRelease } from './archive-release.js'; class DSFRArchiveConfigurator { async configure (settings) { this._versions = []; const entries = fs.readdirSync('releases/', { withFileTypes: true }); for (const entry of entries) { if (entry.isDirectory()) { const version = new ArchiveRelease(`releases/${entry.name}`); await version.read(); if (version.isValid) this._versions.push(version); } } const sorted = this._versions.sort((a, b) => semver.compare(b.id, a.id)); const currentVersion = sorted.find(version => !version.isPrerelease); currentVersion.setAsCurrent(); const majors = sorted.map(version => version.major).filter((major, index, array) => array.indexOf(major) === index); for (const major of majors) { const latest = sorted.filter(version => version.major === major)[0]; latest.setAsLatest(); } const published = sorted.filter(version => !version.isPrerelease || semver.gt(version.id, currentVersion.id)).filter((version, index, array) => version === array.find(v => v.feature === version.feature)); const features = settings.versions.length ? settings.versions : published.map(version => version.feature); for (const version of published) { await version.write(features.includes(version.feature)); } } } export { DSFRArchiveConfigurator };