AbdulElahGwaith's picture
Upload folder using huggingface_hub
88df9e4 verified
import semver from 'semver'
import { supported } from '@/versions/lib/enterprise-server-releases'
import getDataDirectory from '@/data-directory/lib/data-directory'
import { FeatureData, FrontmatterVersions } from '@/types'
// Return true if lowestSupportedVersion > semVerRange
export function isGhesReleaseDeprecated(lowestSupportedVersion: string, semVerRange: string) {
const lowestSemver = semver.coerce(lowestSupportedVersion)
if (!lowestSemver) return false
return semver.gtr(lowestSemver.version, semVerRange)
}
// Return true if the semver range is greater than the
// lowest supported GHES version
export function isInAllGhes(semverRange: string) {
if (semverRange === '*') return true
const regexGt = /(>|>=){1}\s?(\d+\.\d+)/g
const regexLt = /(<|<=){1}\s?(\d+\.\d+)/g
if (!regexGt.test(semverRange) || regexLt.test(semverRange)) return false
const minVersionMatch = semverRange.match(/\d+\.\d+/g)
const minVersion = minVersionMatch ? semver.coerce(minVersionMatch.pop())?.version : null
const oldestSupportedVersion = semver.coerce(supported[supported.length - 1])
const oldestSupported = oldestSupportedVersion ? oldestSupportedVersion.version : null
if (!minVersion || !oldestSupported) return false
if (!semverRange.includes('>=') && semver.eq(minVersion, oldestSupported)) return false
return semver.lte(minVersion, oldestSupported)
}
// A feature is deprecated if it only contains
// GHES releases and all releases are deprecated
// or all releases are supported.
export function isFeatureDeprecated(versions: FrontmatterVersions) {
// All GHES releases are deprecated
return (
!!versions.ghes &&
!versions.fpt &&
!versions.ghec &&
isGhesReleaseDeprecated(supported[supported.length - 1], versions.ghes)
)
}
// Return true when the feature version is in all versions
// and all GHES releases.
export function isAllVersions(versions: FrontmatterVersions) {
if (
versions &&
versions.ghec === '*' &&
versions.fpt === '*' &&
versions.ghes &&
isInAllGhes(versions.ghes)
) {
return true
}
return false
}
export function getFeatureVersionsObject(feature: string) {
const featureDataDir = process.env.ROOT ? `${process.env.ROOT}/data/features` : 'data/features'
const featureData = getDataDirectory(featureDataDir) as FeatureData
const featureValue = featureData[feature]
if (!featureValue) return {}
return featureData[feature].versions
}