import axios from "axios";
import semver from "semver";

export default async function ({siteVersion, projectId, includePrerelease = false}) {
  if (siteVersion === 'latest') {
    return 'latest'
  } 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}) => {
        const versionRange = `~${siteVersion}`
        const suitableVersions = await 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
      })
  }
}