Skip to content

Commit 1828494

Browse files
committed
feat: add XLTS (extended-LTS) option
1 parent e33d872 commit 1828494

File tree

3 files changed

+36
-14
lines changed

3 files changed

+36
-14
lines changed

src/cli.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,16 +52,17 @@ new Command()
5252
.example("unity-changeset list --lts --latest-patch", "List changesets of the latest patch versions (LTS only).")
5353
// Search options.
5454
.group("Search options")
55-
.option("--all", "Search all changesets (alpha/beta included)", { conflicts: ["pre-release"] })
56-
.option("--pre-release, --beta", "Search only pre-release (alpha/beta) changesets", { conflicts: ["all"] })
55+
.option("--all", "Search all changesets (alpha/beta included)")
56+
.option("--pre-release, --beta", "Search only pre-release (alpha/beta) changesets", { conflicts: ["all", "lts", "xlts"] })
57+
.option("--lts", "Only the LTS versions", { conflicts: ["all", "pre-release", "xlts"] })
58+
.option("--xlts", "Only the LTS/XLTS versions (require 'Enterprise' or 'Industry' license to install XLTS version)", { conflicts: ["all", "pre-release", "lts"] })
5759
// Filter options.
5860
.group("Filter options")
5961
.option("--min <version>", "Minimum version (included)")
6062
.option("--max <version>", "Maximum version (included)")
6163
.option("--grep <regex>", "Regular expression (e.g. '20(18|19).4.*')")
6264
.option("--latest-lifecycle", "Only the latest lifecycle (default)")
6365
.option("--all-lifecycles", "All lifecycles", { conflicts: ["latest-lifecycle"] })
64-
.option("--lts", "Only the LTS versions", { conflicts: ["pre-release"] })
6566
// Group options.
6667
.group("Group options")
6768
.option("--latest-patch", "The latest patch versions only")
@@ -79,8 +80,10 @@ new Command()
7980
: options.preRelease
8081
? SearchMode.PreRelease
8182
: options.lts
82-
? SearchMode.LTS
83-
: SearchMode.Default;
83+
? SearchMode.LTS
84+
: options.xlts
85+
? SearchMode.XLTS
86+
: SearchMode.Default;
8487

8588
// Group mode.
8689
const groupMode = (options.latestPatch || options.minorVersionOnly)

src/index.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { UnityChangeset as UnityChangesetClass } from "./unityChangeset.ts";
2-
import { getUnityReleases, getUnityReleasesInLTS, UnityReleaseStream } from "./unityGraphQL.ts";
2+
import { getUnityReleases, getUnityReleasesInLTS, UnityReleaseEntitlement, UnityReleaseStream } from "./unityGraphQL.ts";
33

44
export const UnityChangeset = UnityChangesetClass;
55
export type UnityChangeset = UnityChangesetClass;
@@ -33,6 +33,7 @@ export enum SearchMode {
3333
Default = 2,
3434
PreRelease = 3,
3535
LTS = 4,
36+
XLTS = 5,
3637
}
3738

3839
/*
@@ -154,6 +155,8 @@ export function searchChangesets(
154155
]);
155156
case SearchMode.LTS:
156157
return getUnityReleasesInLTS();
158+
case SearchMode.XLTS:
159+
return getUnityReleasesInLTS([UnityReleaseEntitlement.XLTS]);
157160
default:
158161
throw Error(`The given search mode '${searchMode}' was not supported`);
159162
}

src/unityGraphQL.ts

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@ export enum UnityReleaseStream {
1010
ALPHA = "ALPHA",
1111
}
1212

13+
export enum UnityReleaseEntitlement {
14+
XLTS = "XLTS",
15+
U7_ALPHA = "U7_ALPHA",
16+
}
17+
1318
interface UnityReleasesResponse {
1419
getUnityReleases: {
1520
totalCount: number;
@@ -25,17 +30,18 @@ interface UnityReleasesMajorVersionsResponse {
2530
export async function getUnityReleases(
2631
version: string,
2732
stream: UnityReleaseStream[] = [],
33+
entitlements: UnityReleaseEntitlement[] = []
2834
): Promise<UnityChangeset[]> {
2935
const client = new GraphQLClient(UNITY_GRAPHQL_ENDPOINT);
3036
const query = gql`
31-
query GetRelease($limit: Int, $skip: Int, $version: String!, $stream: [UnityReleaseStream!])
37+
query GetRelease($limit: Int, $skip: Int, $version: String!, $stream: [UnityReleaseStream!], $entitlements: [UnityReleaseEntitlement!])
3238
{
3339
getUnityReleases(
3440
limit: $limit
3541
skip: $skip
3642
stream: $stream
3743
version: $version
38-
entitlements: []
44+
entitlements: $entitlements
3945
) {
4046
totalCount
4147
edges {
@@ -51,11 +57,13 @@ query GetRelease($limit: Int, $skip: Int, $version: String!, $stream: [UnityRele
5157
}
5258
}
5359
`;
60+
5461
const variables = {
5562
limit: 1000,
5663
skip: 0,
5764
version: version,
5865
stream: stream,
66+
entitlements: entitlements,
5967
};
6068

6169
const results: UnityChangeset[] = [];
@@ -76,25 +84,33 @@ query GetRelease($limit: Int, $skip: Int, $version: String!, $stream: [UnityRele
7684
return results;
7785
}
7886

79-
export async function getUnityReleasesInLTS(): Promise<UnityChangeset[]> {
87+
export async function getUnityReleasesInLTS(
88+
entitlements: UnityReleaseEntitlement[] = [],
89+
): Promise<UnityChangeset[]> {
8090
const client = new GraphQLClient(UNITY_GRAPHQL_ENDPOINT);
8191
const query = gql`
82-
query {
92+
query GetReleaseMajorVersions($entitlements: [UnityReleaseEntitlement!])
93+
{
8394
getUnityReleaseMajorVersions(
8495
stream: []
8596
platform: []
8697
architecture: []
87-
entitlements: []
98+
entitlements: $entitlements
8899
) {
89100
version
90101
}
91102
}
92103
`;
93-
const data: UnityReleasesMajorVersionsResponse = await client.request(query);
104+
105+
const variables = {
106+
entitlements: entitlements,
107+
};
108+
109+
const data: UnityReleasesMajorVersionsResponse = await client.request(query, variables);
94110
const results = await Promise.all(data.getUnityReleaseMajorVersions
95111
.map(async (v) => {
96-
return await getUnityReleases(v.version, [UnityReleaseStream.LTS]);
97-
}));
112+
return await getUnityReleases(v.version, [UnityReleaseStream.LTS], entitlements);
113+
}));
98114

99115
return results.flat();
100116
}

0 commit comments

Comments
 (0)