-
Mark Kane authored
optimize to reduce number of required request upgrade JSONSchema to also use useVersion hook and support query string (planning#679)
Mark Kane authoredoptimize to reduce number of required request upgrade JSONSchema to also use useVersion hook and support query string (planning#679)
getLatestVersion.js 1.18 KiB
import axios from "axios";
import semver from "semver";
export default async function ({ siteVersion, projectId, includePrerelease = false, versions = null }) {
const filterResult = (data) => {
const versionRange = `~${siteVersion}`
const suitableVersions = data
.filter(({name}) => semver.satisfies(name, versionRange, {includePrerelease}))
.map(({name}) => name)
.sort()
const result_version = semver.maxSatisfying(suitableVersions, versionRange, {includePrerelease})
console.log('Get version for project: %s, requested version: %s, includePrerelease: %s, available versions: %s, selected version: %s', projectId, siteVersion, includePrerelease, suitableVersions, result_version)
return result_version
}
if (siteVersion === 'latest') {
return 'latest'
} else if (versions) {
return filterResult(versions.map((name) => {
return {name}
}))
} else {
return axios.get(`https://git.fitko.de/api/v4/projects/${projectId}/repository/tags`)
.catch((error) => {
throw `Fetching of latest tags failed with ${error.response.status}`
})
.then(async ({data}) => {
return filterResult(await data)
})
}
}