-
Notifications
You must be signed in to change notification settings - Fork 2.1k
/
bucket.ts
41 lines (39 loc) · 1003 Bytes
/
bucket.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
import type { VersioningApi } from '../../../../modules/versioning/types';
export interface BucketConfig {
separateMajorMinor?: boolean;
separateMultipleMajor?: boolean;
separateMinorPatch?: boolean;
}
export function getBucket(
config: BucketConfig,
currentVersion: string,
newVersion: string,
versioning: VersioningApi
): string | null {
const { separateMajorMinor, separateMultipleMajor, separateMinorPatch } =
config;
if (!separateMajorMinor) {
return 'latest';
}
const fromMajor = versioning.getMajor(currentVersion);
const toMajor = versioning.getMajor(newVersion);
// istanbul ignore if
if (toMajor === null) {
return null;
}
if (fromMajor !== toMajor) {
if (separateMultipleMajor) {
return `major-${toMajor}`;
}
return 'major';
}
if (separateMinorPatch) {
if (
versioning.getMinor(currentVersion) === versioning.getMinor(newVersion)
) {
return 'patch';
}
return 'minor';
}
return 'non-major';
}