export default function removeDeprecatedFrontmatter( file, frontmatterVersions, releaseToDeprecate, nextOldestRelease ) { // skip files with no Enterprise Server versions frontmatter if (!frontmatterVersions) return if (!frontmatterVersions.ghes) return const ghesRange = frontmatterVersions.ghes // skip files with versions frontmatter that already applies to all enterprise-server releases if (ghesRange === '*') return // if the release to deprecate is 2.13, and the FM is either '>=2.13', '>2.13', or '>=2.14', // we can safely change the FM to ghes: '*' const appliesToAllSupportedGhesReleases = ghesRange === `>=${releaseToDeprecate}` || ghesRange === `>${releaseToDeprecate}` || ghesRange === `>=${nextOldestRelease}` if (appliesToAllSupportedGhesReleases) { frontmatterVersions.ghes = '*' return } // if the release to deprecate is 2.13, and the FM is either '=2.13', '<2.13', '<=2.13', or '<2.14', // delete (aka deprecate) the ghes frontmatter property. const appliesToNoSupportedGhesReleases = ghesRange === `=${releaseToDeprecate}` || ghesRange === `<${releaseToDeprecate}` || ghesRange === `<=${releaseToDeprecate}` || ghesRange === `<${nextOldestRelease}` if (appliesToNoSupportedGhesReleases) { // Throw a warning if there are no other frontmatter versions specified. if (Object.keys(frontmatterVersions).length === 1) { console.log( `Warning! ${file} has frontmatter versioning that will make it never appear when ${releaseToDeprecate} is deprecated. The article should probably be removed.` ) return } delete frontmatterVersions.ghes } }