@process-engine/ci_tools
Version:
CI tools for process-engine.io
43 lines (34 loc) • 1.08 kB
text/typescript
export type ParsedVersion = {
baseString: string;
releaseChannelName: string;
releaseChannelNumber?: number;
};
const RELEASE_CHANNEL_NAME_STABLE = 'stable';
export function parseVersion(version: string): ParsedVersion {
const isSemVer = version.match(/^\d+\.\d+\.\d+/) != null;
if (!isSemVer) {
return null;
}
const isPreVersion = version.includes('-');
if (isPreVersion) {
const parts = version.split('-');
const baseString = parts[0];
const releaseChannelString = parts[1];
const isNumberedReleaseChannel = releaseChannelString.includes('.');
if (!isNumberedReleaseChannel) {
return null;
}
const releaseChannelParts = releaseChannelString.split('.');
const releaseChannelName = releaseChannelParts[0];
const releaseChannelNumber = parseInt(releaseChannelParts[1]);
return {
baseString: baseString,
releaseChannelName: releaseChannelName,
releaseChannelNumber: releaseChannelNumber
};
}
return {
baseString: version,
releaseChannelName: RELEASE_CHANNEL_NAME_STABLE
};
}