import core from "@actions/core"; import gitea from "gitea-api"; import { Release } from "gitea-api/dist/models/release"; async function run() { try { const host = core.getInput("host"); const token = core.getInput("token"); const repository = core.getInput("repository"); const [owner, repo] = repository.split("/"); const client = new gitea.GiteaApi({ BASE: `https://${host}/api/v1`, WITH_CREDENTIALS: true, TOKEN: token, }); let releases = await client.repository.repoListReleases({ owner, repo, }); let newVersion = getNewestRelease(releases); console.log(`NEW RELEASE ${newVersion}`); // console.log(`🎉 Release ready at ${response.html_url}`); } catch (error) { console.log(error); core.setFailed(error.message); } } /** * * @param {Release[]} releases * @returns {number} */ async function getNewestRelease(releases) { const initialVersion = core.getInput("initial-version"); const semVerParser = ([major, minor, patch]) => { return version.replace("v", "").split(".").map(parseFloat); }; const isSemVerGreater = (a, b) => { return ( a[0] > b[0] || (a[0] === b[0] && a[1] > b[1]) || (a[0] === b[0] && a[1] === b[1] && a[2] > b[2]) ); }; let version = semVerParser(initialVersion); for (let release of releases) { let releaseVersion = semVerParser(release.tag_name); if (isSemVerGreater(releaseVersion, version)) { version = releaseVersion; } } return `v${version[0]}.${version[1]}.${version[2] + 1}`; } run();