on-merge/versions.ts (45 lines of code) (raw):
export interface Version {
version: string;
branch: string;
currentMajor?: boolean;
currentMinor?: boolean;
previousMinor?: boolean;
previousMajor?: boolean;
}
export interface Versions {
versions: Version[];
}
export interface VersionBranch {
version: string;
branch: string;
}
export interface VersionsParsed {
currentMinor: Version;
previousMinor: Version;
previousMajor: Version;
all: Version[];
}
export interface VersionMap {
[regex: string]: string;
}
export function parseVersions(versions: Versions): VersionsParsed {
const currentMinor = versions.versions.find((version) => version.currentMinor);
const previousMinor = versions.versions.find((version) => version.previousMinor);
const previousMajor = versions.versions.find((version) => version.previousMajor);
if (!currentMinor) {
throw new Error('versions.json is missing current minor version information');
}
if (!previousMinor) {
throw new Error('versions.json is missing previous minor version information');
}
if (!previousMajor) {
throw new Error('versions.json is missing previous major version information');
}
const parsed: VersionsParsed = {
currentMinor,
previousMinor,
previousMajor,
all: versions.versions,
};
return parsed;
}