shipthis 0.1.51 → 0.1.53

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.
Files changed (105) hide show
  1. package/README.md +1 -1
  2. package/dist/{AppleBundleIdDetails-CYJTV7rc.js → AppleBundleIdDetails-CJuXU0MW.js} +4 -4
  3. package/dist/{Command-B1NFHc4L.js → Command-U8TqM6Zs.js} +2 -2
  4. package/dist/CommandGame-hqY43vRo.js +14 -0
  5. package/dist/{Create-DjfczIZY.js → Create-C--pV63B.js} +2 -2
  6. package/dist/CredentialDetailsView-DUpRMBiJ.js +131 -0
  7. package/dist/ErrorBox-DLRncz8K.js +21 -0
  8. package/dist/{GameStatus-CSPAxIN2.js → GameStatus-DRheSF2O.js} +5 -5
  9. package/dist/{Import-DO1DXHG9.js → Import-CTgEEj_f.js} +3 -3
  10. package/dist/{JobLogTail-BaugM69H.js → JobLogTail-7oEEQxIO.js} +6 -25
  11. package/dist/{JobProgress-CTMiz5ID.js → JobProgress-DwvTh5rS.js} +6 -6
  12. package/dist/{JobStatusTable-DYnPkAB5.js → JobStatusTable-DBM_PBPQ.js} +3 -3
  13. package/dist/{ProjectCredentialsTable-CrOKr18y.js → ProjectCredentialsTable-BamSpb5B.js} +2 -2
  14. package/dist/TruncatedText-DhEXCrnE.js +25 -0
  15. package/dist/{UserCredentialsTable-dLtPrYxT.js → UserCredentialsTable-N_fIOf8N.js} +2 -2
  16. package/dist/{baseAppleCommand-Bv0fJvRe.js → baseAppleCommand-oekzwny6.js} +1 -1
  17. package/dist/{baseCommand-3KTJp42t.js → baseCommand-ByzFMr-B.js} +299 -228
  18. package/dist/{baseGameAndroidCommand-DhA0oiki.js → baseGameAndroidCommand-GvH1QAja.js} +2 -2
  19. package/dist/{baseGameCommand-Cnpc7kd6.js → baseGameCommand-D8Z3SaiJ.js} +32 -17
  20. package/dist/commands/apiKey/create.js +11 -11
  21. package/dist/commands/apiKey/list.js +12 -12
  22. package/dist/commands/apiKey/revoke.js +12 -12
  23. package/dist/commands/apple/apiKey/create.js +7 -7
  24. package/dist/commands/apple/apiKey/delete.js +7 -7
  25. package/dist/commands/apple/apiKey/export.js +5 -5
  26. package/dist/commands/apple/apiKey/import.js +5 -5
  27. package/dist/commands/apple/apiKey/status.js +4 -4
  28. package/dist/commands/apple/certificate/create.js +7 -7
  29. package/dist/commands/apple/certificate/delete.js +7 -7
  30. package/dist/commands/apple/certificate/export.js +5 -5
  31. package/dist/commands/apple/certificate/import.js +5 -5
  32. package/dist/commands/apple/certificate/show.js +78 -0
  33. package/dist/commands/apple/certificate/status.js +4 -4
  34. package/dist/commands/apple/login.js +3 -3
  35. package/dist/commands/apple/status.js +3 -3
  36. package/dist/commands/dashboard.js +3 -3
  37. package/dist/commands/game/android/apiKey/connect.js +9 -8
  38. package/dist/commands/game/android/apiKey/create.js +12 -11
  39. package/dist/commands/game/android/apiKey/delete.js +7 -7
  40. package/dist/commands/game/android/apiKey/export.js +7 -7
  41. package/dist/commands/game/android/apiKey/import.js +7 -7
  42. package/dist/commands/game/android/apiKey/invite.js +7 -7
  43. package/dist/commands/game/android/apiKey/policy.js +3 -3
  44. package/dist/commands/game/android/apiKey/show.js +79 -0
  45. package/dist/commands/game/android/apiKey/status.js +7 -7
  46. package/dist/commands/game/android/keyStore/create.js +9 -8
  47. package/dist/commands/game/android/keyStore/delete.js +7 -7
  48. package/dist/commands/game/android/keyStore/export.js +6 -6
  49. package/dist/commands/game/android/keyStore/import.js +10 -9
  50. package/dist/commands/game/android/keyStore/status.js +6 -6
  51. package/dist/commands/game/android/status.js +5 -5
  52. package/dist/commands/game/build/download.js +3 -3
  53. package/dist/commands/game/build/list.js +6 -5
  54. package/dist/commands/game/create.js +3 -3
  55. package/dist/commands/game/details.js +6 -6
  56. package/dist/commands/game/export.js +3 -3
  57. package/dist/commands/game/ios/app/addTester.js +7 -7
  58. package/dist/commands/game/ios/app/create.js +6 -6
  59. package/dist/commands/game/ios/app/status.js +7 -7
  60. package/dist/commands/game/ios/app/sync.js +5 -5
  61. package/dist/commands/game/ios/profile/create.js +7 -7
  62. package/dist/commands/game/ios/profile/delete.js +7 -7
  63. package/dist/commands/game/ios/profile/export.js +6 -6
  64. package/dist/commands/game/ios/profile/import.js +6 -6
  65. package/dist/commands/game/ios/profile/show.js +78 -0
  66. package/dist/commands/game/ios/profile/status.js +7 -7
  67. package/dist/commands/game/ios/status.js +10 -9
  68. package/dist/commands/game/ios/wizard.js +3 -3
  69. package/dist/commands/game/job/list.js +6 -6
  70. package/dist/commands/game/job/logs.js +82 -0
  71. package/dist/commands/game/job/status.js +9 -8
  72. package/dist/commands/game/list.js +12 -12
  73. package/dist/commands/game/ship.js +14 -34
  74. package/dist/commands/game/status.js +6 -5
  75. package/dist/commands/game/wizard.js +42 -31
  76. package/dist/commands/internal/fastlane.js +5 -5
  77. package/dist/commands/internal/readme.js +5 -5
  78. package/dist/commands/login.js +6 -6
  79. package/dist/commands/status.js +5 -5
  80. package/dist/commands/util/android-build-method.js +5 -5
  81. package/dist/commands/util/glass.js +2 -2
  82. package/dist/{export-C2vAQt28.js → export-DQ2Qh09K.js} +1 -1
  83. package/dist/{import-CfHiiwmI.js → import-sVng7ksa.js} +1 -1
  84. package/dist/{index-BQ7Kd4ZS.js → index-DwEIHNF1.js} +4 -4
  85. package/dist/{index-CiKCvjwK.js → index-Dz17cbww.js} +5 -5
  86. package/dist/{index-BQKXikqh.js → index-N3S598Wc.js} +1 -1
  87. package/dist/{upload-D3ctOB7X.js → upload-DoiCgi3a.js} +1 -1
  88. package/dist/{useAppleApp-BVpVSPu-.js → useAppleApp-J4dx2Wyz.js} +1 -1
  89. package/dist/{useAppleBundleId-DmkQ1mJE.js → useAppleBundleId-DUdnv1T0.js} +1 -1
  90. package/dist/{useAppleProfiles-B1_ePKyQ.js → useAppleProfiles-DDdAtArV.js} +1 -1
  91. package/dist/{useGoogleStatus-8VH2hd6q.js → useGoogleStatus-DciPkOMu.js} +2 -2
  92. package/dist/{useProjectCredentials-C1Cm8a5d.js → useProjectCredentials-B4cjpmpB.js} +19 -2
  93. package/dist/{useWebSocket-C-hXW3J2.js → useWebSocket-B1hQm8Ak.js} +1 -1
  94. package/docs/apple/certificate/show.md +23 -0
  95. package/docs/apple/certificate.md +24 -0
  96. package/docs/game/android/apiKey/show.md +26 -0
  97. package/docs/game/android/apiKey.md +27 -0
  98. package/docs/game/ios/profile/show.md +26 -0
  99. package/docs/game/ios/profile.md +27 -0
  100. package/docs/game/job/logs.md +30 -0
  101. package/docs/game/job.md +31 -0
  102. package/npm-shrinkwrap.json +68 -51
  103. package/oclif.manifest.json +159 -1
  104. package/package.json +6 -2
  105. package/dist/CommandGame-Doh2LsGZ.js +0 -7
@@ -3,9 +3,8 @@ import { Flags } from '@oclif/core';
3
3
  import { render, Box } from 'ink';
4
4
  import 'node:fs';
5
5
  import 'axios';
6
- import { P as Platform } from '../../../baseCommand-3KTJp42t.js';
6
+ import { P as Platform } from '../../../baseCommand-ByzFMr-B.js';
7
7
  import 'luxon';
8
- import 'ink-spinner';
9
8
  import 'node:crypto';
10
9
  import 'node:path';
11
10
  import 'node:readline';
@@ -20,18 +19,19 @@ import 'stream';
20
19
  import 'yazl';
21
20
  import 'socket.io-client';
22
21
  import 'fullscreen-ink';
23
- import { G as GameStatusDetails } from '../../../GameStatus-CSPAxIN2.js';
22
+ import 'ink-spinner';
24
23
  import 'string-length';
25
24
  import 'strip-ansi';
25
+ import { G as GameStatusDetails } from '../../../GameStatus-DRheSF2O.js';
26
26
  import 'open';
27
27
  import '@inkjs/ui';
28
- import { c as BaseGameCommand } from '../../../baseGameCommand-Cnpc7kd6.js';
28
+ import { b as BaseGameCommand } from '../../../baseGameCommand-D8Z3SaiJ.js';
29
29
  import 'marked';
30
30
  import 'marked-terminal';
31
31
  import 'qrcode';
32
32
  import 'godot-export-presets';
33
- import { A as AppleAppDetails, a as AppleBundleIdDetails } from '../../../AppleBundleIdDetails-CYJTV7rc.js';
34
- import { C as CommandGame } from '../../../CommandGame-Doh2LsGZ.js';
33
+ import { A as AppleAppDetails, a as AppleBundleIdDetails } from '../../../AppleBundleIdDetails-CJuXU0MW.js';
34
+ import { C as CommandGame } from '../../../CommandGame-hqY43vRo.js';
35
35
  import 'chalk';
36
36
  import '@expo/apple-utils/build/index.js';
37
37
  import '../../../StatusTable-DzRWcMr4.js';
@@ -39,10 +39,11 @@ import '../../../Title-BCQtayg6.js';
39
39
  import '../../../NextSteps-DbJHmscQ.js';
40
40
  import 'fs';
41
41
  import 'path';
42
- import '../../../useAppleApp-BVpVSPu-.js';
42
+ import '../../../useAppleApp-J4dx2Wyz.js';
43
43
  import '../../../Table-FaNgpyeq.js';
44
- import '../../../useAppleBundleId-DmkQ1mJE.js';
45
- import '../../../Command-B1NFHc4L.js';
44
+ import '../../../useAppleBundleId-DUdnv1T0.js';
45
+ import '../../../ErrorBox-DLRncz8K.js';
46
+ import '../../../Command-U8TqM6Zs.js';
46
47
 
47
48
  class GameIosStatus extends BaseGameCommand {
48
49
  static args = {};
@@ -1,7 +1,7 @@
1
1
  import { Flags } from '@oclif/core';
2
2
  import chalk from 'chalk';
3
- import { k as isCWDGodotGame, W as WEB_URL, P as Platform, C as CredentialsType, l as getProject } from '../../../baseCommand-3KTJp42t.js';
4
- import { B as BaseAuthenticatedCommand, a as getRenderedMarkdown } from '../../../baseGameCommand-Cnpc7kd6.js';
3
+ import { l as isCWDGodotGame, W as WEB_URL, P as Platform, C as CredentialsType, m as getProject } from '../../../baseCommand-ByzFMr-B.js';
4
+ import { B as BaseAuthenticatedCommand, g as getRenderedMarkdown } from '../../../baseGameCommand-D8Z3SaiJ.js';
5
5
  import 'node:fs';
6
6
  import 'node:path';
7
7
  import 'node:crypto';
@@ -28,7 +28,7 @@ import 'open';
28
28
  import '@inkjs/ui';
29
29
  import 'qrcode';
30
30
  import 'godot-export-presets';
31
- import { g as getUserCredentials, a as getProjectCredentials } from '../../../index-BQKXikqh.js';
31
+ import { g as getUserCredentials, a as getProjectCredentials } from '../../../index-N3S598Wc.js';
32
32
  import '@expo/apple-utils/build/index.js';
33
33
  import 'fs';
34
34
  import 'path';
@@ -2,12 +2,14 @@ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { Flags } from '@oclif/core';
3
3
  import { render, Box, Text } from 'ink';
4
4
  import { DateTime } from 'luxon';
5
- import { z as getProjectJobs } from '../../../baseCommand-3KTJp42t.js';
5
+ import { M as getProjectJobs } from '../../../baseCommand-ByzFMr-B.js';
6
6
  import 'ink-spinner';
7
- import { c as BaseGameCommand, e as getJobSummary, f as getJobStatusColor } from '../../../baseGameCommand-Cnpc7kd6.js';
7
+ import { b as BaseGameCommand, e as getJobSummary, h as getJobStatusColor } from '../../../baseGameCommand-D8Z3SaiJ.js';
8
8
  import { T as Table } from '../../../Table-FaNgpyeq.js';
9
9
  import { T as Title } from '../../../Title-BCQtayg6.js';
10
10
  import 'react';
11
+ import 'string-length';
12
+ import 'strip-ansi';
11
13
  import '@tanstack/react-query';
12
14
  import 'axios';
13
15
  import 'node:fs';
@@ -17,8 +19,6 @@ import 'stream';
17
19
  import 'yazl';
18
20
  import 'socket.io-client';
19
21
  import 'fullscreen-ink';
20
- import 'string-length';
21
- import 'strip-ansi';
22
22
  import 'open';
23
23
  import '@inkjs/ui';
24
24
  import 'node:path';
@@ -26,14 +26,14 @@ import 'marked';
26
26
  import 'marked-terminal';
27
27
  import 'qrcode';
28
28
  import 'godot-export-presets';
29
- import { C as Command } from '../../../Command-B1NFHc4L.js';
29
+ import { C as Command } from '../../../Command-U8TqM6Zs.js';
30
30
  import 'chalk';
31
- import '@expo/apple-utils/build/index.js';
32
31
  import 'node:crypto';
33
32
  import 'node:readline';
34
33
  import 'node:url';
35
34
  import 'readline-sync';
36
35
  import 'isomorphic-git';
36
+ import '@expo/apple-utils/build/index.js';
37
37
  import 'fs';
38
38
  import 'path';
39
39
 
@@ -0,0 +1,82 @@
1
+ import { Args } from '@oclif/core';
2
+ import { N as getJob, O as getJobLogsDownloadStream } from '../../../baseCommand-ByzFMr-B.js';
3
+ import 'react/jsx-runtime';
4
+ import 'ink';
5
+ import 'ink-spinner';
6
+ import 'node:crypto';
7
+ import 'node:fs';
8
+ import 'node:path';
9
+ import 'node:readline';
10
+ import 'node:url';
11
+ import 'readline-sync';
12
+ import 'luxon';
13
+ import 'axios';
14
+ import 'isomorphic-git';
15
+ import '@tanstack/react-query';
16
+ import 'react';
17
+ import 'uuid';
18
+ import 'fast-glob';
19
+ import 'stream';
20
+ import 'yazl';
21
+ import 'socket.io-client';
22
+ import 'fullscreen-ink';
23
+ import 'string-length';
24
+ import 'strip-ansi';
25
+ import 'open';
26
+ import '@inkjs/ui';
27
+ import { b as BaseGameCommand } from '../../../baseGameCommand-D8Z3SaiJ.js';
28
+ import 'marked';
29
+ import 'marked-terminal';
30
+ import 'qrcode';
31
+ import 'godot-export-presets';
32
+ import 'chalk';
33
+ import '@expo/apple-utils/build/index.js';
34
+ import 'fs';
35
+ import 'path';
36
+
37
+ class GameJobLogs extends BaseGameCommand {
38
+ static args = {
39
+ job_id: Args.string({ description: "The id of the job to get the logs for", required: true })
40
+ };
41
+ static description = "Downloads the full plain-text logs for a job and writes them to stdout.";
42
+ static examples = [
43
+ "<%= config.bin %> <%= command.id %> 4d32239e",
44
+ "<%= config.bin %> <%= command.id %> 4d32239e > job.log",
45
+ "<%= config.bin %> <%= command.id %> 4d32239e | grep -i error",
46
+ "<%= config.bin %> <%= command.id %> --gameId 0c179fc4 4d32239e | less"
47
+ ];
48
+ static flags = {
49
+ ...super.flags
50
+ };
51
+ async getJob() {
52
+ try {
53
+ const game = await this.getGame();
54
+ const job = await getJob(this.args.job_id, game.id);
55
+ return job;
56
+ } catch (error) {
57
+ if (error?.response?.status === 404) {
58
+ this.error("Job not found - please check you have access", { exit: 1 });
59
+ }
60
+ throw error;
61
+ }
62
+ }
63
+ async run() {
64
+ const job = await this.getJob();
65
+ const handleStdoutError = (err) => {
66
+ if (err.code === "EPIPE") process.exit(0);
67
+ };
68
+ process.stdout.on("error", handleStdoutError);
69
+ try {
70
+ const stream = await getJobLogsDownloadStream(job.id, job.project.id);
71
+ for await (const chunk of stream) {
72
+ if (!process.stdout.write(chunk)) {
73
+ await new Promise((resolve) => process.stdout.once("drain", resolve));
74
+ }
75
+ }
76
+ } finally {
77
+ process.stdout.removeListener("error", handleStdoutError);
78
+ }
79
+ }
80
+ }
81
+
82
+ export { GameJobLogs as default };
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { Args, Flags } from '@oclif/core';
3
3
  import { render } from 'ink';
4
- import { E as getJob, J as JobStatus } from '../../../baseCommand-3KTJp42t.js';
4
+ import { N as getJob, J as JobStatus } from '../../../baseCommand-ByzFMr-B.js';
5
5
  import 'ink-spinner';
6
6
  import 'node:crypto';
7
7
  import 'node:fs';
@@ -20,22 +20,23 @@ import 'stream';
20
20
  import 'yazl';
21
21
  import 'socket.io-client';
22
22
  import 'fullscreen-ink';
23
- import { J as JobLogTail } from '../../../JobLogTail-BaugM69H.js';
24
- import { J as JobStatusTable } from '../../../JobStatusTable-DYnPkAB5.js';
25
- import 'open';
26
- import '@inkjs/ui';
27
23
  import 'string-length';
28
24
  import 'strip-ansi';
29
- import { c as BaseGameCommand } from '../../../baseGameCommand-Cnpc7kd6.js';
25
+ import { J as JobLogTail } from '../../../JobLogTail-7oEEQxIO.js';
26
+ import { J as JobStatusTable } from '../../../JobStatusTable-DBM_PBPQ.js';
27
+ import 'open';
28
+ import '@inkjs/ui';
29
+ import { b as BaseGameCommand } from '../../../baseGameCommand-D8Z3SaiJ.js';
30
30
  import 'marked';
31
31
  import 'marked-terminal';
32
32
  import { N as NextSteps } from '../../../NextSteps-DbJHmscQ.js';
33
33
  import 'qrcode';
34
34
  import 'godot-export-presets';
35
- import { C as Command } from '../../../Command-B1NFHc4L.js';
35
+ import { C as Command } from '../../../Command-U8TqM6Zs.js';
36
36
  import 'chalk';
37
37
  import '@expo/apple-utils/build/index.js';
38
- import '../../../useWebSocket-C-hXW3J2.js';
38
+ import '../../../useWebSocket-B1hQm8Ak.js';
39
+ import '../../../TruncatedText-DhEXCrnE.js';
39
40
  import '../../../Title-BCQtayg6.js';
40
41
  import '../../../StatusTable-DzRWcMr4.js';
41
42
  import 'fs';
@@ -1,16 +1,19 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { Flags } from '@oclif/core';
3
3
  import { render, Box, Text } from 'ink';
4
- import { g as getProjects, c as getShortDate } from '../../baseCommand-3KTJp42t.js';
5
- import { B as BaseAuthenticatedCommand, g as getShortUUID } from '../../baseGameCommand-Cnpc7kd6.js';
4
+ import { c as getProjects, g as getShortUUID, d as getShortDate } from '../../baseCommand-ByzFMr-B.js';
5
+ import { B as BaseAuthenticatedCommand } from '../../baseGameCommand-D8Z3SaiJ.js';
6
6
  import 'node:fs';
7
7
  import 'node:path';
8
8
  import 'chalk';
9
- import 'ink-spinner';
10
- import { T as Table } from '../../Table-FaNgpyeq.js';
11
- import 'react';
12
- import '@tanstack/react-query';
9
+ import 'node:crypto';
10
+ import 'node:readline';
11
+ import 'node:url';
12
+ import 'readline-sync';
13
13
  import 'axios';
14
+ import 'isomorphic-git';
15
+ import '@tanstack/react-query';
16
+ import 'react';
14
17
  import 'luxon';
15
18
  import 'uuid';
16
19
  import 'fast-glob';
@@ -18,6 +21,8 @@ import 'stream';
18
21
  import 'yazl';
19
22
  import 'socket.io-client';
20
23
  import 'fullscreen-ink';
24
+ import 'ink-spinner';
25
+ import { T as Table } from '../../Table-FaNgpyeq.js';
21
26
  import 'string-length';
22
27
  import 'strip-ansi';
23
28
  import 'open';
@@ -26,13 +31,8 @@ import 'marked';
26
31
  import 'marked-terminal';
27
32
  import 'qrcode';
28
33
  import 'godot-export-presets';
29
- import { C as Command } from '../../Command-B1NFHc4L.js';
34
+ import { C as Command } from '../../Command-U8TqM6Zs.js';
30
35
  import '@expo/apple-utils/build/index.js';
31
- import 'node:crypto';
32
- import 'node:readline';
33
- import 'node:url';
34
- import 'readline-sync';
35
- import 'isomorphic-git';
36
36
  import 'fs';
37
37
  import 'path';
38
38
 
@@ -1,8 +1,8 @@
1
1
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
2
  import { Flags } from '@oclif/core';
3
3
  import { useStdout, useStderr, Box, Text, render } from 'ink';
4
- import { a1 as LogLevel, W as WEB_URL, a2 as getShortAuthRequiredUrl, E as getJob, M as downloadBuildById } from '../../baseCommand-3KTJp42t.js';
5
- import { k as CommandContext, j as GameContext, t as useSafeInput, M as Markdown, g as getShortUUID, c as BaseGameCommand } from '../../baseGameCommand-Cnpc7kd6.js';
4
+ import { a4 as LogLevel, W as WEB_URL, g as getShortUUID, a5 as getShortAuthRequiredUrl, N as getJob, Q as downloadBuildById, a6 as getErrorMessage } from '../../baseCommand-ByzFMr-B.js';
5
+ import { j as CommandContext, d as GameContext, s as useSafeInput, M as Markdown, b as BaseGameCommand } from '../../baseGameCommand-D8Z3SaiJ.js';
6
6
  import 'ink-spinner';
7
7
  import 'node:crypto';
8
8
  import 'node:fs';
@@ -11,9 +11,9 @@ import 'node:readline';
11
11
  import 'node:url';
12
12
  import 'readline-sync';
13
13
  import 'luxon';
14
- import axios from 'axios';
15
14
  import 'isomorphic-git';
16
15
  import '@tanstack/react-query';
16
+ import 'axios';
17
17
  import { useContext, useState, useEffect } from 'react';
18
18
  import 'uuid';
19
19
  import 'fast-glob';
@@ -24,48 +24,28 @@ import 'fullscreen-ink';
24
24
  import 'string-length';
25
25
  import 'strip-ansi';
26
26
  import open from 'open';
27
- import { u as useJobWatching, J as JobLogTail } from '../../JobLogTail-BaugM69H.js';
28
- import { J as JobStatusTable } from '../../JobStatusTable-DYnPkAB5.js';
27
+ import { u as useShip, J as JobProgress } from '../../JobProgress-DwvTh5rS.js';
28
+ import { u as useJobWatching, J as JobLogTail } from '../../JobLogTail-7oEEQxIO.js';
29
+ import { J as JobStatusTable } from '../../JobStatusTable-DBM_PBPQ.js';
29
30
  import '@inkjs/ui';
30
- import { u as useShip, J as JobProgress } from '../../JobProgress-CTMiz5ID.js';
31
31
  import 'qrcode';
32
32
  import 'godot-export-presets';
33
33
  import 'marked';
34
34
  import 'marked-terminal';
35
- import { C as CommandGame } from '../../CommandGame-Doh2LsGZ.js';
35
+ import { C as CommandGame } from '../../CommandGame-hqY43vRo.js';
36
36
  import 'chalk';
37
37
  import '@expo/apple-utils/build/index.js';
38
38
  import 'fs';
39
39
  import 'path';
40
- import '../../useWebSocket-C-hXW3J2.js';
41
- import '../../Title-BCQtayg6.js';
42
- import '../../StatusTable-DzRWcMr4.js';
43
- import '../../useProjectCredentials-C1Cm8a5d.js';
40
+ import '../../useProjectCredentials-B4cjpmpB.js';
44
41
  import '../../git-BpsfNFZ_.js';
45
42
  import '../../ProgressSpinner-Um6ARKlk.js';
46
- import '../../Command-B1NFHc4L.js';
47
-
48
- function isNetworkError(exception) {
49
- if (!axios.isAxiosError(exception)) return false;
50
- return ["ECONNABORTED", "ERR_NETWORK"].includes(`${exception.code}`);
51
- }
52
- function getErrorMessage(error) {
53
- try {
54
- if (isNetworkError(error)) {
55
- return "Please check your internet connection.";
56
- }
57
- const data = error?.response?.data;
58
- const apiValidation = Array.isArray(data) ? data.map((r) => "message" in r ? `Error - ${r.message}` : r.toString()).join(" ") : "";
59
- const apiErr = error?.response?.data?.error || "";
60
- const apiMsg = `${apiErr}${apiValidation ? " " + apiValidation : ""}`;
61
- if (apiMsg.length === 0) {
62
- return "message" in error ? error.message : error.toString();
63
- }
64
- return apiMsg;
65
- } catch {
66
- return error ? error.toString() : "Error";
67
- }
68
- }
43
+ import '../../useWebSocket-B1hQm8Ak.js';
44
+ import '../../TruncatedText-DhEXCrnE.js';
45
+ import '../../Title-BCQtayg6.js';
46
+ import '../../StatusTable-DzRWcMr4.js';
47
+ import '../../ErrorBox-DLRncz8K.js';
48
+ import '../../Command-U8TqM6Zs.js';
69
49
 
70
50
  const JobFollow = ({
71
51
  jobId,
@@ -1,12 +1,12 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { Flags } from '@oclif/core';
3
3
  import { render } from 'ink';
4
- import { B as BaseAuthenticatedCommand } from '../../baseGameCommand-Cnpc7kd6.js';
4
+ import { B as BaseAuthenticatedCommand } from '../../baseGameCommand-D8Z3SaiJ.js';
5
5
  import 'node:fs';
6
6
  import 'node:path';
7
7
  import 'chalk';
8
8
  import 'axios';
9
- import '../../baseCommand-3KTJp42t.js';
9
+ import '../../baseCommand-ByzFMr-B.js';
10
10
  import 'luxon';
11
11
  import 'node:crypto';
12
12
  import 'node:readline';
@@ -22,23 +22,24 @@ import 'yazl';
22
22
  import 'socket.io-client';
23
23
  import 'fullscreen-ink';
24
24
  import 'ink-spinner';
25
- import { a as GameStatus$1 } from '../../GameStatus-CSPAxIN2.js';
26
25
  import 'string-length';
27
26
  import 'strip-ansi';
27
+ import { a as GameStatus$1 } from '../../GameStatus-DRheSF2O.js';
28
28
  import 'open';
29
29
  import '@inkjs/ui';
30
30
  import 'marked';
31
31
  import 'marked-terminal';
32
32
  import 'qrcode';
33
33
  import 'godot-export-presets';
34
- import { C as CommandGame } from '../../CommandGame-Doh2LsGZ.js';
34
+ import { C as CommandGame } from '../../CommandGame-hqY43vRo.js';
35
35
  import 'fs';
36
36
  import 'path';
37
37
  import '@expo/apple-utils/build/index.js';
38
38
  import '../../StatusTable-DzRWcMr4.js';
39
39
  import '../../Title-BCQtayg6.js';
40
40
  import '../../NextSteps-DbJHmscQ.js';
41
- import '../../Command-B1NFHc4L.js';
41
+ import '../../ErrorBox-DLRncz8K.js';
42
+ import '../../Command-U8TqM6Zs.js';
42
43
 
43
44
  class GameStatus extends BaseAuthenticatedCommand {
44
45
  static args = {};
@@ -1,12 +1,12 @@
1
1
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
2
  import { Args } from '@oclif/core';
3
3
  import { useScreenSize, withFullScreen } from 'fullscreen-ink';
4
- import { i as cacheKeys, k as CommandContext, j as GameContext, t as useSafeInput, M as Markdown, u as useBuilds, g as getShortUUID, z as queryBuilds, n as fetchKeyTestResult, K as KeyTestStatus, p as KeyTestError, G as GameProvider, A as CreateGooglePlayGame, B as BaseAuthenticatedCommand } from '../../baseGameCommand-Cnpc7kd6.js';
4
+ import { i as cacheKeys, j as CommandContext, d as GameContext, s as useSafeInput, M as Markdown, u as useBuilds, y as queryBuilds, l as fetchKeyTestResult, K as KeyTestStatus, o as KeyTestError, G as GameProvider, z as CreateGooglePlayGame, B as BaseAuthenticatedCommand } from '../../baseGameCommand-D8Z3SaiJ.js';
5
5
  import fs__default from 'node:fs';
6
6
  import 'node:path';
7
7
  import 'chalk';
8
8
  import axios from 'axios';
9
- import { H as queryClient, q as getAuthedHeaders, p as API_URL, F as castArrayObjectDates, l as getProject, ab as updateProject, v as getGodotVersion, u as GameEngine, w as createProject, x as DEFAULT_PLATFORM_GLOBS, W as WEB_URL, ac as getGradleBuildOptionKey, P as Platform, ad as BuildType, J as JobStatus, i as isGradleBuildEnabled, s as setGradleBuildEnabled, C as CredentialsType, N as getGoogleStatus, k as isCWDGodotGame } from '../../baseCommand-3KTJp42t.js';
9
+ import { F as queryClient, r as getAuthedHeaders, q as API_URL, E as castArrayObjectDates, m as getProject, af as updateProject, w as getGodotVersion, v as GameEngine, x as createProject, y as DEFAULT_PLATFORM_GLOBS, W as WEB_URL, ag as getGradleBuildOptionKey, P as Platform, ah as BuildType, J as JobStatus, g as getShortUUID, i as isGradleBuildEnabled, s as setGradleBuildEnabled, C as CredentialsType, R as getGoogleStatus, l as isCWDGodotGame } from '../../baseCommand-ByzFMr-B.js';
10
10
  import 'luxon';
11
11
  import 'node:crypto';
12
12
  import 'node:readline';
@@ -25,30 +25,32 @@ import Spinner from 'ink-spinner';
25
25
  import 'string-length';
26
26
  import 'strip-ansi';
27
27
  import 'open';
28
- import { C as ConnectGoogle } from '../../index-BQ7Kd4ZS.js';
28
+ import { C as ConnectGoogle } from '../../index-DwEIHNF1.js';
29
29
  import { TextInput, Alert } from '@inkjs/ui';
30
30
  import 'marked';
31
31
  import 'marked-terminal';
32
32
  import 'qrcode';
33
33
  import { getMajorVersion } from 'godot-export-presets';
34
- import { J as JobLogTail } from '../../JobLogTail-BaugM69H.js';
35
- import { u as useShip, J as JobProgress } from '../../JobProgress-CTMiz5ID.js';
36
- import { C as CreateServiceAccountKey } from '../../index-CiKCvjwK.js';
37
- import { C as CreateKeystore } from '../../Create-DjfczIZY.js';
38
- import { I as ImportKeystore } from '../../Import-DO1DXHG9.js';
39
- import { a as getProjectCredentials } from '../../index-BQKXikqh.js';
34
+ import { u as useShip, J as JobProgress } from '../../JobProgress-DwvTh5rS.js';
35
+ import { J as JobLogTail } from '../../JobLogTail-7oEEQxIO.js';
36
+ import { C as CreateServiceAccountKey } from '../../index-Dz17cbww.js';
37
+ import { C as CreateKeystore } from '../../Create-C--pV63B.js';
38
+ import { I as ImportKeystore } from '../../Import-CTgEEj_f.js';
39
+ import { a as getProjectCredentials } from '../../index-N3S598Wc.js';
40
40
  import { T as Title } from '../../Title-BCQtayg6.js';
41
- import { C as Command } from '../../Command-B1NFHc4L.js';
41
+ import { E as ErrorBox } from '../../ErrorBox-DLRncz8K.js';
42
+ import { C as Command } from '../../Command-U8TqM6Zs.js';
42
43
  import 'fs';
43
44
  import 'path';
44
45
  import '@expo/apple-utils/build/index.js';
45
- import '../../useWebSocket-C-hXW3J2.js';
46
- import '../../useGoogleStatus-8VH2hd6q.js';
47
- import '../../useProjectCredentials-C1Cm8a5d.js';
46
+ import '../../useWebSocket-B1hQm8Ak.js';
47
+ import '../../useGoogleStatus-DciPkOMu.js';
48
+ import '../../useProjectCredentials-B4cjpmpB.js';
48
49
  import '../../git-BpsfNFZ_.js';
49
50
  import '../../ProgressSpinner-Um6ARKlk.js';
51
+ import '../../TruncatedText-DhEXCrnE.js';
50
52
  import '../../RunWithSpinner-DucRnFp6.js';
51
- import '../../import-CfHiiwmI.js';
53
+ import '../../import-sVng7ksa.js';
52
54
 
53
55
  const useInviteServiceAccount = () => useMutation({
54
56
  async mutationFn({ developerId, projectId }) {
@@ -311,20 +313,23 @@ const InitialAndroidBuild = ({ gameId, onComplete, onError, ...boxProps }) => {
311
313
  /* @__PURE__ */ jsx(Text, { children: "Create an initial build..." }),
312
314
  (isLoadingBuilds || isLoadingJobs || shipMutation.isPending) && /* @__PURE__ */ jsx(Spinner, { type: "dots" })
313
315
  ] }),
314
- androidJob === null && /* @__PURE__ */ jsx(Text, { children: shipLog }),
315
- androidJob && /* @__PURE__ */ jsx(
316
- JobProgress,
317
- {
318
- job: androidJob,
319
- onComplete,
320
- onFailure: (j) => {
321
- setFailedJob(j);
322
- setTimeout(() => {
323
- onError(new Error(`Job ${j.id} failed`));
324
- }, 1e3);
316
+ androidJob == null && shipLog && /* @__PURE__ */ jsx(Text, { children: shipLog }),
317
+ androidJob && /* @__PURE__ */ jsxs(Fragment, { children: [
318
+ /* @__PURE__ */ jsx(
319
+ JobProgress,
320
+ {
321
+ job: androidJob,
322
+ onComplete,
323
+ onFailure: (j) => {
324
+ setFailedJob(j);
325
+ setTimeout(() => {
326
+ onError(new Error(`Job ${j.id} failed`));
327
+ }, 1e3);
328
+ }
325
329
  }
326
- }
327
- ),
330
+ ),
331
+ /* @__PURE__ */ jsx(JobLogTail, { isWatching: true, jobId: androidJob.id, length: 10, projectId: gameId })
332
+ ] }),
328
333
  failedJob && /* @__PURE__ */ jsxs(Fragment, { children: [
329
334
  /* @__PURE__ */ jsx(
330
335
  Markdown,
@@ -651,6 +656,7 @@ const AndroidWizard = (props) => {
651
656
  const [currentStepIndex, setCurrentStepIndex] = useState(null);
652
657
  const [stepStatuses, setStepStatuses] = useState(null);
653
658
  const [showSuccess, setShowSuccess] = useState(false);
659
+ const [error, setError] = useState(null);
654
660
  const determineStep = async () => {
655
661
  if (!command) return;
656
662
  const statusFlags = await getStatusFlags(command);
@@ -669,14 +675,19 @@ const AndroidWizard = (props) => {
669
675
  if (isAllDone) setTimeout(props.onComplete, ON_COMPLETE_DELAY_MS);
670
676
  };
671
677
  useEffect(() => {
672
- determineStep().catch(props.onError);
678
+ determineStep().catch(handleError);
673
679
  }, [command]);
674
- const handleStepComplete = () => determineStep().catch(props.onError);
680
+ const handleStepComplete = () => determineStep().catch(handleError);
681
+ const handleError = (e) => {
682
+ setError(e);
683
+ setTimeout(() => process.exit(1), ON_COMPLETE_DELAY_MS);
684
+ };
675
685
  const StepInterface = currentStep ? stepComponentMap[currentStep] : null;
676
686
  const templateVars = {
677
687
  docsURL: new URL("/docs", WEB_URL).toString(),
678
688
  iosSetupURL: new URL("/docs/ios", WEB_URL).toString()
679
689
  };
690
+ if (error) return /* @__PURE__ */ jsx(ErrorBox, { error });
680
691
  return /* @__PURE__ */ jsxs(GameProvider, { children: [
681
692
  /* @__PURE__ */ jsx(WizardHeader, { currentStepIndex, stepStatuses }),
682
693
  StepInterface && /* @__PURE__ */ jsx(
@@ -685,7 +696,7 @@ const AndroidWizard = (props) => {
685
696
  borderStyle: isTall && isWide ? "single" : void 0,
686
697
  margin: isTall && isWide ? 1 : 0,
687
698
  onComplete: handleStepComplete,
688
- onError: props.onError,
699
+ onError: handleError,
689
700
  padding: isTall && isWide ? 1 : 0
690
701
  }
691
702
  ),
@@ -713,7 +724,7 @@ class GameWizard extends BaseAuthenticatedCommand {
713
724
  return this.config.runCommand("game:ios:wizard");
714
725
  }
715
726
  withFullScreen(
716
- /* @__PURE__ */ jsx(Command, { command: this, children: /* @__PURE__ */ jsx(AndroidWizard, { onComplete: () => process.exit(0), onError: (e) => this.error(e) }) })
727
+ /* @__PURE__ */ jsx(Command, { command: this, children: /* @__PURE__ */ jsx(AndroidWizard, { onComplete: () => process.exit(0), onError: (e) => this.error(e.message, { exit: 1 }) }) })
717
728
  ).start();
718
729
  }
719
730
  }
@@ -2,11 +2,8 @@ import fs__default, { promises } from 'node:fs';
2
2
  import path__default from 'node:path';
3
3
  import { Args, Flags } from '@oclif/core';
4
4
  import 'axios';
5
- import { B as BaseCommand } from '../../baseCommand-3KTJp42t.js';
5
+ import { B as BaseCommand } from '../../baseCommand-ByzFMr-B.js';
6
6
  import 'luxon';
7
- import 'react/jsx-runtime';
8
- import 'ink';
9
- import 'ink-spinner';
10
7
  import 'node:crypto';
11
8
  import 'node:readline';
12
9
  import 'node:url';
@@ -20,11 +17,14 @@ import 'stream';
20
17
  import 'yazl';
21
18
  import 'socket.io-client';
22
19
  import 'fullscreen-ink';
20
+ import 'ink';
21
+ import 'react/jsx-runtime';
22
+ import 'ink-spinner';
23
23
  import 'string-length';
24
24
  import 'strip-ansi';
25
25
  import 'open';
26
26
  import '@inkjs/ui';
27
- import '../../baseGameCommand-Cnpc7kd6.js';
27
+ import '../../baseGameCommand-D8Z3SaiJ.js';
28
28
  import 'marked';
29
29
  import 'marked-terminal';
30
30
  import 'qrcode';
@@ -1,13 +1,10 @@
1
1
  import fs__default from 'node:fs';
2
2
  import path__default from 'node:path';
3
3
  import { Args, Flags } from '@oclif/core';
4
- import { q as ejs } from '../../baseGameCommand-Cnpc7kd6.js';
4
+ import { p as ejs } from '../../baseGameCommand-D8Z3SaiJ.js';
5
5
  import 'axios';
6
- import { B as BaseCommand } from '../../baseCommand-3KTJp42t.js';
6
+ import { B as BaseCommand } from '../../baseCommand-ByzFMr-B.js';
7
7
  import 'luxon';
8
- import 'react/jsx-runtime';
9
- import 'ink';
10
- import 'ink-spinner';
11
8
  import 'node:crypto';
12
9
  import 'node:readline';
13
10
  import 'node:url';
@@ -22,6 +19,9 @@ import 'stream';
22
19
  import 'yazl';
23
20
  import 'socket.io-client';
24
21
  import 'fullscreen-ink';
22
+ import 'ink';
23
+ import 'react/jsx-runtime';
24
+ import 'ink-spinner';
25
25
  import 'string-length';
26
26
  import 'strip-ansi';
27
27
  import 'open';
@@ -1,13 +1,15 @@
1
1
  import { Flags } from '@oclif/core';
2
2
  import axios from 'axios';
3
- import { W as WEB_URL, B as BaseCommand, _ as acceptTerms, p as API_URL, $ as setAuthToken } from '../baseCommand-3KTJp42t.js';
3
+ import { W as WEB_URL, B as BaseCommand, a1 as acceptTerms, q as API_URL, a2 as setAuthToken } from '../baseCommand-ByzFMr-B.js';
4
4
  import 'react/jsx-runtime';
5
5
  import 'ink';
6
6
  import 'ink-spinner';
7
- import { b as getInput } from '../baseGameCommand-Cnpc7kd6.js';
7
+ import { a as getInput } from '../baseGameCommand-D8Z3SaiJ.js';
8
8
  import 'react';
9
- import '@tanstack/react-query';
10
9
  import 'luxon';
10
+ import 'string-length';
11
+ import 'strip-ansi';
12
+ import '@tanstack/react-query';
11
13
  import 'node:fs';
12
14
  import 'uuid';
13
15
  import 'fast-glob';
@@ -15,8 +17,6 @@ import 'stream';
15
17
  import 'yazl';
16
18
  import 'socket.io-client';
17
19
  import 'fullscreen-ink';
18
- import 'string-length';
19
- import 'strip-ansi';
20
20
  import 'open';
21
21
  import '@inkjs/ui';
22
22
  import 'node:path';
@@ -25,12 +25,12 @@ import 'marked-terminal';
25
25
  import 'qrcode';
26
26
  import 'godot-export-presets';
27
27
  import 'chalk';
28
- import '@expo/apple-utils/build/index.js';
29
28
  import 'node:crypto';
30
29
  import 'node:readline';
31
30
  import 'node:url';
32
31
  import 'readline-sync';
33
32
  import 'isomorphic-git';
33
+ import '@expo/apple-utils/build/index.js';
34
34
  import 'fs';
35
35
  import 'path';
36
36