UNPKG

@yuki-no/plugin-release-tracking

Version:

Release tracking plugin for yuki-no - Tracks release status for commits and manages issue labels/comments automatically

37 lines (36 loc) 1.45 kB
import { splitByNewline } from '@yuki-no/plugin-sdk/utils/input'; import { log } from '@yuki-no/plugin-sdk/utils/log'; import { valid as isValidVersion, parse as parseVersion } from 'semver'; export const getRelease = (git, commitHash) => { log('I', `getRelease :: Retrieving release list for commit ${commitHash}`); const result = git.exec(`tag --contains ${commitHash}`); if (!result.length) { log('I', 'getRelease :: Not released'); return { prerelease: undefined, release: undefined, }; } const versions = splitByNewline(result); const parsedVersions = versions .filter(v => isValidVersion(v)) .map(v => parseVersion(v)); const firstPrereleaseVersion = parsedVersions.find(v => v?.prerelease.length && v.prerelease.length > 0)?.raw; const firstReleaseVersion = parsedVersions.find(v => v?.prerelease.length === 0)?.raw; const releaseInfo = { prerelease: createTag(git.repoUrl, firstPrereleaseVersion), release: createTag(git.repoUrl, firstReleaseVersion), }; log('I', `getRelease :: Released (pre: ${releaseInfo.prerelease?.version ?? ''} / prod: ${releaseInfo.release?.version ?? ''})`); return releaseInfo; }; const createTag = (repoUrl, version) => { if (!version) { return; } const tagUrl = `${repoUrl}/releases/tag/${version}`; return { url: tagUrl, version, }; };