@rage-against-the-pixel/unity-cli 1.0.13 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,6 +4,11 @@
4
4
  * @returns The first matching file path.
5
5
  */
6
6
  export declare function ResolveGlobToPath(globs: string[]): Promise<string>;
7
+ /**
8
+ * Prompts the user for input, masking the input with asterisks.
9
+ * @param prompt The prompt message to display.
10
+ * @returns The user input as a string.
11
+ */
7
12
  export declare function PromptForSecretInput(prompt: string): Promise<string>;
8
13
  export type ExecOptions = {
9
14
  silent?: boolean;
@@ -56,13 +61,6 @@ export interface ProcInfo {
56
61
  ppid: number;
57
62
  name: string;
58
63
  }
59
- /**
60
- * Attempts to kill a process with the given ProcInfo.
61
- * @param procInfo The process information containing the PID.
62
- * @param signal The signal to use for killing the process. Defaults to 'SIGTERM'.
63
- * @returns The PID of the killed process, or undefined if no process was killed.
64
- */
65
- export declare function TryKillProcess(procInfo: ProcInfo, signal?: NodeJS.Signals): Promise<number | undefined>;
66
64
  /**
67
65
  * Reads a PID file and returns the process information.
68
66
  * @param pidFilePath The path to the PID file.
@@ -70,6 +68,57 @@ export declare function TryKillProcess(procInfo: ProcInfo, signal?: NodeJS.Signa
70
68
  * @remarks The PID file is deleted after reading.
71
69
  */
72
70
  export declare function ReadPidFile(pidFilePath: string): Promise<ProcInfo | undefined>;
71
+ /**
72
+ * Delays execution for a specified number of milliseconds.
73
+ * @param ms The number of milliseconds to delay.
74
+ * @returns A promise that resolves after the delay.
75
+ */
76
+ export declare function Delay(ms: number): Promise<void>;
77
+ /**
78
+ * Result of the tailLogFile function containing cleanup resources.
79
+ */
80
+ export interface LogTailResult {
81
+ /** Promise that resolves when log tailing completes */
82
+ tailPromise: Promise<void>;
83
+ /** Function to signal that log tailing should end */
84
+ stopLogTail: () => void;
85
+ }
86
+ /**
87
+ * Tails a log file using fs.watch and ReadStream for efficient reading.
88
+ * @param logPath The path to the log file to tail.
89
+ * @returns An object containing the tail promise and signalEnd function.
90
+ */
91
+ export declare function TailLogFile(logPath: string): LogTailResult;
92
+ /**
93
+ * Waits for a file to be created and become readable within a timeout.
94
+ * @param filePath The path of the file to wait for.
95
+ * @param timeout The maximum time to wait in milliseconds. Default is 30000 (30 seconds).
96
+ */
97
+ export declare function WaitForFileToBeCreatedAndReadable(filePath: string, timeout?: number): Promise<void>;
98
+ /**
99
+ * Waits for a file to be unlocked (not exclusively locked by another process).
100
+ * If the file does not exist, it is considered unlocked.
101
+ * If the file exists, attempts to open it with read/write access.
102
+ * @param filePath The path of the file to wait for.
103
+ * @param timeout The maximum time to wait in milliseconds. Default is 30000 (30 seconds).
104
+ * @returns A promise that resolves when the file is unlocked.
105
+ */
106
+ export declare function WaitForFileToBeUnlocked(filePath: string, timeout?: number): Promise<void>;
107
+ /**
108
+ * Tests if a file can be opened with the specified flags.
109
+ * @remarks If the file does not exist, it returns false.
110
+ * @param filePath The path of the file to test.
111
+ * @param flags The flags to use when opening the file (e.g., fs.constants.O_RDONLY).
112
+ * @returns A promise that resolves to true if the file can be opened, false otherwise.
113
+ */
114
+ export declare function TestFileAccess(filePath: string, flags: number): Promise<boolean>;
115
+ /**
116
+ * Attempts to kill a process with the given ProcInfo.
117
+ * Escalates to SIGKILL or taskkill if the process does not exit after 5 seconds.
118
+ * @param procInfo The process information containing the PID.
119
+ * @param signal The signal to use for killing the process. Defaults to 'SIGTERM'.
120
+ */
121
+ export declare function KillProcess(procInfo: ProcInfo, signal?: NodeJS.Signals): Promise<void>;
73
122
  /**
74
123
  * Kills all child processes of the given process.
75
124
  * @param procInfo The process information of the parent process.
package/dist/utilities.js CHANGED
@@ -41,15 +41,20 @@ exports.DeleteDirectory = DeleteDirectory;
41
41
  exports.ReadFileContents = ReadFileContents;
42
42
  exports.GetTempDir = GetTempDir;
43
43
  exports.GetArgumentValueAsString = GetArgumentValueAsString;
44
- exports.TryKillProcess = TryKillProcess;
45
44
  exports.ReadPidFile = ReadPidFile;
45
+ exports.Delay = Delay;
46
+ exports.TailLogFile = TailLogFile;
47
+ exports.WaitForFileToBeCreatedAndReadable = WaitForFileToBeCreatedAndReadable;
48
+ exports.WaitForFileToBeUnlocked = WaitForFileToBeUnlocked;
49
+ exports.TestFileAccess = TestFileAccess;
50
+ exports.KillProcess = KillProcess;
46
51
  exports.KillChildProcesses = KillChildProcesses;
47
- const path = __importStar(require("path"));
48
- const glob = __importStar(require("glob"));
52
+ const os = __importStar(require("os"));
49
53
  const fs = __importStar(require("fs"));
54
+ const path = __importStar(require("path"));
50
55
  const https = __importStar(require("https"));
51
56
  const readline = __importStar(require("readline"));
52
- const os = __importStar(require("os"));
57
+ const glob_1 = require("glob");
53
58
  const child_process_1 = require("child_process");
54
59
  const logging_1 = require("./logging");
55
60
  const logger = logging_1.Logger.instance;
@@ -60,13 +65,18 @@ const logger = logging_1.Logger.instance;
60
65
  */
61
66
  async function ResolveGlobToPath(globs) {
62
67
  const globPath = path.join(...globs).split(path.sep).join('/');
63
- const paths = await glob.glob(globPath);
68
+ const paths = await (0, glob_1.glob)(globPath);
64
69
  for (const path of paths) {
65
70
  await fs.promises.access(path, fs.constants.R_OK);
66
71
  return path;
67
72
  }
68
73
  throw new Error(`No accessible file found for glob pattern: ${path.normalize(globPath)}`);
69
74
  }
75
+ /**
76
+ * Prompts the user for input, masking the input with asterisks.
77
+ * @param prompt The prompt message to display.
78
+ * @returns The user input as a string.
79
+ */
70
80
  async function PromptForSecretInput(prompt) {
71
81
  return new Promise((resolve) => {
72
82
  const rl = readline.createInterface({
@@ -99,20 +109,6 @@ async function Exec(command, args, options = { silent: false, showCommand: true
99
109
  const isDebug = logger.logLevel === logging_1.LogLevel.DEBUG;
100
110
  const isSilent = isDebug ? false : options.silent ? options.silent : false;
101
111
  const mustShowCommand = isDebug ? true : options.showCommand ? options.showCommand : false;
102
- function processOutput(data) {
103
- try {
104
- const chunk = data.toString();
105
- output += chunk;
106
- if (!isSilent && chunk.trim().length > 0) {
107
- process.stdout.write(chunk);
108
- }
109
- }
110
- catch (error) {
111
- if (error.code !== 'EPIPE') {
112
- throw error;
113
- }
114
- }
115
- }
116
112
  if (mustShowCommand) {
117
113
  const commandStr = `\x1b[34m${command} ${args.join(' ')}\x1b[0m`;
118
114
  if (isSilent) {
@@ -135,16 +131,62 @@ async function Exec(command, args, options = { silent: false, showCommand: true
135
131
  const sigtermHandler = () => child.kill('SIGTERM');
136
132
  process.once('SIGINT', sigintHandler);
137
133
  process.once('SIGTERM', sigtermHandler);
134
+ let hasCleanedUpListeners = false;
135
+ function removeListeners() {
136
+ if (hasCleanedUpListeners) {
137
+ return;
138
+ }
139
+ hasCleanedUpListeners = true;
140
+ process.removeListener('SIGINT', sigintHandler);
141
+ process.removeListener('SIGTERM', sigtermHandler);
142
+ }
143
+ let lineBuffer = ''; // Buffer for incomplete lines
144
+ function processOutput(data) {
145
+ try {
146
+ const chunk = data.toString();
147
+ const fullChunk = lineBuffer + chunk;
148
+ const lines = fullChunk.split('\n') // split by newline
149
+ .map(line => line.replace(/\r$/, '')) // remove trailing carriage return
150
+ .filter(line => line.length > 0); // filter out empty lines
151
+ if (!chunk.endsWith('\n')) {
152
+ lineBuffer = lines.pop() || '';
153
+ }
154
+ else {
155
+ lineBuffer = '';
156
+ }
157
+ for (const line of lines) {
158
+ output += `${line}\n`;
159
+ if (!isSilent) {
160
+ process.stdout.write(`${line}\n`);
161
+ }
162
+ }
163
+ }
164
+ catch (error) {
165
+ if (error.code !== 'EPIPE') {
166
+ throw error;
167
+ }
168
+ }
169
+ }
138
170
  child.stdout.on('data', processOutput);
139
171
  child.stderr.on('data', processOutput);
140
172
  child.on('error', (error) => {
141
- process.removeListener('SIGINT', sigintHandler);
142
- process.removeListener('SIGTERM', sigtermHandler);
173
+ removeListeners();
143
174
  reject(error);
144
175
  });
145
176
  child.on('close', (code) => {
146
- process.removeListener('SIGINT', sigintHandler);
147
- process.removeListener('SIGTERM', sigtermHandler);
177
+ removeListeners();
178
+ // Flush any remaining buffered content
179
+ if (lineBuffer.length > 0) {
180
+ const lines = lineBuffer.split('\n') // split by newline
181
+ .map(line => line.replace(/\r$/, '')) // remove trailing carriage return
182
+ .filter(line => line.length > 0); // filter out empty lines
183
+ for (const line of lines) {
184
+ output += `${line}\n`;
185
+ if (!isSilent) {
186
+ process.stdout.write(`${line}\n`);
187
+ }
188
+ }
189
+ }
148
190
  resolve(code === null ? 0 : code);
149
191
  });
150
192
  });
@@ -247,28 +289,6 @@ function GetArgumentValueAsString(value, args) {
247
289
  }
248
290
  return args[index + 1];
249
291
  }
250
- /**
251
- * Attempts to kill a process with the given ProcInfo.
252
- * @param procInfo The process information containing the PID.
253
- * @param signal The signal to use for killing the process. Defaults to 'SIGTERM'.
254
- * @returns The PID of the killed process, or undefined if no process was killed.
255
- */
256
- async function TryKillProcess(procInfo, signal = 'SIGTERM') {
257
- let pid;
258
- try {
259
- logger.ci(`Killing process "${procInfo.name}" with pid: ${procInfo.pid}`);
260
- process.kill(procInfo.pid, signal);
261
- pid = procInfo.pid;
262
- }
263
- catch (error) {
264
- const nodeJsException = error;
265
- const errorCode = nodeJsException?.code;
266
- if (errorCode !== 'ENOENT' && errorCode !== 'ESRCH') {
267
- logger.error(`Failed to kill process:\n${JSON.stringify(error)}`);
268
- }
269
- }
270
- return pid;
271
- }
272
292
  /**
273
293
  * Reads a PID file and returns the process information.
274
294
  * @param pidFilePath The path to the PID file.
@@ -304,12 +324,217 @@ async function ReadPidFile(pidFilePath) {
304
324
  }
305
325
  return procInfo;
306
326
  }
327
+ /**
328
+ * Delays execution for a specified number of milliseconds.
329
+ * @param ms The number of milliseconds to delay.
330
+ * @returns A promise that resolves after the delay.
331
+ */
332
+ async function Delay(ms) {
333
+ return new Promise(resolve => setTimeout(resolve, ms));
334
+ }
335
+ /**
336
+ * Tails a log file using fs.watch and ReadStream for efficient reading.
337
+ * @param logPath The path to the log file to tail.
338
+ * @returns An object containing the tail promise and signalEnd function.
339
+ */
340
+ function TailLogFile(logPath) {
341
+ let logEnded = false;
342
+ let lastSize = 0;
343
+ const logPollingInterval = 250;
344
+ async function readNewLogContent() {
345
+ try {
346
+ const stats = await fs.promises.stat(logPath);
347
+ if (stats.size < lastSize) {
348
+ lastSize = 0;
349
+ }
350
+ if (stats.size > lastSize) {
351
+ const bytesToRead = stats.size - lastSize;
352
+ const buffer = Buffer.alloc(bytesToRead);
353
+ let fh;
354
+ try {
355
+ fh = await fs.promises.open(logPath, fs.constants.O_RDONLY);
356
+ await fh.read(buffer, 0, bytesToRead, lastSize);
357
+ }
358
+ finally {
359
+ await fh?.close();
360
+ }
361
+ lastSize = stats.size;
362
+ if (bytesToRead > 0) {
363
+ const chunk = buffer.toString('utf8');
364
+ try {
365
+ process.stdout.write(chunk);
366
+ }
367
+ catch (error) {
368
+ if (error.code !== 'EPIPE') {
369
+ throw error;
370
+ }
371
+ }
372
+ }
373
+ }
374
+ }
375
+ catch (error) {
376
+ logger.warn(`Error while tailing log file: ${error}`);
377
+ }
378
+ }
379
+ const tailPromise = new Promise((resolve, reject) => {
380
+ (async () => {
381
+ try {
382
+ while (!logEnded) {
383
+ await Delay(logPollingInterval);
384
+ await readNewLogContent();
385
+ }
386
+ // Final read to capture any remaining content after tailing stops
387
+ await WaitForFileToBeUnlocked(logPath, 10000);
388
+ await readNewLogContent();
389
+ try {
390
+ process.stdout.write('\n');
391
+ }
392
+ catch (error) {
393
+ if (error.code !== 'EPIPE') {
394
+ logger.warn(`Error while writing log tail: ${error}`);
395
+ }
396
+ }
397
+ resolve();
398
+ }
399
+ catch (error) {
400
+ reject(error);
401
+ }
402
+ })();
403
+ });
404
+ function stopLogTail() {
405
+ logEnded = true;
406
+ }
407
+ return { tailPromise, stopLogTail };
408
+ }
409
+ /**
410
+ * Waits for a file to be created and become readable within a timeout.
411
+ * @param filePath The path of the file to wait for.
412
+ * @param timeout The maximum time to wait in milliseconds. Default is 30000 (30 seconds).
413
+ */
414
+ async function WaitForFileToBeCreatedAndReadable(filePath, timeout = 30000) {
415
+ const pollInterval = 100;
416
+ const deadline = Date.now() + timeout;
417
+ while (Date.now() < deadline) {
418
+ // test file access by attempting to open the file with read only access
419
+ if (await TestFileAccess(filePath, fs.constants.O_RDONLY)) {
420
+ return;
421
+ }
422
+ await Delay(pollInterval);
423
+ }
424
+ throw new Error(`Timed out waiting for file to become readable: ${filePath}`);
425
+ }
426
+ /**
427
+ * Waits for a file to be unlocked (not exclusively locked by another process).
428
+ * If the file does not exist, it is considered unlocked.
429
+ * If the file exists, attempts to open it with read/write access.
430
+ * @param filePath The path of the file to wait for.
431
+ * @param timeout The maximum time to wait in milliseconds. Default is 30000 (30 seconds).
432
+ * @returns A promise that resolves when the file is unlocked.
433
+ */
434
+ async function WaitForFileToBeUnlocked(filePath, timeout = 30000) {
435
+ const pollInterval = 100;
436
+ const deadline = Date.now() + timeout;
437
+ while (Date.now() < deadline) {
438
+ // test file access by attempting to open the file with read/write access
439
+ if (await TestFileAccess(filePath, fs.constants.O_RDWR)) {
440
+ return;
441
+ }
442
+ await Delay(pollInterval);
443
+ }
444
+ throw new Error(`Timed out waiting for file to be unlocked: ${filePath}`);
445
+ }
446
+ /**
447
+ * Tests if a file can be opened with the specified flags.
448
+ * @remarks If the file does not exist, it returns false.
449
+ * @param filePath The path of the file to test.
450
+ * @param flags The flags to use when opening the file (e.g., fs.constants.O_RDONLY).
451
+ * @returns A promise that resolves to true if the file can be opened, false otherwise.
452
+ */
453
+ async function TestFileAccess(filePath, flags) {
454
+ // expect the file to be visible and accessible
455
+ try {
456
+ await fs.promises.access(filePath, fs.constants.F_OK);
457
+ }
458
+ catch (error) {
459
+ return false;
460
+ }
461
+ let fh;
462
+ // try to open the file with the specified flags
463
+ try {
464
+ fh = await fs.promises.open(filePath, flags);
465
+ return true;
466
+ }
467
+ catch (error) {
468
+ const code = error && error.code ? error.code : null;
469
+ // These codes indicate the file is temporarily inaccessible (locked/permission) or missing.
470
+ if (code === 'EACCES' || code === 'EPERM' || code === 'EBUSY' || code === 'ETXTBSY' || code === 'ENOENT') {
471
+ return false;
472
+ }
473
+ // Unexpected error, rethrow
474
+ throw error;
475
+ }
476
+ finally {
477
+ await fh?.close();
478
+ }
479
+ }
480
+ /**
481
+ * Attempts to kill a process with the given ProcInfo.
482
+ * Escalates to SIGKILL or taskkill if the process does not exit after 5 seconds.
483
+ * @param procInfo The process information containing the PID.
484
+ * @param signal The signal to use for killing the process. Defaults to 'SIGTERM'.
485
+ */
486
+ async function KillProcess(procInfo, signal = 'SIGTERM') {
487
+ try {
488
+ logger.debug(`Killing process [${procInfo.pid}] ${procInfo.name}...`);
489
+ process.kill(procInfo.pid, signal);
490
+ // Immediately check if the process has exited
491
+ try {
492
+ process.kill(procInfo.pid, 0);
493
+ }
494
+ catch {
495
+ logger.debug(`Process [${procInfo.pid}] ${procInfo.name} has exited successfully.`);
496
+ return; // Process has exited
497
+ }
498
+ await Delay(5000); // wait 5 seconds
499
+ try {
500
+ // Check if the process is still running
501
+ process.kill(procInfo.pid, 0);
502
+ }
503
+ catch {
504
+ logger.debug(`Process [${procInfo.pid}] ${procInfo.name} has exited successfully.`);
505
+ return; // Process has exited
506
+ }
507
+ // If the process is still running, escalate to SIGKILL or taskkill to force quit.
508
+ logger.debug(`Process [${procInfo.pid}] ${procInfo.name} did not exit after ${signal}, attempting to force quit...`);
509
+ try {
510
+ if (process.platform === 'win32') {
511
+ const command = `taskkill /PID ${procInfo.pid} /F /T`;
512
+ await Exec('powershell', ['-Command', command], { silent: true, showCommand: false });
513
+ }
514
+ else { // linux and macos
515
+ process.kill(procInfo.pid, 'SIGKILL');
516
+ }
517
+ }
518
+ catch (error) {
519
+ if (error.code !== 'ENOENT' && error.code !== 'ESRCH') {
520
+ logger.error(`Failed to kill process:\n${JSON.stringify(error)}`);
521
+ throw error;
522
+ }
523
+ }
524
+ }
525
+ catch (error) {
526
+ if (error.code !== 'ENOENT' && error.code !== 'ESRCH') {
527
+ logger.error(`Failed to kill process:\n${JSON.stringify(error)}`);
528
+ throw error;
529
+ }
530
+ }
531
+ }
307
532
  /**
308
533
  * Kills all child processes of the given process.
309
534
  * @param procInfo The process information of the parent process.
310
535
  */
311
536
  async function KillChildProcesses(procInfo) {
312
- logger.debug(`Killing child processes of ${procInfo.name} with pid: ${procInfo.pid}...`);
537
+ logger.debug(`Killing child processes of [${procInfo.pid}] ${procInfo.name}...`);
313
538
  try {
314
539
  if (process.platform === 'win32') {
315
540
  const command = `Get-CimInstance Win32_Process -Filter "ParentProcessId=${procInfo.pid}" | ForEach-Object { Stop-Process -Id $_.ProcessId -Force }`;
@@ -318,17 +543,19 @@ async function KillChildProcesses(procInfo) {
318
543
  else { // linux and macos
319
544
  const psOutput = await Exec('ps', ['-eo', 'pid,ppid,comm'], { silent: true, showCommand: false });
320
545
  const lines = psOutput.split('\n').slice(1); // Skip header line
546
+ const killPromises = [];
321
547
  for (const line of lines) {
322
- const parts = line.trim().split(/\s+/, 3);
323
- if (parts.length === 3) {
324
- const pid = parseInt(parts[0], 10);
325
- const ppid = parseInt(parts[1], 10);
326
- const name = parts[2];
548
+ const match = line.trim().match(/^(\d+)\s+(\d+)\s+(.*)$/);
549
+ if (match) {
550
+ const pid = parseInt(match[1], 10);
551
+ const ppid = parseInt(match[2], 10);
552
+ const name = match[3].trim();
327
553
  if (ppid === procInfo.pid) {
328
- await TryKillProcess({ pid, ppid, name });
554
+ killPromises.push(KillProcess({ pid, ppid, name }));
329
555
  }
330
556
  }
331
557
  }
558
+ await Promise.all(killPromises);
332
559
  }
333
560
  }
334
561
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"utilities.js","sourceRoot":"","sources":["../src/utilities.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,8CAUC;AAED,oDAkBC;AAeD,oBAyEC;AAQD,oCAkBC;AAOD,0CAKC;AAQD,4CAQC;AAOD,gCAYC;AAQD,4DAQC;AAcD,wCAiBC;AAQD,kCA6BC;AAMD,gDA0BC;AAnUD,2CAA6B;AAC7B,2CAA6B;AAC7B,uCAAyB;AACzB,6CAA+B;AAC/B,mDAAqC;AACrC,uCAAyB;AACzB,iDAAsC;AACtC,uCAA6C;AAE7C,MAAM,MAAM,GAAG,gBAAM,CAAC,QAAQ,CAAC;AAE/B;;;;GAIG;AACI,KAAK,UAAU,iBAAiB,CAAC,KAAe;IACnD,MAAM,QAAQ,GAAW,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvE,MAAM,KAAK,GAAa,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAElD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,8CAA8C,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC9F,CAAC;AAEM,KAAK,UAAU,oBAAoB,CAAC,MAAc;IACrD,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;QACnC,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;YAChC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,QAAQ,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1B,mEAAmE;YACnE,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3C,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;YAC/D,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,mDAAmD;YAClE,OAAO,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AAOD;;;;;;;GAOG;AACI,KAAK,UAAU,IAAI,CAAC,OAAe,EAAE,IAAc,EAAE,UAAuB,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE;IACnH,IAAI,MAAM,GAAW,EAAE,CAAC;IACxB,IAAI,QAAQ,GAAW,CAAC,CAAC;IAEzB,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,KAAK,kBAAQ,CAAC,KAAK,CAAC;IACnD,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IAC3E,MAAM,eAAe,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;IAE3F,SAAS,aAAa,CAAC,IAAY;QAC/B,IAAI,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC;YAEhB,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;QACL,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBACzB,MAAM,KAAK,CAAC;YAChB,CAAC;QACL,CAAC;IACL,CAAC;IAED,IAAI,eAAe,EAAE,CAAC;QAClB,MAAM,UAAU,GAAG,WAAW,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;QAEjE,IAAI,QAAQ,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACJ,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAClC,CAAC;IACL,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,CAAC;QACD,QAAQ,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrD,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,OAAO,EAAE,IAAI,EAAE;gBAC/B,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;aACpC,CAAC,CAAC;YACH,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjD,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YACtC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;YACxC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;YACvC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;YACvC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBACxB,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;gBAChD,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;gBAClD,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACvB,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;gBAChD,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;gBAClD,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;YAAS,CAAC;QACP,IAAI,eAAe,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACZ,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtB,CAAC;QACL,CAAC;QAED,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,0BAA0B,QAAQ,EAAE,CAAC,CAAC;QACpE,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,YAAY,CAAC,GAAW,EAAE,YAAoB;IAChE,MAAM,CAAC,EAAE,CAAC,oBAAoB,GAAG,OAAO,YAAY,KAAK,CAAC,CAAC;IAC3D,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzE,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACxC,MAAM,IAAI,GAAG,EAAE,CAAC,iBAAiB,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACjE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE;YACxB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpB,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;gBACnB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,OAAO,EAAE,CAAC;YACd,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACrB,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,oBAAoB,KAAK,EAAE,CAAC,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,8CAA8C;IAC9C,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7C,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAClF,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,eAAe,CAAC,UAA8B;IAChE,MAAM,CAAC,KAAK,CAAC,mCAAmC,UAAU,KAAK,CAAC,CAAC;IACjE,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACnE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;IACvG,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,gBAAgB,CAAC,QAAgB;IACnD,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACzD,IAAI,CAAC;QACD,MAAM,sBAAsB,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjE,OAAO,sBAAsB,CAAC;IAClC,CAAC;YAAS,CAAC;QACP,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAgB,UAAU;IACtB,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;QAC7B,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,CAAE,CAAC;IACvC,CAAC;SAAM,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;IAClC,CAAC;SAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;IAChC,CAAC;SAAM,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;IAC/B,CAAC;IACD,gCAAgC;IAChC,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC;AACvB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,wBAAwB,CAAC,KAAa,EAAE,IAAc;IAClE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAElC,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,MAAM,KAAK,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,CAAW,CAAC;AACrC,CAAC;AAQD;;;;;GAKG;AACI,KAAK,UAAU,cAAc,CAAC,QAAkB,EAAE,SAAyB,SAAS;IACvF,IAAI,GAAuB,CAAC;IAE5B,IAAI,CAAC;QACD,MAAM,CAAC,EAAE,CAAC,oBAAoB,QAAQ,CAAC,IAAI,eAAe,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACnC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,eAAe,GAAG,KAA8B,CAAC;QACvD,MAAM,SAAS,GAAG,eAAe,EAAE,IAAI,CAAC;QAExC,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,OAAO,EAAE,CAAC;YAClD,MAAM,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACtE,CAAC;IACL,CAAC;IAED,OAAO,GAAG,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,WAAW,CAAC,WAAmB;IACjD,IAAI,QAA8B,CAAC;IACnC,IAAI,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC9B,MAAM,CAAC,KAAK,CAAC,4BAA4B,WAAW,EAAE,CAAC,CAAC;YACxD,OAAO,QAAQ,CAAC;QACpB,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC5D,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YAExD,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACb,MAAM,CAAC,KAAK,CAAC,wBAAwB,WAAW,EAAE,CAAC,CAAC;gBACpD,OAAO,QAAQ,CAAC;YACpB,CAAC;YAED,QAAQ,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,CAAC,KAAK,CAAC,4BAA4B,WAAW,KAAK,KAAK,EAAE,CAAC,CAAC;QACtE,CAAC;gBAAS,CAAC;YACP,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;YACzB,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,UAAU;IACd,CAAC;IAED,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,kBAAkB,CAAC,QAAkB;IACvD,MAAM,CAAC,KAAK,CAAC,8BAA8B,QAAQ,CAAC,IAAI,cAAc,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC;IACzF,IAAI,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,0DAA0D,QAAQ,CAAC,GAAG,6DAA6D,CAAC;YACpJ,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QACzF,CAAC;aAAM,CAAC,CAAC,kBAAkB;YACvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;YAClG,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB;YAEhE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC1C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACrB,MAAM,GAAG,GAAW,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC;oBAC5C,MAAM,IAAI,GAAW,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC;oBAC7C,MAAM,IAAI,GAAW,KAAK,CAAC,CAAC,CAAE,CAAC;oBAE/B,IAAI,IAAI,KAAK,QAAQ,CAAC,GAAG,EAAE,CAAC;wBACxB,MAAM,cAAc,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;oBAC9C,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,CAAC,KAAK,CAAC,yCAAyC,QAAQ,CAAC,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACrG,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"utilities.js","sourceRoot":"","sources":["../src/utilities.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rage-against-the-pixel/unity-cli",
3
- "version": "1.0.13",
3
+ "version": "1.1.0",
4
4
  "description": "A command line utility for the Unity Game Engine.",
5
5
  "author": "RageAgainstThePixel",
6
6
  "license": "MIT",
@@ -48,22 +48,22 @@
48
48
  "tests": "jest --roots tests"
49
49
  },
50
50
  "dependencies": {
51
- "@electron/asar": "^4.0.1",
52
- "@rage-against-the-pixel/unity-releases-api": "^1.0.2",
53
- "commander": "^14.0.1",
54
- "glob": "^11.0.3",
55
- "semver": "^7.7.2",
56
- "source-map-support": "^0.5.21",
57
- "yaml": "^2.8.1"
51
+ "@electron/asar": "4.0.1",
52
+ "@rage-against-the-pixel/unity-releases-api": "1.0.3",
53
+ "commander": "14.0.1",
54
+ "glob": "11.0.3",
55
+ "semver": "7.7.2",
56
+ "source-map-support": "0.5.21",
57
+ "yaml": "2.8.1"
58
58
  },
59
59
  "devDependencies": {
60
- "@types/commander": "^2.12.0",
61
- "@types/jest": "^30.0.0",
62
- "@types/node": "^24.5.2",
63
- "@types/semver": "^7.7.1",
64
- "jest": "^30.1.3",
65
- "ts-jest": "^29.4.4",
66
- "ts-node": "^10.9.2",
67
- "typescript": "^5.9.2"
60
+ "@types/commander": "2.12.0",
61
+ "@types/jest": "30.0.0",
62
+ "@types/node": "24.6.2",
63
+ "@types/semver": "7.7.1",
64
+ "jest": "30.2.0",
65
+ "ts-jest": "29.4.4",
66
+ "ts-node": "10.9.2",
67
+ "typescript": "5.9.3"
68
68
  }
69
69
  }