/
utils.ts
60 lines (51 loc) 路 1.55 KB
/
utils.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import { PackageGroup, VersionType } from "@changesets/types";
import { Package } from "@manypkg/get-packages";
import semverGt from "semver/functions/gt";
import { InternalRelease } from "./types";
export function getHighestReleaseType(
releases: InternalRelease[]
): VersionType {
if (releases.length === 0) {
throw new Error(
`Large internal Changesets error when calculating highest release type in the set of releases. Please contact the maintainers`
);
}
let highestReleaseType: VersionType = "none";
for (let release of releases) {
switch (release.type) {
case "major":
return "major";
case "minor":
highestReleaseType = "minor";
break;
case "patch":
if (highestReleaseType === "none") {
highestReleaseType = "patch";
}
break;
}
}
return highestReleaseType;
}
export function getCurrentHighestVersion(
packageGroup: PackageGroup,
packagesByName: Map<string, Package>
): string {
let highestVersion: string | undefined;
for (let pkgName of packageGroup) {
let pkg = packagesByName.get(pkgName);
if (!pkg) {
console.error(
`FATAL ERROR IN CHANGESETS! We were unable to version for package group: ${pkgName} in package group: ${packageGroup.toString()}`
);
throw new Error(`fatal: could not resolve linked packages`);
}
if (
highestVersion === undefined ||
semverGt(pkg.packageJson.version, highestVersion)
) {
highestVersion = pkg.packageJson.version;
}
}
return highestVersion!;
}