@rage-against-the-pixel/unity-cli 1.0.13 → 1.1.1
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.
- package/dist/android-sdk.js +11 -4
- package/dist/android-sdk.js.map +1 -1
- package/dist/cli.js +6 -0
- package/dist/cli.js.map +1 -1
- package/dist/license-client.js +15 -8
- package/dist/license-client.js.map +1 -1
- package/dist/logging.d.ts +2 -0
- package/dist/logging.js +60 -0
- package/dist/logging.js.map +1 -1
- package/dist/unity-editor.d.ts +21 -3
- package/dist/unity-editor.js +110 -143
- package/dist/unity-editor.js.map +1 -1
- package/dist/unity-hub.js +86 -46
- package/dist/unity-hub.js.map +1 -1
- package/dist/utilities.d.ts +56 -7
- package/dist/utilities.js +279 -52
- package/dist/utilities.js.map +1 -1
- package/package.json +16 -16
package/dist/unity-editor.js
CHANGED
|
@@ -37,16 +37,15 @@ exports.UnityEditor = void 0;
|
|
|
37
37
|
const fs = __importStar(require("fs"));
|
|
38
38
|
const path = __importStar(require("path"));
|
|
39
39
|
const logging_1 = require("./logging");
|
|
40
|
-
const utilities_1 = require("./utilities");
|
|
41
|
-
const child_process_1 = require("child_process");
|
|
42
40
|
const unity_version_1 = require("./unity-version");
|
|
41
|
+
const child_process_1 = require("child_process");
|
|
42
|
+
const utilities_1 = require("./utilities");
|
|
43
43
|
class UnityEditor {
|
|
44
44
|
editorPath;
|
|
45
45
|
version;
|
|
46
46
|
editorRootPath;
|
|
47
47
|
logger = logging_1.Logger.instance;
|
|
48
48
|
autoAddNoGraphics;
|
|
49
|
-
procInfo;
|
|
50
49
|
/**
|
|
51
50
|
* Initializes a new instance of the UnityEditor class.
|
|
52
51
|
* @param editorPath The path to the Unity Editor installation.
|
|
@@ -127,26 +126,104 @@ class UnityEditor {
|
|
|
127
126
|
}
|
|
128
127
|
return path.normalize(templatePath);
|
|
129
128
|
}
|
|
129
|
+
/**
|
|
130
|
+
* Run the Unity Editor with the specified command line arguments.
|
|
131
|
+
* @param command The command containing arguments and optional project path.
|
|
132
|
+
* @throws Will throw an error if the Unity Editor fails to start or exits with a non-zero code.
|
|
133
|
+
*/
|
|
130
134
|
async Run(command) {
|
|
131
135
|
let isCancelled = false;
|
|
132
|
-
|
|
136
|
+
let exitCode = 1;
|
|
137
|
+
let procInfo = null;
|
|
138
|
+
let logTail = null;
|
|
139
|
+
let unityProcess;
|
|
140
|
+
async function tryKillEditorProcesses() {
|
|
141
|
+
try {
|
|
142
|
+
if (procInfo) {
|
|
143
|
+
await (0, utilities_1.KillProcess)(procInfo);
|
|
144
|
+
await (0, utilities_1.KillChildProcesses)(procInfo);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
logging_1.Logger.instance.error(`Failed to kill Unity process: ${error}`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
function onCancel() {
|
|
133
152
|
isCancelled = true;
|
|
134
|
-
|
|
135
|
-
}
|
|
136
|
-
process.once('SIGINT', onCancel);
|
|
137
|
-
process.once('SIGTERM', onCancel);
|
|
138
|
-
let exitCode;
|
|
153
|
+
void tryKillEditorProcesses();
|
|
154
|
+
}
|
|
139
155
|
try {
|
|
156
|
+
if (!command.args || command.args.length === 0) {
|
|
157
|
+
throw Error('No command arguments provided for Unity execution');
|
|
158
|
+
}
|
|
159
|
+
if (!command.args.includes(`-automated`)) {
|
|
160
|
+
command.args.push(`-automated`);
|
|
161
|
+
}
|
|
162
|
+
if (!command.args.includes(`-batchmode`)) {
|
|
163
|
+
command.args.push(`-batchmode`);
|
|
164
|
+
}
|
|
165
|
+
if (this.autoAddNoGraphics &&
|
|
166
|
+
!command.args.includes(`-nographics`) &&
|
|
167
|
+
!command.args.includes(`-force-graphics`)) {
|
|
168
|
+
command.args.push(`-nographics`);
|
|
169
|
+
}
|
|
170
|
+
if (!command.args.includes('-logFile')) {
|
|
171
|
+
command.args.push('-logFile', this.GenerateLogFilePath(command.projectPath));
|
|
172
|
+
}
|
|
173
|
+
const logPath = (0, utilities_1.GetArgumentValueAsString)('-logFile', command.args);
|
|
140
174
|
const commandStr = `\x1b[34m${this.editorPath} ${command.args.join(' ')}\x1b[0m`;
|
|
141
175
|
this.logger.startGroup(commandStr);
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
176
|
+
if (process.platform === 'linux' && !command.args.includes('-nographics')) {
|
|
177
|
+
unityProcess = (0, child_process_1.spawn)('xvfb-run', [this.editorPath, ...command.args], {
|
|
178
|
+
stdio: ['ignore', 'ignore', 'ignore'],
|
|
179
|
+
env: {
|
|
180
|
+
...process.env,
|
|
181
|
+
DISPLAY: ':99',
|
|
182
|
+
UNITY_THISISABUILDMACHINE: '1'
|
|
183
|
+
}
|
|
184
|
+
});
|
|
147
185
|
}
|
|
148
|
-
|
|
149
|
-
|
|
186
|
+
else {
|
|
187
|
+
unityProcess = (0, child_process_1.spawn)(this.editorPath, command.args, {
|
|
188
|
+
stdio: ['ignore', 'ignore', 'ignore'],
|
|
189
|
+
env: {
|
|
190
|
+
...process.env,
|
|
191
|
+
UNITY_THISISABUILDMACHINE: '1'
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
if (!unityProcess?.pid) {
|
|
196
|
+
throw new Error('Failed to start Unity process!');
|
|
197
|
+
}
|
|
198
|
+
process.once('SIGINT', onCancel);
|
|
199
|
+
process.once('SIGTERM', onCancel);
|
|
200
|
+
procInfo = { pid: unityProcess.pid, ppid: process.pid, name: this.editorPath };
|
|
201
|
+
this.logger.debug(`Unity process started with pid: ${procInfo.pid}`);
|
|
202
|
+
const timeout = 10000; // 10 seconds
|
|
203
|
+
await (0, utilities_1.WaitForFileToBeCreatedAndReadable)(logPath, timeout);
|
|
204
|
+
logTail = (0, utilities_1.TailLogFile)(logPath);
|
|
205
|
+
exitCode = await new Promise((resolve, reject) => {
|
|
206
|
+
unityProcess.on('close', (code) => {
|
|
207
|
+
setTimeout(() => {
|
|
208
|
+
logTail?.stopLogTail();
|
|
209
|
+
resolve(code === null ? 1 : code);
|
|
210
|
+
}, timeout);
|
|
211
|
+
});
|
|
212
|
+
unityProcess.on('error', (error) => {
|
|
213
|
+
setTimeout(() => {
|
|
214
|
+
logTail?.stopLogTail();
|
|
215
|
+
reject(error);
|
|
216
|
+
}, timeout);
|
|
217
|
+
});
|
|
218
|
+
});
|
|
219
|
+
// Wait for log tailing to finish writing remaining content
|
|
220
|
+
if (logTail && logTail.tailPromise) {
|
|
221
|
+
try {
|
|
222
|
+
await logTail.tailPromise;
|
|
223
|
+
}
|
|
224
|
+
catch (error) {
|
|
225
|
+
this.logger.error(`Error occurred while tailing log file: ${error}`);
|
|
226
|
+
}
|
|
150
227
|
}
|
|
151
228
|
}
|
|
152
229
|
finally {
|
|
@@ -154,13 +231,18 @@ class UnityEditor {
|
|
|
154
231
|
process.removeListener('SIGTERM', onCancel);
|
|
155
232
|
this.logger.endGroup();
|
|
156
233
|
if (!isCancelled) {
|
|
157
|
-
await
|
|
234
|
+
await tryKillEditorProcesses();
|
|
158
235
|
if (exitCode !== 0) {
|
|
159
236
|
throw Error(`Unity failed with exit code ${exitCode}`);
|
|
160
237
|
}
|
|
161
238
|
}
|
|
162
239
|
}
|
|
163
240
|
}
|
|
241
|
+
/**
|
|
242
|
+
* Get or create the Logs directory within the Unity project or current working directory.
|
|
243
|
+
* @param projectPath The path to the Unity project. If undefined, uses the current working directory.
|
|
244
|
+
* @returns The path to the Logs directory.
|
|
245
|
+
*/
|
|
164
246
|
GetLogsDirectory(projectPath) {
|
|
165
247
|
const logsDir = projectPath !== undefined
|
|
166
248
|
? path.join(projectPath, 'Builds', 'Logs')
|
|
@@ -174,137 +256,22 @@ class UnityEditor {
|
|
|
174
256
|
}
|
|
175
257
|
return logsDir;
|
|
176
258
|
}
|
|
259
|
+
/**
|
|
260
|
+
* Generate a log file path with an optional prefix in the Logs directory.
|
|
261
|
+
* @param projectPath The path to the Unity project. If undefined, uses the current working directory.
|
|
262
|
+
* @param prefix An optional prefix for the log file name.
|
|
263
|
+
* @returns The generated log file path.
|
|
264
|
+
*/
|
|
177
265
|
GenerateLogFilePath(projectPath, prefix = undefined) {
|
|
178
266
|
const logsDir = this.GetLogsDirectory(projectPath);
|
|
179
267
|
const timestamp = new Date().toISOString().replace(/[-:]/g, ``).replace(/\..+/, ``);
|
|
180
268
|
return path.join(logsDir, `${prefix ? prefix + '-' : ''}Unity-${timestamp}.log`);
|
|
181
269
|
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
command.args.push(`-automated`);
|
|
188
|
-
}
|
|
189
|
-
if (!command.args.includes(`-batchmode`)) {
|
|
190
|
-
command.args.push(`-batchmode`);
|
|
191
|
-
}
|
|
192
|
-
if (this.autoAddNoGraphics &&
|
|
193
|
-
!command.args.includes(`-nographics`) &&
|
|
194
|
-
!command.args.includes(`-force-graphics`)) {
|
|
195
|
-
command.args.push(`-nographics`);
|
|
196
|
-
}
|
|
197
|
-
if (!command.args.includes('-logFile')) {
|
|
198
|
-
command.args.push('-logFile', this.GenerateLogFilePath(command.projectPath));
|
|
199
|
-
}
|
|
200
|
-
const logPath = (0, utilities_1.GetArgumentValueAsString)('-logFile', command.args);
|
|
201
|
-
let unityProcess;
|
|
202
|
-
if (process.platform === 'linux' && !command.args.includes('-nographics')) {
|
|
203
|
-
unityProcess = (0, child_process_1.spawn)('xvfb-run', [this.editorPath, ...command.args], {
|
|
204
|
-
stdio: ['ignore', 'ignore', 'ignore'],
|
|
205
|
-
detached: true,
|
|
206
|
-
env: {
|
|
207
|
-
...process.env,
|
|
208
|
-
DISPLAY: ':99',
|
|
209
|
-
UNITY_THISISABUILDMACHINE: '1'
|
|
210
|
-
}
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
else {
|
|
214
|
-
unityProcess = (0, child_process_1.spawn)(this.editorPath, command.args, {
|
|
215
|
-
stdio: ['ignore', 'ignore', 'ignore'],
|
|
216
|
-
detached: true,
|
|
217
|
-
env: {
|
|
218
|
-
...process.env,
|
|
219
|
-
UNITY_THISISABUILDMACHINE: '1'
|
|
220
|
-
}
|
|
221
|
-
});
|
|
222
|
-
}
|
|
223
|
-
const processId = unityProcess.pid;
|
|
224
|
-
if (!processId) {
|
|
225
|
-
throw new Error('Failed to start Unity process!');
|
|
226
|
-
}
|
|
227
|
-
onPid({ pid: processId, ppid: process.pid, name: this.editorPath });
|
|
228
|
-
this.logger.debug(`Unity process started with pid: ${processId}`);
|
|
229
|
-
const logPollingInterval = 100; // milliseconds
|
|
230
|
-
// Wait for log file to appear
|
|
231
|
-
while (!fs.existsSync(logPath)) {
|
|
232
|
-
await new Promise(res => setTimeout(res, logPollingInterval));
|
|
233
|
-
}
|
|
234
|
-
// Start tailing the log file
|
|
235
|
-
let lastSize = 0;
|
|
236
|
-
let logEnded = false;
|
|
237
|
-
const tailLog = async () => {
|
|
238
|
-
while (!logEnded) {
|
|
239
|
-
try {
|
|
240
|
-
const stats = fs.statSync(logPath);
|
|
241
|
-
if (stats.size > lastSize) {
|
|
242
|
-
const fd = fs.openSync(logPath, 'r');
|
|
243
|
-
const buffer = Buffer.alloc(stats.size - lastSize);
|
|
244
|
-
fs.readSync(fd, buffer, 0, buffer.length, lastSize);
|
|
245
|
-
process.stdout.write(buffer.toString('utf8'));
|
|
246
|
-
fs.closeSync(fd);
|
|
247
|
-
lastSize = stats.size;
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
catch (error) {
|
|
251
|
-
// ignore read errors
|
|
252
|
-
}
|
|
253
|
-
await new Promise(res => setTimeout(res, logPollingInterval));
|
|
254
|
-
}
|
|
255
|
-
// Write a newline at the end of the log tail
|
|
256
|
-
// prevents appending logs from being printed on the same line
|
|
257
|
-
process.stdout.write('\n');
|
|
258
|
-
};
|
|
259
|
-
const timeout = 10000; // 10 seconds
|
|
260
|
-
// Start log tailing in background
|
|
261
|
-
const tailPromise = tailLog();
|
|
262
|
-
const exitCode = await new Promise((resolve, reject) => {
|
|
263
|
-
unityProcess.on('exit', (code) => {
|
|
264
|
-
setTimeout(() => {
|
|
265
|
-
logEnded = true;
|
|
266
|
-
resolve(code ?? 1);
|
|
267
|
-
}, timeout);
|
|
268
|
-
});
|
|
269
|
-
unityProcess.on('error', (error) => {
|
|
270
|
-
setTimeout(() => {
|
|
271
|
-
logEnded = true;
|
|
272
|
-
reject(error);
|
|
273
|
-
}, timeout);
|
|
274
|
-
});
|
|
275
|
-
});
|
|
276
|
-
// Wait for log tailing to finish
|
|
277
|
-
await tailPromise;
|
|
278
|
-
// Wait for log file to be unlocked
|
|
279
|
-
const start = Date.now();
|
|
280
|
-
let fileLocked = true;
|
|
281
|
-
while (fileLocked && Date.now() - start < timeout) {
|
|
282
|
-
try {
|
|
283
|
-
if (fs.existsSync(logPath)) {
|
|
284
|
-
const fd = fs.openSync(logPath, 'r+');
|
|
285
|
-
fs.closeSync(fd);
|
|
286
|
-
fileLocked = false;
|
|
287
|
-
}
|
|
288
|
-
else {
|
|
289
|
-
fileLocked = false;
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
catch {
|
|
293
|
-
fileLocked = true;
|
|
294
|
-
await new Promise(r => setTimeout(r, logPollingInterval));
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
return exitCode;
|
|
298
|
-
}
|
|
299
|
-
async tryKillEditorProcess() {
|
|
300
|
-
if (this.procInfo) {
|
|
301
|
-
await (0, utilities_1.TryKillProcess)(this.procInfo);
|
|
302
|
-
await (0, utilities_1.KillChildProcesses)(this.procInfo);
|
|
303
|
-
}
|
|
304
|
-
else {
|
|
305
|
-
this.logger.debug('No Unity process info available to kill.');
|
|
306
|
-
}
|
|
307
|
-
}
|
|
270
|
+
/**
|
|
271
|
+
* Get the root path of the Unity Editor installation based on the provided editor path.
|
|
272
|
+
* @param editorPath The path to the Unity Editor executable.
|
|
273
|
+
* @returns The root path of the Unity Editor installation.
|
|
274
|
+
*/
|
|
308
275
|
static GetEditorRootPath(editorPath) {
|
|
309
276
|
let editorRootPath = editorPath;
|
|
310
277
|
switch (process.platform) {
|
package/dist/unity-editor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unity-editor.js","sourceRoot":"","sources":["../src/unity-editor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"unity-editor.js","sourceRoot":"","sources":["../src/unity-editor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAmC;AACnC,mDAA+C;AAC/C,iDAGuB;AACvB,2CAQqB;AAOrB,MAAa,WAAW;IAYA;IACA;IAZJ,cAAc,CAAS;IAEtB,MAAM,GAAW,gBAAM,CAAC,QAAQ,CAAC;IACjC,iBAAiB,CAAU;IAE5C;;;;OAIG;IACH,YACoB,UAAkB,EAClB,UAAoC,SAAS;QAD7C,eAAU,GAAV,UAAU,CAAQ;QAClB,YAAO,GAAP,OAAO,CAAsC;QAE7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,yCAAyC,UAAU,EAAE,CAAC,CAAC;QAC3E,CAAC;QAED,EAAE,CAAC,UAAU,CAAC,UAAU,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,cAAc,GAAG,WAAW,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAEhE,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;YAE9E,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC1B,MAAM,KAAK,CAAC,8BAA8B,UAAU,EAAE,CAAC,CAAC;YAC5D,CAAC;YAED,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAO,CAAC,KAAK,CAAC;YAE9C,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACrB,MAAM,KAAK,CAAC,gCAAgC,UAAU,EAAE,CAAC,CAAC;YAC9D,CAAC;YAED,IAAI,CAAC,OAAO,GAAG,IAAI,4BAAY,CAAC,GAAG,KAAK,CAAC,MAAO,CAAC,KAAK,IAAI,KAAK,CAAC,MAAO,CAAC,KAAK,IAAI,KAAK,CAAC,MAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5G,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACjE,CAAC;IAED;;;;;OAKG;IACI,eAAe,CAAC,QAAgB;QACnC,IAAI,WAAmB,CAAC;QACxB,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE/C,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAChC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;QACzG,CAAC;aAAM,CAAC;YACJ,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;QACnG,CAAC;QAED,yCAAyC;QACzC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;YAC3B,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,iCAAiC,WAAW,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,gDAAgD;QAChD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC;aACpC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;QAEzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,yBAAyB,WAAW,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAE9D,kHAAkH;QAClH,iDAAiD;QACjD,IAAI,KAAa,CAAC;QAClB,IAAI,CAAC;YACD,KAAK,GAAG,IAAI,MAAM,CAAC,QAAQ,GAAG,kCAAkC,CAAC,CAAC;QACtE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,wBAAwB;QACxB,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEhE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,sBAAsB,WAAW,GAAG,CAAC,CAAC;QACrE,CAAC;QAED,6EAA6E;QAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAEhC,IAAI,CAAC,YAAY,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IACxC,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,GAAG,CAAC,OAAsB;QACnC,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,QAAQ,GAAW,CAAC,CAAC;QACzB,IAAI,QAAQ,GAAoB,IAAI,CAAC;QACrC,IAAI,OAAO,GAAyB,IAAI,CAAC;QACzC,IAAI,YAAmD,CAAC;QAExD,KAAK,UAAU,sBAAsB;YACjC,IAAI,CAAC;gBACD,IAAI,QAAQ,EAAE,CAAC;oBACX,MAAM,IAAA,uBAAW,EAAC,QAAQ,CAAC,CAAC;oBAC5B,MAAM,IAAA,8BAAkB,EAAC,QAAQ,CAAC,CAAC;gBACvC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,gBAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,iCAAiC,KAAK,EAAE,CAAC,CAAC;YACpE,CAAC;QACL,CAAC;QAED,SAAS,QAAQ;YACb,WAAW,GAAG,IAAI,CAAC;YACnB,KAAK,sBAAsB,EAAE,CAAC;QAClC,CAAC;QAED,IAAI,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7C,MAAM,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACrE,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBACvC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACpC,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBACvC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACpC,CAAC;YAED,IAAI,IAAI,CAAC,iBAAiB;gBACtB,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;gBACrC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAC5C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACrC,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACrC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;YACjF,CAAC;YAED,MAAM,OAAO,GAAW,IAAA,oCAAwB,EAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3E,MAAM,UAAU,GAAG,WAAW,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;YACjF,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAEnC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;gBACxE,YAAY,GAAG,IAAA,qBAAK,EAChB,UAAU,EACV,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE;oBACpC,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;oBACrC,GAAG,EAAE;wBACD,GAAG,OAAO,CAAC,GAAG;wBACd,OAAO,EAAE,KAAK;wBACd,yBAAyB,EAAE,GAAG;qBACjC;iBACJ,CAAC,CAAC;YACP,CAAC;iBAAM,CAAC;gBACJ,YAAY,GAAG,IAAA,qBAAK,EAChB,IAAI,CAAC,UAAU,EACf,OAAO,CAAC,IAAI,EAAE;oBACd,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;oBACrC,GAAG,EAAE;wBACD,GAAG,OAAO,CAAC,GAAG;wBACd,yBAAyB,EAAE,GAAG;qBACjC;iBACJ,CAAC,CAAC;YACP,CAAC;YAED,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;YACtD,CAAC;YAED,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAClC,QAAQ,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;YAC/E,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;YACrE,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,aAAa;YACpC,MAAM,IAAA,6CAAiC,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC1D,OAAO,GAAG,IAAA,uBAAW,EAAC,OAAO,CAAC,CAAC;YAC/B,QAAQ,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC7C,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;oBAC9B,UAAU,CAAC,GAAG,EAAE;wBACZ,OAAO,EAAE,WAAW,EAAE,CAAC;wBACvB,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;oBACtC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;gBACH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;oBAC/B,UAAU,CAAC,GAAG,EAAE;wBACZ,OAAO,EAAE,WAAW,EAAE,CAAC;wBACvB,MAAM,CAAC,KAAK,CAAC,CAAC;oBAClB,CAAC,EAAE,OAAO,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;YACH,2DAA2D;YAC3D,IAAI,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBACjC,IAAI,CAAC;oBACD,MAAM,OAAO,CAAC,WAAW,CAAC;gBAC9B,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,KAAK,EAAE,CAAC,CAAC;gBACzE,CAAC;YACL,CAAC;QACL,CAAC;gBAAS,CAAC;YACP,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC3C,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAEvB,IAAI,CAAC,WAAW,EAAE,CAAC;gBACf,MAAM,sBAAsB,EAAE,CAAC;gBAE/B,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;oBACjB,MAAM,KAAK,CAAC,+BAA+B,QAAQ,EAAE,CAAC,CAAC;gBAC3D,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED;;;;OAIG;IACI,gBAAgB,CAAC,WAA+B;QACnD,MAAM,OAAO,GAAG,WAAW,KAAK,SAAS;YACrC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC;YAC1C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;QAEvE,IAAI,CAAC;YACD,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,OAAO,GAAG,CAAC,CAAC;YAChE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACI,mBAAmB,CAAC,WAA+B,EAAE,SAA6B,SAAS;QAC9F,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACpF,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,SAAS,MAAM,CAAC,CAAC;IACrF,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,iBAAiB,CAAC,UAAkB;QAC9C,IAAI,cAAc,GAAG,UAAU,CAAC;QAChC,QAAQ,OAAO,CAAC,QAAQ,EAAE,CAAC;YACvB,KAAK,QAAQ;gBACT,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;gBACvD,MAAM;YACV,KAAK,OAAO;gBACR,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBACjD,MAAM;YACV,KAAK,OAAO;gBACR,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBACjD,MAAK;QACb,CAAC;QACD,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjD,OAAO,cAAc,CAAC;IAC1B,CAAC;CACJ;AA3RD,kCA2RC"}
|
package/dist/unity-hub.js
CHANGED
|
@@ -110,58 +110,70 @@ class UnityHub {
|
|
|
110
110
|
];
|
|
111
111
|
try {
|
|
112
112
|
exitCode = await new Promise((resolve, reject) => {
|
|
113
|
-
let
|
|
113
|
+
let isSettled = false; // Has the promise been settled (resolved or rejected)?
|
|
114
|
+
let isHubTaskComplete = false; // Has the Unity Hub tasks completed successfully?
|
|
115
|
+
let lineBuffer = ''; // Buffer for incomplete lines
|
|
114
116
|
const tasksCompleteMessage = 'All Tasks Completed Successfully.';
|
|
115
117
|
const child = (0, child_process_1.spawn)(executable, execArgs, {
|
|
116
|
-
stdio: ['ignore', 'pipe', 'pipe']
|
|
117
|
-
detached: process.platform !== 'win32'
|
|
118
|
+
stdio: ['ignore', 'pipe', 'pipe']
|
|
118
119
|
});
|
|
119
120
|
const sigintHandler = () => child.kill('SIGINT');
|
|
120
121
|
const sigtermHandler = () => child.kill('SIGTERM');
|
|
121
122
|
process.once('SIGINT', sigintHandler);
|
|
122
123
|
process.once('SIGTERM', sigtermHandler);
|
|
124
|
+
let hasCleanedUpListeners = false;
|
|
123
125
|
function removeListeners() {
|
|
126
|
+
if (hasCleanedUpListeners) {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
hasCleanedUpListeners = true;
|
|
124
130
|
process.removeListener('SIGINT', sigintHandler);
|
|
125
131
|
process.removeListener('SIGTERM', sigtermHandler);
|
|
126
132
|
}
|
|
127
|
-
let forceCloseTimeout;
|
|
128
133
|
function processOutput(data) {
|
|
129
134
|
try {
|
|
130
135
|
const chunk = data.toString();
|
|
131
|
-
|
|
132
|
-
const lines =
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
136
|
+
const fullChunk = lineBuffer + chunk;
|
|
137
|
+
const lines = fullChunk.split('\n') // split by newline
|
|
138
|
+
.map(line => line.replace(/\r$/, '')) // remove trailing carriage return
|
|
139
|
+
.filter(line => line.length > 0); // filter out empty lines
|
|
140
|
+
if (!chunk.endsWith('\n')) {
|
|
141
|
+
lineBuffer = lines.pop() || '';
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
lineBuffer = '';
|
|
145
|
+
}
|
|
146
|
+
const outputLines = lines.filter(line => !ignoredLines.some(ignored => line.includes(ignored)));
|
|
147
|
+
if (outputLines.includes(tasksCompleteMessage)) {
|
|
148
|
+
isHubTaskComplete = true;
|
|
149
|
+
if (child?.pid) {
|
|
150
|
+
try {
|
|
151
|
+
child.kill('SIGTERM');
|
|
152
|
+
setTimeout(() => {
|
|
153
|
+
try {
|
|
154
|
+
if (child?.pid && !child.killed) {
|
|
155
|
+
child.kill('SIGKILL');
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
// Ignore, process may have already exited
|
|
160
|
+
}
|
|
161
|
+
}, 1000);
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
// Ignore, process may have already exited
|
|
165
|
+
}
|
|
166
|
+
finally {
|
|
167
|
+
settle(0);
|
|
168
|
+
}
|
|
137
169
|
}
|
|
138
|
-
|
|
170
|
+
}
|
|
171
|
+
for (const line of outputLines) {
|
|
172
|
+
output += `${line}\n`;
|
|
139
173
|
if (!options.silent) {
|
|
140
174
|
process.stdout.write(`${line}\n`);
|
|
141
175
|
}
|
|
142
176
|
}
|
|
143
|
-
const outputLine = outputLines.join('\n');
|
|
144
|
-
output += `${outputLine}\n`;
|
|
145
|
-
if (outputLine.includes(tasksCompleteMessage)) {
|
|
146
|
-
tasksComplete = true;
|
|
147
|
-
if (child?.pid) {
|
|
148
|
-
logging_1.Logger.instance.debug(`Unity Hub reported all tasks completed, terminating process...`);
|
|
149
|
-
const childProcInfo = { pid: child.pid, name: child.spawnfile, ppid: process.pid };
|
|
150
|
-
(0, utilities_1.KillChildProcesses)(childProcInfo).then(async () => {
|
|
151
|
-
const killedPid = await (0, utilities_1.TryKillProcess)(childProcInfo, 'SIGTERM');
|
|
152
|
-
if (!killedPid) {
|
|
153
|
-
logging_1.Logger.instance.error(`Failed to terminate Unity Hub process!`);
|
|
154
|
-
}
|
|
155
|
-
// In case the process doesn't close itself, force kill after 5 seconds
|
|
156
|
-
forceCloseTimeout = setTimeout(() => {
|
|
157
|
-
logging_1.Logger.instance.info(`Force closing Unity Hub process after timeout...`);
|
|
158
|
-
(0, utilities_1.TryKillProcess)(childProcInfo, 'SIGKILL');
|
|
159
|
-
removeListeners();
|
|
160
|
-
resolve(0);
|
|
161
|
-
}, 5000);
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
177
|
}
|
|
166
178
|
catch (error) {
|
|
167
179
|
if (error.code !== 'EPIPE') {
|
|
@@ -169,27 +181,54 @@ class UnityHub {
|
|
|
169
181
|
}
|
|
170
182
|
}
|
|
171
183
|
}
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
184
|
+
function flushOutput() {
|
|
185
|
+
try {
|
|
186
|
+
if (lineBuffer.length > 0) {
|
|
187
|
+
const lines = lineBuffer.split('\n') // split by newline
|
|
188
|
+
.map(line => line.replace(/\r$/, '')) // remove trailing carriage return
|
|
189
|
+
.filter(line => line.length > 0); // filter out empty lines
|
|
190
|
+
lineBuffer = '';
|
|
191
|
+
const outputLines = lines.filter(line => !ignoredLines.some(ignored => line.includes(ignored)));
|
|
192
|
+
if (outputLines.includes(tasksCompleteMessage)) {
|
|
193
|
+
isHubTaskComplete = true;
|
|
194
|
+
}
|
|
195
|
+
for (const line of outputLines) {
|
|
196
|
+
output += `${line}\n`;
|
|
197
|
+
if (!options.silent) {
|
|
198
|
+
process.stdout.write(`${line}\n`);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
177
202
|
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
if (forceCloseTimeout) {
|
|
183
|
-
clearTimeout(forceCloseTimeout);
|
|
203
|
+
catch (error) {
|
|
204
|
+
if (error.code !== 'EPIPE') {
|
|
205
|
+
logging_1.Logger.instance.error(`Failed to process buffered output: ${error}`);
|
|
206
|
+
}
|
|
184
207
|
}
|
|
208
|
+
}
|
|
209
|
+
function settle(code) {
|
|
210
|
+
if (isSettled) {
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
isSettled = true;
|
|
185
214
|
removeListeners();
|
|
186
|
-
|
|
215
|
+
flushOutput();
|
|
216
|
+
if (isHubTaskComplete) {
|
|
187
217
|
resolve(0);
|
|
188
218
|
}
|
|
189
219
|
else {
|
|
190
220
|
resolve(code === null ? 0 : code);
|
|
191
221
|
}
|
|
222
|
+
}
|
|
223
|
+
child.stdout.on('data', processOutput);
|
|
224
|
+
child.stderr.on('data', processOutput);
|
|
225
|
+
child.on('error', (error) => {
|
|
226
|
+
isSettled = true;
|
|
227
|
+
removeListeners();
|
|
228
|
+
flushOutput();
|
|
229
|
+
reject(error);
|
|
192
230
|
});
|
|
231
|
+
child.on('close', settle);
|
|
193
232
|
});
|
|
194
233
|
}
|
|
195
234
|
finally {
|
|
@@ -706,6 +745,7 @@ done
|
|
|
706
745
|
}
|
|
707
746
|
}
|
|
708
747
|
const request = {
|
|
748
|
+
url: '/unity/editor/release/v1/releases',
|
|
709
749
|
query: {
|
|
710
750
|
version: version,
|
|
711
751
|
architecture: [unityVersion.architecture],
|
|
@@ -714,7 +754,7 @@ done
|
|
|
714
754
|
}
|
|
715
755
|
};
|
|
716
756
|
this.logger.debug(`Get Unity Release: ${JSON.stringify(request, null, 2)}`);
|
|
717
|
-
const { data, error } = await releasesClient.api.
|
|
757
|
+
const { data, error } = await releasesClient.api.Release.getUnityReleases(request);
|
|
718
758
|
if (error) {
|
|
719
759
|
throw new Error(`Failed to get Unity releases: ${JSON.stringify(error, null, 2)}`);
|
|
720
760
|
}
|