Skip to content

Commit fbd6d78

Browse files
committed
feat: add ignore alpha/beta filters and stabilize build
1 parent 38282a4 commit fbd6d78

6 files changed

Lines changed: 69 additions & 10 deletions

File tree

File renamed without changes.

.tool-versions

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
nodejs 18.20.8
1+
nodejs 20.19.5
22
deno 2.5.2

README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,8 @@ deno install -A -f -n unity-changeset https://deno.land/x/unity_changeset/src/cl
137137
Filter options:
138138
139139
--xlts - Include XLTS entitlement versions (require 'Enterprise' or 'Industry' license to install XLTS version)
140+
--ignore-alpha - Exclude ALPHA stream versions
141+
--ignore-beta - Exclude BETA stream versions
140142
--min <version> - Minimum version (included)
141143
--max <version> - Maximum version (included)
142144
--grep <regex> - Regular expression (e.g. '20(18|19).4.*')
@@ -206,6 +208,13 @@ $ unity-changeset list --all
206208
2020.1.13f1 5e24f28bfbc0
207209
...
208210

211+
# List changesets (all, excluding alpha/beta):
212+
$ unity-changeset list --all --ignore-alpha
213+
2020.1.14f1 d81f64f5201d
214+
2020.1.13f1 5e24f28bfbc0
215+
...
216+
2020.2.0b13 655e1a328b90
217+
209218
# List the available Unity versions:
210219
$ unity-changeset list --versions
211220
2020.1.14f1

src/cli.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ new Command()
6060
// Filter options.
6161
.group("Filter options")
6262
.option("--xlts", "Include XLTS entitlement versions (require 'Enterprise' or 'Industry' license to install XLTS version)")
63+
.option("--ignore-alpha", "Exclude ALPHA stream versions")
64+
.option("--ignore-beta", "Exclude BETA stream versions")
6365
.option("--min <version>", "Minimum version (included)")
6466
.option("--max <version>", "Maximum version (included)")
6567
.option("--grep <regex>", "Regular expression (e.g. '20(18|19).4.*')")
@@ -106,6 +108,8 @@ new Command()
106108
? true
107109
: false,
108110
xlts: options.xlts || false,
111+
ignoreAlpha: options.ignoreAlpha || false,
112+
ignoreBeta: options.ignoreBeta || false,
109113
};
110114

111115
// Output mode.

src/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,8 @@ export interface FilterOptions {
109109
grep: string;
110110
allLifecycles: boolean;
111111
xlts: boolean;
112+
ignoreAlpha: boolean;
113+
ignoreBeta: boolean;
112114
}
113115

114116
/*
@@ -254,6 +256,8 @@ export function filterChangesets(
254256
min <= c.versionNumber &&
255257
c.versionNumber <= max &&
256258
(options.xlts || !c.xlts) && // Include XLTS?
259+
(!options.ignoreAlpha || c.stream !== UnityReleaseStream.ALPHA) &&
260+
(!options.ignoreBeta || c.stream !== UnityReleaseStream.BETA) &&
257261
(!regex || regex.test(c.version)) &&
258262
(!lc || lc.some((l) => l.minor == c.minor && l.lifecycle == c.lifecycle)),
259263
);

src/unityChangeset.test.ts

Lines changed: 51 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ Deno.test("UnityChangeset.toString", () => {
7575
{ version: "2019.1.0a9", expected: "0acd256790e8" }, // Alpha
7676
{ version: "2019.1.0b1", expected: "83b3ba1f99df" }, // Beta
7777
{ version: "6000.1.0f1", expected: "9ea152932a88" }, // Supported
78-
{ version: "2022.3.67f2", expected: "6bedba8691df" }, // XLTS
78+
{ version: "2022.3.62f3", expected: "96770f904ca7" }, // XLTS
7979
].forEach((testcase) => {
8080
Deno.test(`getUnityChangeset (${testcase.version})`, async () => {
8181
if (testcase.expected) {
@@ -148,19 +148,61 @@ const changesetsForTest = [
148148

149149
// filterChangesets
150150
[
151-
{ options: { min: "2018.3", max: "2018.4", grep: "", allLifecycles: false, xlts: false, }, expected: 5, },
152-
{ options: { min: "2018.3", max: "", grep: "2018", allLifecycles: false, xlts: false, }, expected: 5, },
153-
{ options: { min: "2019", max: "", grep: "", allLifecycles: true, xlts: false, }, expected: 13, },
154-
{ options: { min: "2019", max: "", grep: "b", allLifecycles: true, xlts: false, }, expected: 4, },
155-
{ options: { min: "", max: "", grep: "", allLifecycles: false, xlts: true, }, expected: 14, },
156-
{ options: { min: "", max: "", grep: "2018", allLifecycles: false, xlts: false, }, expected: 8, },
151+
{ options: { min: "2018.3", max: "2018.4", grep: "", allLifecycles: false, xlts: false, ignoreAlpha: false, ignoreBeta: false, }, expected: 5, },
152+
{ options: { min: "2018.3", max: "", grep: "2018", allLifecycles: false, xlts: false, ignoreAlpha: false, ignoreBeta: false, }, expected: 5, },
153+
{ options: { min: "2019", max: "", grep: "", allLifecycles: true, xlts: false, ignoreAlpha: false, ignoreBeta: false, }, expected: 13, },
154+
{ options: { min: "2019", max: "", grep: "b", allLifecycles: true, xlts: false, ignoreAlpha: false, ignoreBeta: false, }, expected: 4, },
155+
{ options: { min: "", max: "", grep: "", allLifecycles: false, xlts: true, ignoreAlpha: false, ignoreBeta: false, }, expected: 14, },
156+
{ options: { min: "", max: "", grep: "2018", allLifecycles: false, xlts: false, ignoreAlpha: false, ignoreBeta: false, }, expected: 8, },
157157
].forEach((testcase) => {
158158
Deno.test(`filterChangesets(${JSON.stringify(testcase.options)})`, () => {
159159
const changesets = filterChangesets(changesetsForTest, testcase.options);
160160
assertEquals(changesets.length, testcase.expected);
161161
});
162162
});
163163

164+
Deno.test("filterChangesets with ignore-alpha and ignore-beta", () => {
165+
const preReleaseChangesets = [
166+
new UnityChangeset("2020.1.0a1", "000000000000", UnityReleaseStream.ALPHA),
167+
new UnityChangeset("2020.1.0a2", "000000000000", UnityReleaseStream.ALPHA),
168+
new UnityChangeset("2020.1.0b1", "000000000000", UnityReleaseStream.BETA),
169+
new UnityChangeset("2020.1.0f1", "000000000000", UnityReleaseStream.TECH),
170+
];
171+
172+
const ignoreAlphaOnly = filterChangesets(preReleaseChangesets, {
173+
min: "",
174+
max: "",
175+
grep: "",
176+
allLifecycles: true,
177+
xlts: false,
178+
ignoreAlpha: true,
179+
ignoreBeta: false,
180+
});
181+
assertEquals(ignoreAlphaOnly.length, 2);
182+
183+
const ignoreBetaOnly = filterChangesets(preReleaseChangesets, {
184+
min: "",
185+
max: "",
186+
grep: "",
187+
allLifecycles: true,
188+
xlts: false,
189+
ignoreAlpha: false,
190+
ignoreBeta: true,
191+
});
192+
assertEquals(ignoreBetaOnly.length, 3);
193+
194+
const ignoreBoth = filterChangesets(preReleaseChangesets, {
195+
min: "",
196+
max: "",
197+
grep: "",
198+
allLifecycles: true,
199+
xlts: false,
200+
ignoreAlpha: true,
201+
ignoreBeta: true,
202+
});
203+
assertEquals(ignoreBoth.length, 1);
204+
});
205+
164206
// groupChangesets
165207
[
166208
{ groupMode: GroupMode.All, expected: 22 },
@@ -182,7 +224,7 @@ Deno.test("scrapeArchivedChangesetsFromDb", async () => {
182224
Deno.test("listChangesets", async () => {
183225
const result = await listChangesets(
184226
SearchMode.Default,
185-
{ min: "", max: "", grep: "", allLifecycles: false, xlts: false },
227+
{ min: "", max: "", grep: "", allLifecycles: false, xlts: false, ignoreAlpha: false, ignoreBeta: false },
186228
GroupMode.All,
187229
OutputMode.Changeset,
188230
FormatMode.Json,
@@ -260,7 +302,7 @@ Deno.test("groupBy", () => {
260302
// { version: "2019.1.0a9", expected: "0acd256790e8" }, // Alpha (Too old)
261303
// { version: "2019.1.0b1", expected: "83b3ba1f99df" }, // Beta (Too old)
262304
{ version: "6000.1.0f1", expected: "9ea152932a88" }, // Supported
263-
{ version: "2022.3.67f2", expected: "6bedba8691df" }, // XLTS
305+
{ version: "2022.3.62f3", expected: "96770f904ca7" }, // XLTS
264306
].forEach((testcase) => {
265307
Deno.test(`getUnityChangeset with db=true should return same as without db (${testcase.version})`, async () => {
266308
const version = testcase.version;

0 commit comments

Comments
 (0)