shipthis 0.1.36 → 0.1.38

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 (101) hide show
  1. package/README.md +46 -33
  2. package/assets/markdown/confirm-delete-android-keystore.md.ejs +22 -0
  3. package/assets/markdown/confirm-delete-android-serviceaccountkey.md.ejs +24 -0
  4. package/assets/markdown/confirm-delete-apple-credential.md.ejs +29 -0
  5. package/assets/markdown/ship-success.md.ejs +4 -0
  6. package/dist/{AppleBundleIdDetails-pEVOUXTQ.js → AppleBundleIdDetails-CgleH2pl.js} +3 -3
  7. package/dist/{Command-DhAVAdiI.js → Command-7dCv1F9p.js} +1 -1
  8. package/dist/{CommandGame-C-oV-hb4.js → CommandGame-er5Ql6hq.js} +2 -2
  9. package/dist/{Create-Dg9ZlwEd.js → Create-pLXESvEq.js} +1 -1
  10. package/dist/{GameStatus-Dm9TqFfW.js → GameStatus-B_Iw9tYr.js} +1 -1
  11. package/dist/{Import-BFNNkN-I.js → Import-fIsrfsmr.js} +2 -2
  12. package/dist/{JobLogTail-RTNIiAUk.js → JobLogTail-BPcQ8ghI.js} +2 -2
  13. package/dist/{JobProgress-dFWcT0CQ.js → JobProgress-CpEatVPs.js} +10 -6
  14. package/dist/{JobStatusTable-BlvMuWF7.js → JobStatusTable-BmJLzsUN.js} +2 -2
  15. package/dist/{ProjectCredentialsTable-CMBnYLou.js → ProjectCredentialsTable-DvPDhi7C.js} +5 -3
  16. package/dist/{UserCredentialsTable-oxE3mDmE.js → UserCredentialsTable-MBm1vAP3.js} +4 -2
  17. package/dist/{baseAppleCommand-cnLvBz95.js → baseAppleCommand-uL0Gnav4.js} +1 -1
  18. package/dist/{baseGameAndroidCommand-DUDYisYm.js → baseGameAndroidCommand-CKTSQyZV.js} +1 -1
  19. package/dist/commands/apiKey/create.js +3 -2
  20. package/dist/commands/apiKey/list.js +3 -2
  21. package/dist/commands/apiKey/revoke.js +3 -2
  22. package/dist/commands/apple/apiKey/create.js +7 -6
  23. package/dist/commands/apple/apiKey/delete.js +118 -0
  24. package/dist/commands/apple/apiKey/export.js +6 -5
  25. package/dist/commands/apple/apiKey/import.js +6 -5
  26. package/dist/commands/apple/apiKey/status.js +4 -3
  27. package/dist/commands/apple/certificate/create.js +7 -6
  28. package/dist/commands/apple/certificate/delete.js +127 -0
  29. package/dist/commands/apple/certificate/export.js +6 -5
  30. package/dist/commands/apple/certificate/import.js +6 -5
  31. package/dist/commands/apple/certificate/status.js +4 -3
  32. package/dist/commands/apple/login.js +12 -3
  33. package/dist/commands/apple/status.js +3 -2
  34. package/dist/commands/dashboard.js +2 -1
  35. package/dist/commands/game/android/apiKey/connect.js +8 -7
  36. package/dist/commands/game/android/apiKey/create.js +10 -9
  37. package/dist/commands/game/android/apiKey/delete.js +100 -0
  38. package/dist/commands/game/android/apiKey/export.js +6 -5
  39. package/dist/commands/game/android/apiKey/import.js +6 -5
  40. package/dist/commands/game/android/apiKey/invite.js +3 -2
  41. package/dist/commands/game/android/apiKey/policy.js +3 -2
  42. package/dist/commands/game/android/apiKey/status.js +6 -5
  43. package/dist/commands/game/android/keyStore/create.js +7 -6
  44. package/dist/commands/game/android/keyStore/delete.js +100 -0
  45. package/dist/commands/game/android/keyStore/export.js +5 -4
  46. package/dist/commands/game/android/keyStore/import.js +8 -7
  47. package/dist/commands/game/android/keyStore/status.js +5 -4
  48. package/dist/commands/game/android/status.js +2 -1
  49. package/dist/commands/game/build/download.js +3 -2
  50. package/dist/commands/game/build/list.js +4 -3
  51. package/dist/commands/game/create.js +2 -1
  52. package/dist/commands/game/details.js +9 -5
  53. package/dist/commands/game/export.js +2 -1
  54. package/dist/commands/game/ios/app/addTester.js +4 -3
  55. package/dist/commands/game/ios/app/create.js +3 -2
  56. package/dist/commands/game/ios/app/status.js +6 -5
  57. package/dist/commands/game/ios/app/sync.js +4 -3
  58. package/dist/commands/game/ios/profile/create.js +6 -5
  59. package/dist/commands/game/ios/profile/delete.js +123 -0
  60. package/dist/commands/game/ios/profile/export.js +5 -4
  61. package/dist/commands/game/ios/profile/import.js +5 -4
  62. package/dist/commands/game/ios/profile/status.js +8 -47
  63. package/dist/commands/game/ios/status.js +8 -7
  64. package/dist/commands/game/ios/wizard.js +2 -2
  65. package/dist/commands/game/job/list.js +3 -2
  66. package/dist/commands/game/job/status.js +6 -5
  67. package/dist/commands/game/list.js +3 -2
  68. package/dist/commands/game/ship.js +18 -10
  69. package/dist/commands/game/status.js +5 -4
  70. package/dist/commands/game/wizard.js +14 -13
  71. package/dist/commands/internal/fastlane.js +2 -1
  72. package/dist/commands/internal/readme.js +2 -1
  73. package/dist/commands/login.js +2 -1
  74. package/dist/commands/status.js +2 -2
  75. package/dist/{export-Bd552LBe.js → export-BwwAjG_F.js} +1 -1
  76. package/dist/{import-D-EL9sQJ.js → import-OgFrUsqw.js} +1 -1
  77. package/dist/{index-DwATmUTQ.js → index-C1XpCT_9.js} +4 -4
  78. package/dist/index-C2omlhEs.js +48 -0
  79. package/dist/{index-BtPf4vzY.js → index-DHioYOIm.js} +6 -3
  80. package/dist/{index-DCN43FhY.js → index-DVEYxVsH.js} +3 -3
  81. package/dist/{upload-Dm38PqhN.js → upload-5s3sy2jF.js} +1 -1
  82. package/dist/{useAppleApp-BKPntZPm.js → useAppleApp-szQ_Kg5S.js} +1 -1
  83. package/dist/{useAppleBundleId-DvQKEEy4.js → useAppleBundleId-BarLcidd.js} +1 -1
  84. package/dist/useAppleProfiles-C2U4NzC3.js +63 -0
  85. package/dist/{useGoogleStatus-D9jjGa--.js → useGoogleStatus-zfnjhtNB.js} +1 -1
  86. package/dist/{useProjectCredentials-BjsS28hP.js → useProjectCredentials-DbynNY96.js} +1 -1
  87. package/dist/{useWebSocket-CIeyHqxG.js → useWebSocket-h7smqhZQ.js} +1 -1
  88. package/docs/apple/apiKey/delete.md +25 -0
  89. package/docs/apple/apiKey.md +26 -0
  90. package/docs/apple/certificate/delete.md +25 -0
  91. package/docs/apple/certificate.md +26 -0
  92. package/docs/game/android/apiKey/delete.md +25 -0
  93. package/docs/game/android/apiKey.md +26 -0
  94. package/docs/game/android/keyStore/delete.md +25 -0
  95. package/docs/game/android/keyStore.md +26 -0
  96. package/docs/game/details.md +13 -10
  97. package/docs/game/ios/profile/delete.md +26 -0
  98. package/docs/game/ios/profile.md +27 -0
  99. package/docs/game/ship.md +5 -4
  100. package/package.json +6 -1
  101. package/dist/index-1H48f5j2.js +0 -24
@@ -0,0 +1,100 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { P as Platform, C as CredentialsType, g as getShortUUID, b as getRenderedMarkdown, c as getInput } from '../../../../index-DHioYOIm.js';
3
+ import 'node:fs';
4
+ import 'axios';
5
+ import 'crypto-js';
6
+ import 'uuid';
7
+ import 'luxon';
8
+ import { a as getProjectCredentials, b as deleteProjectCredential } from '../../../../index-C2omlhEs.js';
9
+ import 'react/jsx-runtime';
10
+ import 'ink';
11
+ import 'ink-spinner';
12
+ import 'react';
13
+ import '@tanstack/react-query';
14
+ import 'fast-glob';
15
+ import 'yazl';
16
+ import 'socket.io-client';
17
+ import 'fullscreen-ink';
18
+ import 'string-length';
19
+ import 'strip-ansi';
20
+ import 'open';
21
+ import '@inkjs/ui';
22
+ import 'qrcode';
23
+ import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-CKTSQyZV.js';
24
+ import 'node:path';
25
+ import 'chalk';
26
+ import '@expo/apple-utils/build/index.js';
27
+ import 'node:crypto';
28
+ import 'node:readline';
29
+ import 'node:url';
30
+ import 'readline-sync';
31
+ import 'isomorphic-git';
32
+ import 'deepmerge';
33
+ import 'ini';
34
+ import 'fs';
35
+ import 'path';
36
+ import 'marked';
37
+ import 'marked-terminal';
38
+
39
+ class GameAndroidApiKeyDelete extends BaseGameAndroidCommand {
40
+ static args = {};
41
+ static description = "Delete the active Android API Key from ShipThis";
42
+ static examples = [
43
+ "<%= config.bin %> <%= command.id %>",
44
+ "<%= config.bin %> <%= command.id %> --immediate --iAmSure"
45
+ ];
46
+ static flags = {
47
+ ...BaseGameAndroidCommand.flags,
48
+ immediate: Flags.boolean({
49
+ char: "i",
50
+ description: "Remove from storage immediately (rather than waiting for automatic cleanup - cannot be undone)",
51
+ required: false
52
+ }),
53
+ iAmSure: Flags.boolean({
54
+ char: "y",
55
+ description: "I am sure I want to do this - do not prompt me",
56
+ required: false
57
+ })
58
+ };
59
+ async run() {
60
+ const { flags } = await this.parse(GameAndroidApiKeyDelete);
61
+ const { immediate, iAmSure } = flags;
62
+ const game = await this.getGame();
63
+ const projectCredentials = await getProjectCredentials(game.id);
64
+ const activeKeys = projectCredentials.filter(
65
+ (cred) => cred.platform === Platform.ANDROID && cred.type === CredentialsType.KEY && cred.isActive
66
+ );
67
+ if (activeKeys.length === 0) {
68
+ this.log("No active Android API Key found which can be deleted.");
69
+ return;
70
+ }
71
+ const [apiKey] = activeKeys;
72
+ const getAreYouSure = async () => {
73
+ if (iAmSure) return true;
74
+ const confirmString = getShortUUID(apiKey.id);
75
+ const prompt = getRenderedMarkdown({
76
+ filename: "confirm-delete-android-serviceaccountkey.md.ejs",
77
+ templateVars: {
78
+ confirmString,
79
+ exportCommand: `shipthis game android apiKey export apiKey.json`,
80
+ immediate
81
+ }
82
+ });
83
+ this.log(prompt);
84
+ const input = await getInput("");
85
+ return input.trim().toLowerCase() === confirmString.toLowerCase();
86
+ };
87
+ const areYouSure = await getAreYouSure();
88
+ if (!areYouSure) {
89
+ this.log("Aborting - Android API Key not deleted");
90
+ this.exit(0);
91
+ }
92
+ await deleteProjectCredential(game.id, {
93
+ credentialId: apiKey.id,
94
+ isImmediate: immediate
95
+ });
96
+ this.log("The Android API Key has been deleted from ShipThis.");
97
+ }
98
+ }
99
+
100
+ export { GameAndroidApiKeyDelete as default };
@@ -2,8 +2,8 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import * as fs from 'node:fs';
3
3
  import { Args, Flags } from '@oclif/core';
4
4
  import { render } from 'ink';
5
- import { a as getProjectCredentials } from '../../../../index-1H48f5j2.js';
6
- import { P as Platform, C as CredentialsType } from '../../../../index-BtPf4vzY.js';
5
+ import { a as getProjectCredentials } from '../../../../index-C2omlhEs.js';
6
+ import { P as Platform, C as CredentialsType } from '../../../../index-DHioYOIm.js';
7
7
  import 'ink-spinner';
8
8
  import 'node:crypto';
9
9
  import 'node:path';
@@ -29,9 +29,10 @@ import 'marked';
29
29
  import 'marked-terminal';
30
30
  import 'qrcode';
31
31
  import { R as RunWithSpinner } from '../../../../RunWithSpinner-DucRnFp6.js';
32
- import { C as Command } from '../../../../Command-DhAVAdiI.js';
33
- import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-DUDYisYm.js';
34
- import { e as exportCredential } from '../../../../export-Bd552LBe.js';
32
+ import { C as Command } from '../../../../Command-7dCv1F9p.js';
33
+ import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-CKTSQyZV.js';
34
+ import { e as exportCredential } from '../../../../export-BwwAjG_F.js';
35
+ import 'chalk';
35
36
  import '@expo/apple-utils/build/index.js';
36
37
  import 'deepmerge';
37
38
  import 'ini';
@@ -2,8 +2,8 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import * as fs from 'node:fs';
3
3
  import { Args, Flags } from '@oclif/core';
4
4
  import { render } from 'ink';
5
- import { a as getProjectCredentials } from '../../../../index-1H48f5j2.js';
6
- import { P as Platform, C as CredentialsType } from '../../../../index-BtPf4vzY.js';
5
+ import { a as getProjectCredentials } from '../../../../index-C2omlhEs.js';
6
+ import { P as Platform, C as CredentialsType } from '../../../../index-DHioYOIm.js';
7
7
  import 'ink-spinner';
8
8
  import 'node:crypto';
9
9
  import 'node:path';
@@ -29,9 +29,10 @@ import 'marked';
29
29
  import 'marked-terminal';
30
30
  import 'qrcode';
31
31
  import { R as RunWithSpinner } from '../../../../RunWithSpinner-DucRnFp6.js';
32
- import { C as Command } from '../../../../Command-DhAVAdiI.js';
33
- import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-DUDYisYm.js';
34
- import { i as importCredential } from '../../../../import-D-EL9sQJ.js';
32
+ import { C as Command } from '../../../../Command-7dCv1F9p.js';
33
+ import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-CKTSQyZV.js';
34
+ import { i as importCredential } from '../../../../import-OgFrUsqw.js';
35
+ import 'chalk';
35
36
  import '@expo/apple-utils/build/index.js';
36
37
  import 'deepmerge';
37
38
  import 'ini';
@@ -1,12 +1,13 @@
1
1
  import { Args, Flags } from '@oclif/core';
2
- import { a6 as fetchKeyTestResult, a8 as KeyTestStatus, a9 as KeyTestError, a7 as niceError, aa as inviteServiceAccount, e as getInput } from '../../../../index-BtPf4vzY.js';
3
- import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-DUDYisYm.js';
2
+ import { a6 as fetchKeyTestResult, a8 as KeyTestStatus, a9 as KeyTestError, a7 as niceError, aa as inviteServiceAccount, c as getInput } from '../../../../index-DHioYOIm.js';
3
+ import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-CKTSQyZV.js';
4
4
  import 'node:fs';
5
5
  import 'axios';
6
6
  import 'crypto-js';
7
7
  import 'uuid';
8
8
  import 'luxon';
9
9
  import 'node:path';
10
+ import 'chalk';
10
11
  import '@expo/apple-utils/build/index.js';
11
12
  import 'node:crypto';
12
13
  import 'node:readline';
@@ -1,5 +1,5 @@
1
1
  import { Flags } from '@oclif/core';
2
- import { a4 as enforcePolicy, a5 as revokePolicy, a2 as getGoogleStatus, n as getRenderedMarkdown } from '../../../../index-BtPf4vzY.js';
2
+ import { a4 as enforcePolicy, a5 as revokePolicy, a2 as getGoogleStatus, b as getRenderedMarkdown } from '../../../../index-DHioYOIm.js';
3
3
  import 'react/jsx-runtime';
4
4
  import 'ink';
5
5
  import 'ink-spinner';
@@ -24,8 +24,9 @@ import 'strip-ansi';
24
24
  import 'open';
25
25
  import '@inkjs/ui';
26
26
  import 'qrcode';
27
- import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-DUDYisYm.js';
27
+ import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-CKTSQyZV.js';
28
28
  import 'crypto-js';
29
+ import 'chalk';
29
30
  import '@expo/apple-utils/build/index.js';
30
31
  import 'deepmerge';
31
32
  import 'ini';
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { Flags } from '@oclif/core';
3
3
  import { render } from 'ink';
4
- import { a6 as fetchKeyTestResult, C as CredentialsType, P as Platform, a7 as niceError, a8 as KeyTestStatus } from '../../../../index-BtPf4vzY.js';
4
+ import { a6 as fetchKeyTestResult, C as CredentialsType, P as Platform, a7 as niceError, a8 as KeyTestStatus } from '../../../../index-DHioYOIm.js';
5
5
  import 'ink-spinner';
6
6
  import 'node:crypto';
7
7
  import 'node:fs';
@@ -24,20 +24,21 @@ import { T as Table } from '../../../../Table-FaNgpyeq.js';
24
24
  import { T as Title } from '../../../../Title-BCQtayg6.js';
25
25
  import 'string-length';
26
26
  import 'strip-ansi';
27
- import { P as ProjectCredentialsTable } from '../../../../ProjectCredentialsTable-CMBnYLou.js';
27
+ import { P as ProjectCredentialsTable } from '../../../../ProjectCredentialsTable-DvPDhi7C.js';
28
28
  import 'open';
29
29
  import '@inkjs/ui';
30
30
  import 'marked';
31
31
  import 'marked-terminal';
32
32
  import 'qrcode';
33
- import { C as Command } from '../../../../Command-DhAVAdiI.js';
34
- import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-DUDYisYm.js';
33
+ import { C as Command } from '../../../../Command-7dCv1F9p.js';
34
+ import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-CKTSQyZV.js';
35
+ import 'chalk';
35
36
  import '@expo/apple-utils/build/index.js';
36
37
  import 'deepmerge';
37
38
  import 'ini';
38
39
  import 'fs';
39
40
  import 'path';
40
- import '../../../../useProjectCredentials-BjsS28hP.js';
41
+ import '../../../../useProjectCredentials-DbynNY96.js';
41
42
 
42
43
  class GameAndroidApiKeyStatus extends BaseGameAndroidCommand {
43
44
  static args = {};
@@ -5,9 +5,9 @@ import 'node:fs';
5
5
  import 'axios';
6
6
  import 'crypto-js';
7
7
  import 'uuid';
8
- import { P as Platform, C as CredentialsType } from '../../../../index-BtPf4vzY.js';
8
+ import { P as Platform, C as CredentialsType } from '../../../../index-DHioYOIm.js';
9
9
  import 'luxon';
10
- import { a as getProjectCredentials } from '../../../../index-1H48f5j2.js';
10
+ import { a as getProjectCredentials } from '../../../../index-C2omlhEs.js';
11
11
  import 'ink-spinner';
12
12
  import 'node:crypto';
13
13
  import 'node:path';
@@ -28,16 +28,17 @@ import '@inkjs/ui';
28
28
  import 'marked';
29
29
  import 'marked-terminal';
30
30
  import 'qrcode';
31
- import { C as CreateKeystore } from '../../../../Create-Dg9ZlwEd.js';
32
- import { C as CommandGame } from '../../../../CommandGame-C-oV-hb4.js';
33
- import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-DUDYisYm.js';
31
+ import { C as CreateKeystore } from '../../../../Create-pLXESvEq.js';
32
+ import { C as CommandGame } from '../../../../CommandGame-er5Ql6hq.js';
33
+ import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-CKTSQyZV.js';
34
+ import 'chalk';
34
35
  import '@expo/apple-utils/build/index.js';
35
36
  import 'deepmerge';
36
37
  import 'ini';
37
38
  import 'fs';
38
39
  import 'path';
39
40
  import '../../../../RunWithSpinner-DucRnFp6.js';
40
- import '../../../../Command-DhAVAdiI.js';
41
+ import '../../../../Command-7dCv1F9p.js';
41
42
 
42
43
  class GameAndroidKeyStoreCreate extends BaseGameAndroidCommand {
43
44
  static args = {};
@@ -0,0 +1,100 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { P as Platform, C as CredentialsType, g as getShortUUID, b as getRenderedMarkdown, c as getInput } from '../../../../index-DHioYOIm.js';
3
+ import 'node:fs';
4
+ import 'axios';
5
+ import 'crypto-js';
6
+ import 'uuid';
7
+ import 'luxon';
8
+ import { a as getProjectCredentials, b as deleteProjectCredential } from '../../../../index-C2omlhEs.js';
9
+ import 'react/jsx-runtime';
10
+ import 'ink';
11
+ import 'ink-spinner';
12
+ import 'react';
13
+ import '@tanstack/react-query';
14
+ import 'fast-glob';
15
+ import 'yazl';
16
+ import 'socket.io-client';
17
+ import 'fullscreen-ink';
18
+ import 'string-length';
19
+ import 'strip-ansi';
20
+ import 'open';
21
+ import '@inkjs/ui';
22
+ import 'qrcode';
23
+ import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-CKTSQyZV.js';
24
+ import 'node:path';
25
+ import 'chalk';
26
+ import '@expo/apple-utils/build/index.js';
27
+ import 'node:crypto';
28
+ import 'node:readline';
29
+ import 'node:url';
30
+ import 'readline-sync';
31
+ import 'isomorphic-git';
32
+ import 'deepmerge';
33
+ import 'ini';
34
+ import 'fs';
35
+ import 'path';
36
+ import 'marked';
37
+ import 'marked-terminal';
38
+
39
+ class GameAndroidKeyStoreDelete extends BaseGameAndroidCommand {
40
+ static args = {};
41
+ static description = "Delete the active Android KeyStore from ShipThis";
42
+ static examples = [
43
+ "<%= config.bin %> <%= command.id %>",
44
+ "<%= config.bin %> <%= command.id %> --immediate --iAmSure"
45
+ ];
46
+ static flags = {
47
+ ...BaseGameAndroidCommand.flags,
48
+ immediate: Flags.boolean({
49
+ char: "i",
50
+ description: "Remove from storage immediately (rather than waiting for automatic cleanup - cannot be undone)",
51
+ required: false
52
+ }),
53
+ iAmSure: Flags.boolean({
54
+ char: "y",
55
+ description: "I am sure I want to do this - do not prompt me",
56
+ required: false
57
+ })
58
+ };
59
+ async run() {
60
+ const { flags } = await this.parse(GameAndroidKeyStoreDelete);
61
+ const { immediate, iAmSure } = flags;
62
+ const game = await this.getGame();
63
+ const projectCredentials = await getProjectCredentials(game.id);
64
+ const userAndroidKeystoreCredentials = projectCredentials.filter(
65
+ (cred) => cred.platform === Platform.ANDROID && cred.type === CredentialsType.CERTIFICATE && cred.isActive
66
+ );
67
+ if (userAndroidKeystoreCredentials.length === 0) {
68
+ this.log("No active Android keystore credentials found.");
69
+ return;
70
+ }
71
+ const [keyStore] = userAndroidKeystoreCredentials;
72
+ const getAreYouSure = async () => {
73
+ if (iAmSure) return true;
74
+ const confirmString = getShortUUID(keyStore.id);
75
+ const prompt = getRenderedMarkdown({
76
+ filename: "confirm-delete-android-keystore.md.ejs",
77
+ templateVars: {
78
+ confirmString,
79
+ exportCommand: `shipthis game android keyStore export keyStore.zip`,
80
+ immediate
81
+ }
82
+ });
83
+ this.log(prompt);
84
+ const input = await getInput("");
85
+ return input.trim().toLowerCase() === confirmString.toLowerCase();
86
+ };
87
+ const areYouSure = await getAreYouSure();
88
+ if (!areYouSure) {
89
+ this.log("Aborting - Android KeyStore not deleted");
90
+ this.exit(0);
91
+ }
92
+ await deleteProjectCredential(game.id, {
93
+ credentialId: keyStore.id,
94
+ isImmediate: immediate
95
+ });
96
+ this.log("The Android KeyStore has been deleted from ShipThis.");
97
+ }
98
+ }
99
+
100
+ export { GameAndroidKeyStoreDelete as default };
@@ -2,8 +2,8 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import * as fs from 'node:fs';
3
3
  import { Args, Flags } from '@oclif/core';
4
4
  import { render } from 'ink';
5
- import { a as getProjectCredentials } from '../../../../index-1H48f5j2.js';
6
- import { d as BaseGameCommand, P as Platform, C as CredentialsType } from '../../../../index-BtPf4vzY.js';
5
+ import { a as getProjectCredentials } from '../../../../index-C2omlhEs.js';
6
+ import { h as BaseGameCommand, P as Platform, C as CredentialsType } from '../../../../index-DHioYOIm.js';
7
7
  import 'ink-spinner';
8
8
  import 'node:crypto';
9
9
  import 'node:path';
@@ -29,8 +29,9 @@ import 'marked';
29
29
  import 'marked-terminal';
30
30
  import 'qrcode';
31
31
  import { R as RunWithSpinner } from '../../../../RunWithSpinner-DucRnFp6.js';
32
- import { C as Command } from '../../../../Command-DhAVAdiI.js';
33
- import { e as exportCredential } from '../../../../export-Bd552LBe.js';
32
+ import { C as Command } from '../../../../Command-7dCv1F9p.js';
33
+ import { e as exportCredential } from '../../../../export-BwwAjG_F.js';
34
+ import 'chalk';
34
35
  import '@expo/apple-utils/build/index.js';
35
36
  import 'deepmerge';
36
37
  import 'ini';
@@ -2,8 +2,8 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import * as fs from 'node:fs';
3
3
  import { Args, Flags } from '@oclif/core';
4
4
  import { render } from 'ink';
5
- import { a as getProjectCredentials } from '../../../../index-1H48f5j2.js';
6
- import { d as BaseGameCommand, P as Platform, C as CredentialsType } from '../../../../index-BtPf4vzY.js';
5
+ import { a as getProjectCredentials } from '../../../../index-C2omlhEs.js';
6
+ import { h as BaseGameCommand, P as Platform, C as CredentialsType } from '../../../../index-DHioYOIm.js';
7
7
  import 'ink-spinner';
8
8
  import 'node:crypto';
9
9
  import 'node:path';
@@ -28,16 +28,17 @@ import '@inkjs/ui';
28
28
  import 'marked';
29
29
  import 'marked-terminal';
30
30
  import 'qrcode';
31
- import { I as ImportKeystore } from '../../../../Import-BFNNkN-I.js';
32
- import { C as CommandGame } from '../../../../CommandGame-C-oV-hb4.js';
33
- import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-DUDYisYm.js';
31
+ import { I as ImportKeystore } from '../../../../Import-fIsrfsmr.js';
32
+ import { C as CommandGame } from '../../../../CommandGame-er5Ql6hq.js';
33
+ import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-CKTSQyZV.js';
34
+ import 'chalk';
34
35
  import '@expo/apple-utils/build/index.js';
35
36
  import 'deepmerge';
36
37
  import 'ini';
37
38
  import 'fs';
38
39
  import 'path';
39
- import '../../../../import-D-EL9sQJ.js';
40
- import '../../../../Command-DhAVAdiI.js';
40
+ import '../../../../import-OgFrUsqw.js';
41
+ import '../../../../Command-7dCv1F9p.js';
41
42
 
42
43
  class GameAndroidKeyStoreImport extends BaseGameCommand {
43
44
  static args = {
@@ -1,6 +1,6 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { render } from 'ink';
3
- import { d as BaseGameCommand, C as CredentialsType, P as Platform } from '../../../../index-BtPf4vzY.js';
3
+ import { h as BaseGameCommand, C as CredentialsType, P as Platform } from '../../../../index-DHioYOIm.js';
4
4
  import 'ink-spinner';
5
5
  import 'node:crypto';
6
6
  import 'node:fs';
@@ -22,19 +22,20 @@ import 'socket.io-client';
22
22
  import 'fullscreen-ink';
23
23
  import 'string-length';
24
24
  import 'strip-ansi';
25
- import { P as ProjectCredentialsTable } from '../../../../ProjectCredentialsTable-CMBnYLou.js';
25
+ import { P as ProjectCredentialsTable } from '../../../../ProjectCredentialsTable-DvPDhi7C.js';
26
26
  import 'open';
27
27
  import '@inkjs/ui';
28
28
  import 'marked';
29
29
  import 'marked-terminal';
30
30
  import 'qrcode';
31
- import { C as Command } from '../../../../Command-DhAVAdiI.js';
31
+ import { C as Command } from '../../../../Command-7dCv1F9p.js';
32
+ import 'chalk';
32
33
  import '@expo/apple-utils/build/index.js';
33
34
  import 'deepmerge';
34
35
  import 'ini';
35
36
  import 'fs';
36
37
  import 'path';
37
- import '../../../../useProjectCredentials-BjsS28hP.js';
38
+ import '../../../../useProjectCredentials-DbynNY96.js';
38
39
  import '../../../../Table-FaNgpyeq.js';
39
40
  import '../../../../Title-BCQtayg6.js';
40
41
 
@@ -1,11 +1,12 @@
1
1
  import { Flags } from '@oclif/core';
2
- import { d as BaseGameCommand } from '../../../index-BtPf4vzY.js';
2
+ import { h as BaseGameCommand } from '../../../index-DHioYOIm.js';
3
3
  import 'node:fs';
4
4
  import 'axios';
5
5
  import 'crypto-js';
6
6
  import 'uuid';
7
7
  import 'luxon';
8
8
  import 'node:path';
9
+ import 'chalk';
9
10
  import '@expo/apple-utils/build/index.js';
10
11
  import 'node:crypto';
11
12
  import 'node:readline';
@@ -2,7 +2,7 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import * as fs from 'node:fs';
3
3
  import { Args, Flags } from '@oclif/core';
4
4
  import { render } from 'ink';
5
- import { d as BaseGameCommand, V as downloadBuildById } from '../../../index-BtPf4vzY.js';
5
+ import { h as BaseGameCommand, a1 as downloadBuildById } from '../../../index-DHioYOIm.js';
6
6
  import 'ink-spinner';
7
7
  import 'node:crypto';
8
8
  import 'node:path';
@@ -27,8 +27,9 @@ import 'marked';
27
27
  import 'marked-terminal';
28
28
  import 'qrcode';
29
29
  import { R as RunWithSpinner } from '../../../RunWithSpinner-DucRnFp6.js';
30
- import { C as Command } from '../../../Command-DhAVAdiI.js';
30
+ import { C as Command } from '../../../Command-7dCv1F9p.js';
31
31
  import 'crypto-js';
32
+ import 'chalk';
32
33
  import '@expo/apple-utils/build/index.js';
33
34
  import 'deepmerge';
34
35
  import 'ini';
@@ -1,7 +1,7 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { Flags } from '@oclif/core';
3
3
  import { Box, Text, render } from 'ink';
4
- import { am as useBuilds, an as getBuildSummary, d as BaseGameCommand } from '../../../index-BtPf4vzY.js';
4
+ import { aq as useBuilds, ar as getBuildSummary, h as BaseGameCommand } from '../../../index-DHioYOIm.js';
5
5
  import Spinner from 'ink-spinner';
6
6
  import 'node:crypto';
7
7
  import 'node:fs';
@@ -29,13 +29,14 @@ import '@inkjs/ui';
29
29
  import 'marked';
30
30
  import 'marked-terminal';
31
31
  import 'qrcode';
32
- import { C as CommandGame } from '../../../CommandGame-C-oV-hb4.js';
32
+ import { C as CommandGame } from '../../../CommandGame-er5Ql6hq.js';
33
+ import 'chalk';
33
34
  import '@expo/apple-utils/build/index.js';
34
35
  import 'deepmerge';
35
36
  import 'ini';
36
37
  import 'fs';
37
38
  import 'path';
38
- import '../../../Command-DhAVAdiI.js';
39
+ import '../../../Command-7dCv1F9p.js';
39
40
 
40
41
  const BuildsTable = ({ queryProps, ...boxProps }) => {
41
42
  const { data, isLoading } = useBuilds(queryProps);
@@ -1,11 +1,12 @@
1
1
  import { Flags } from '@oclif/core';
2
- import { B as BaseAuthenticatedCommand, D as DetailsFlags, m as isCWDGodotGame, w as GameEngine, x as getGodotVersion, y as createProject, z as DEFAULT_SHIPPED_FILES_GLOBS, E as DEFAULT_IGNORED_FILES_GLOBS, F as getGodotProjectName, e as getInput } from '../../index-BtPf4vzY.js';
2
+ import { B as BaseAuthenticatedCommand, D as DetailsFlags, o as isCWDGodotGame, w as GameEngine, x as getGodotVersion, y as createProject, z as DEFAULT_SHIPPED_FILES_GLOBS, E as DEFAULT_IGNORED_FILES_GLOBS, F as getGodotProjectName, c as getInput } from '../../index-DHioYOIm.js';
3
3
  import 'node:fs';
4
4
  import 'axios';
5
5
  import 'crypto-js';
6
6
  import 'uuid';
7
7
  import 'luxon';
8
8
  import 'node:path';
9
+ import 'chalk';
9
10
  import '@expo/apple-utils/build/index.js';
10
11
  import 'node:crypto';
11
12
  import 'node:readline';
@@ -1,7 +1,7 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { Flags } from '@oclif/core';
3
3
  import { render } from 'ink';
4
- import { d as BaseGameCommand, D as DetailsFlags, T as isValidSemVer, w as GameEngine } from '../../index-BtPf4vzY.js';
4
+ import { h as BaseGameCommand, D as DetailsFlags, T as isValidSemVer, w as GameEngine } from '../../index-DHioYOIm.js';
5
5
  import 'ink-spinner';
6
6
  import 'react';
7
7
  import 'node:fs';
@@ -23,7 +23,8 @@ import 'node:path';
23
23
  import 'marked';
24
24
  import 'marked-terminal';
25
25
  import 'qrcode';
26
- import { C as Command } from '../../Command-DhAVAdiI.js';
26
+ import { C as Command } from '../../Command-7dCv1F9p.js';
27
+ import 'chalk';
27
28
  import '@expo/apple-utils/build/index.js';
28
29
  import 'node:crypto';
29
30
  import 'node:readline';
@@ -61,7 +62,8 @@ class GameDetails extends BaseGameCommand {
61
62
  gcpServiceAccountId,
62
63
  iosBundleId,
63
64
  name,
64
- semanticVersion
65
+ semanticVersion,
66
+ useDemoCredentials
65
67
  } = valueFlags;
66
68
  if (semanticVersion && !isValidSemVer(semanticVersion))
67
69
  throw new Error(`Invalid semantic version: ${semanticVersion}`);
@@ -79,7 +81,8 @@ class GameDetails extends BaseGameCommand {
79
81
  ...iosBundleId && { iosBundleId },
80
82
  ...androidPackageName && { androidPackageName },
81
83
  ...gcpProjectId && { gcpProjectId },
82
- ...gcpServiceAccountId && { gcpServiceAccountId }
84
+ ...gcpServiceAccountId && { gcpServiceAccountId },
85
+ ...useDemoCredentials !== void 0 && { useDemoCredentials: useDemoCredentials.toLowerCase() === "true" }
83
86
  },
84
87
  name: name || game.name
85
88
  };
@@ -99,7 +102,8 @@ class GameDetails extends BaseGameCommand {
99
102
  "Game Engine Version": game.details?.gameEngineVersion || "Please set!",
100
103
  "Game Name": game.name,
101
104
  "Semantic Version": game.details?.semanticVersion || "0.0.1",
102
- "iOS Bundle ID": game.details?.iosBundleId || "N/A"
105
+ "iOS Bundle ID": game.details?.iosBundleId || "N/A",
106
+ "Using Demo Credentials": game.details?.useDemoCredentials ? "Yes" : "No"
103
107
  },
104
108
  title: "Game Details"
105
109
  }
@@ -1,5 +1,5 @@
1
1
  import { Args, Flags } from '@oclif/core';
2
- import { B as BaseAuthenticatedCommand, m as isCWDGodotGame, O as getProject, z as DEFAULT_SHIPPED_FILES_GLOBS, E as DEFAULT_IGNORED_FILES_GLOBS } from '../../index-BtPf4vzY.js';
2
+ import { B as BaseAuthenticatedCommand, o as isCWDGodotGame, O as getProject, z as DEFAULT_SHIPPED_FILES_GLOBS, E as DEFAULT_IGNORED_FILES_GLOBS } from '../../index-DHioYOIm.js';
3
3
  import 'node:crypto';
4
4
  import 'node:fs';
5
5
  import 'node:path';
@@ -18,6 +18,7 @@ import 'socket.io-client';
18
18
  import 'fullscreen-ink';
19
19
  import 'ink';
20
20
  import 'crypto-js';
21
+ import 'chalk';
21
22
  import '@expo/apple-utils/build/index.js';
22
23
  import 'deepmerge';
23
24
  import 'ini';
@@ -1,7 +1,7 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { Flags } from '@oclif/core';
3
3
  import { render } from 'ink';
4
- import { d as BaseGameCommand, e as getInput, l as BetaGroup } from '../../../../index-BtPf4vzY.js';
4
+ import { h as BaseGameCommand, c as getInput, n as BetaGroup } from '../../../../index-DHioYOIm.js';
5
5
  import 'ink-spinner';
6
6
  import 'react';
7
7
  import 'node:fs';
@@ -10,7 +10,7 @@ import 'crypto-js';
10
10
  import 'uuid';
11
11
  import 'luxon';
12
12
  import '@tanstack/react-query';
13
- import { q as queryAppleApp } from '../../../../useAppleApp-BKPntZPm.js';
13
+ import { q as queryAppleApp } from '../../../../useAppleApp-szQ_Kg5S.js';
14
14
  import 'fast-glob';
15
15
  import 'yazl';
16
16
  import 'socket.io-client';
@@ -24,7 +24,8 @@ import 'marked';
24
24
  import 'marked-terminal';
25
25
  import 'qrcode';
26
26
  import { R as RunWithSpinner } from '../../../../RunWithSpinner-DucRnFp6.js';
27
- import { C as Command } from '../../../../Command-DhAVAdiI.js';
27
+ import { C as Command } from '../../../../Command-7dCv1F9p.js';
28
+ import 'chalk';
28
29
  import '@expo/apple-utils/build/index.js';
29
30
  import 'node:crypto';
30
31
  import 'node:readline';
@@ -1,7 +1,7 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { Flags } from '@oclif/core';
3
3
  import { render } from 'ink';
4
- import { d as BaseGameCommand, e as getInput, f as generatePackageName, h as getGodotAppleBundleIdentifier, i as BundleId, j as App } from '../../../../index-BtPf4vzY.js';
4
+ import { h as BaseGameCommand, c as getInput, i as generatePackageName, j as getGodotAppleBundleIdentifier, k as BundleId, l as App } from '../../../../index-DHioYOIm.js';
5
5
  import 'ink-spinner';
6
6
  import 'react';
7
7
  import 'node:fs';
@@ -23,7 +23,8 @@ import 'marked';
23
23
  import 'marked-terminal';
24
24
  import 'qrcode';
25
25
  import { R as RunWithSpinner } from '../../../../RunWithSpinner-DucRnFp6.js';
26
- import { C as Command } from '../../../../Command-DhAVAdiI.js';
26
+ import { C as Command } from '../../../../Command-7dCv1F9p.js';
27
+ import 'chalk';
27
28
  import '@expo/apple-utils/build/index.js';
28
29
  import 'node:crypto';
29
30
  import 'node:readline';