shipthis 0.1.41 → 0.1.42

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 (92) hide show
  1. package/README.md +1 -0
  2. package/assets/markdown/confirm-change-android-build-method.md.ejs +13 -0
  3. package/dist/{AppleBundleIdDetails-BJC7GCx_.js → AppleBundleIdDetails-jDq3gYbk.js} +7 -6
  4. package/dist/{Command-Cj6F5B5a.js → Command-cVo97lkQ.js} +2 -2
  5. package/dist/{CommandGame-CuvuH-z6.js → CommandGame-BwudtYCO.js} +2 -2
  6. package/dist/{Create-pfGYcKu4.js → Create-By4NsPEI.js} +3 -2
  7. package/dist/{GameStatus-ZSe-qG3y.js → GameStatus-C59zQE1H.js} +3 -2
  8. package/dist/{Import-D046HBaF.js → Import-DTcVM-T-.js} +4 -3
  9. package/dist/{JobLogTail-Da8GuReK.js → JobLogTail-BzisGkY8.js} +30 -17
  10. package/dist/{JobProgress-DltCQpzA.js → JobProgress-DAnhaTho.js} +21 -10
  11. package/dist/{JobStatusTable-DVJjHw97.js → JobStatusTable-BYEi8dtD.js} +3 -3
  12. package/dist/{ProjectCredentialsTable-BJJz7W1P.js → ProjectCredentialsTable-NZf3V39z.js} +2 -2
  13. package/dist/{UserCredentialsTable-CSynIVHU.js → UserCredentialsTable-Dp884nYO.js} +2 -2
  14. package/dist/{baseAppleCommand-Aq-Eaw_K.js → baseAppleCommand-DewNWX3L.js} +1 -1
  15. package/dist/{baseCommand-CTn3KGH3.js → baseCommand-CscxrTMI.js} +80 -110
  16. package/dist/{baseGameAndroidCommand-DRzVMKuG.js → baseGameAndroidCommand-CEcDz5P2.js} +4 -3
  17. package/dist/{baseGameCommand-8VL7xe-O.js → baseGameCommand-BKvHM3h_.js} +3 -2
  18. package/dist/commands/apiKey/create.js +4 -5
  19. package/dist/commands/apiKey/list.js +4 -5
  20. package/dist/commands/apiKey/revoke.js +4 -5
  21. package/dist/commands/apple/apiKey/create.js +7 -8
  22. package/dist/commands/apple/apiKey/delete.js +5 -6
  23. package/dist/commands/apple/apiKey/export.js +6 -7
  24. package/dist/commands/apple/apiKey/import.js +6 -7
  25. package/dist/commands/apple/apiKey/status.js +5 -6
  26. package/dist/commands/apple/certificate/create.js +7 -8
  27. package/dist/commands/apple/certificate/delete.js +5 -6
  28. package/dist/commands/apple/certificate/export.js +6 -7
  29. package/dist/commands/apple/certificate/import.js +6 -7
  30. package/dist/commands/apple/certificate/status.js +5 -6
  31. package/dist/commands/apple/login.js +3 -4
  32. package/dist/commands/apple/status.js +4 -5
  33. package/dist/commands/dashboard.js +3 -4
  34. package/dist/commands/game/android/apiKey/connect.js +9 -10
  35. package/dist/commands/game/android/apiKey/create.js +11 -12
  36. package/dist/commands/game/android/apiKey/delete.js +5 -6
  37. package/dist/commands/game/android/apiKey/export.js +7 -8
  38. package/dist/commands/game/android/apiKey/import.js +7 -8
  39. package/dist/commands/game/android/apiKey/invite.js +4 -5
  40. package/dist/commands/game/android/apiKey/policy.js +4 -5
  41. package/dist/commands/game/android/apiKey/status.js +7 -8
  42. package/dist/commands/game/android/keyStore/create.js +8 -9
  43. package/dist/commands/game/android/keyStore/delete.js +5 -6
  44. package/dist/commands/game/android/keyStore/export.js +6 -7
  45. package/dist/commands/game/android/keyStore/import.js +9 -10
  46. package/dist/commands/game/android/keyStore/status.js +6 -7
  47. package/dist/commands/game/android/status.js +3 -4
  48. package/dist/commands/game/build/download.js +4 -5
  49. package/dist/commands/game/build/list.js +5 -6
  50. package/dist/commands/game/create.js +3 -4
  51. package/dist/commands/game/details.js +4 -5
  52. package/dist/commands/game/export.js +3 -4
  53. package/dist/commands/game/ios/app/addTester.js +5 -6
  54. package/dist/commands/game/ios/app/create.js +6 -6
  55. package/dist/commands/game/ios/app/status.js +7 -8
  56. package/dist/commands/game/ios/app/sync.js +5 -6
  57. package/dist/commands/game/ios/profile/create.js +7 -8
  58. package/dist/commands/game/ios/profile/delete.js +5 -6
  59. package/dist/commands/game/ios/profile/export.js +6 -7
  60. package/dist/commands/game/ios/profile/import.js +6 -7
  61. package/dist/commands/game/ios/profile/status.js +7 -8
  62. package/dist/commands/game/ios/status.js +9 -10
  63. package/dist/commands/game/ios/wizard.js +4 -5
  64. package/dist/commands/game/job/list.js +4 -5
  65. package/dist/commands/game/job/status.js +9 -10
  66. package/dist/commands/game/list.js +4 -5
  67. package/dist/commands/game/ship.js +30 -14
  68. package/dist/commands/game/status.js +6 -7
  69. package/dist/commands/game/wizard.js +78 -29
  70. package/dist/commands/internal/fastlane.js +3 -4
  71. package/dist/commands/internal/readme.js +3 -4
  72. package/dist/commands/login.js +3 -4
  73. package/dist/commands/status.js +4 -5
  74. package/dist/commands/util/android-build-method.js +66 -0
  75. package/dist/commands/util/glass.js +2 -3
  76. package/dist/{export-DtATljiz.js → export-DBQHSKU-.js} +1 -1
  77. package/dist/{import-Dk2ywOVU.js → import-Bk4w8kks.js} +1 -1
  78. package/dist/{index-cRnjcGxV.js → index-WrVwh6le.js} +6 -5
  79. package/dist/{index-BW7z-5sB.js → index-qOGviaGc.js} +1 -1
  80. package/dist/{index-CuyVBHWc.js → index-zdIBXHs2.js} +5 -4
  81. package/dist/{upload-CHaDSvvi.js → upload-CeRPHRCP.js} +1 -1
  82. package/dist/{useAppleApp-CR847GWc.js → useAppleApp-DgZH0CBS.js} +1 -1
  83. package/dist/{useAppleBundleId-BnwPmVEu.js → useAppleBundleId-CA7Pg4Hi.js} +2 -2
  84. package/dist/{useAppleProfiles-DY-H0420.js → useAppleProfiles-CUBTPbcC.js} +1 -1
  85. package/dist/{useGoogleStatus-WqPgHteE.js → useGoogleStatus-DpPwKmw_.js} +2 -2
  86. package/dist/{useProjectCredentials-TvlolkId.js → useProjectCredentials-rQLm2O1J.js} +2 -2
  87. package/dist/{useWebSocket-MXDbQHcu.js → useWebSocket-PU55rRGt.js} +1 -1
  88. package/docs/util/android-build-method.md +26 -0
  89. package/docs/util.md +2 -1
  90. package/npm-shrinkwrap.json +14181 -0
  91. package/oclif.manifest.json +2966 -0
  92. package/package.json +9 -6
@@ -1,14 +1,14 @@
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-8VL7xe-O.js';
4
+ import { B as BaseAuthenticatedCommand } from '../../baseGameCommand-BKvHM3h_.js';
5
5
  import 'node:fs';
6
6
  import 'node:path';
7
7
  import 'chalk';
8
8
  import 'axios';
9
9
  import 'crypto-js';
10
10
  import 'uuid';
11
- import '../../baseCommand-CTn3KGH3.js';
11
+ import '../../baseCommand-CscxrTMI.js';
12
12
  import 'luxon';
13
13
  import 'node:crypto';
14
14
  import 'node:readline';
@@ -22,7 +22,7 @@ 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-ZSe-qG3y.js';
25
+ import { a as GameStatus$1 } from '../../GameStatus-C59zQE1H.js';
26
26
  import 'string-length';
27
27
  import 'strip-ansi';
28
28
  import 'open';
@@ -30,16 +30,15 @@ import '@inkjs/ui';
30
30
  import 'marked';
31
31
  import 'marked-terminal';
32
32
  import 'qrcode';
33
- import { C as CommandGame } from '../../CommandGame-CuvuH-z6.js';
33
+ import 'godot-export-presets';
34
+ import { C as CommandGame } from '../../CommandGame-BwudtYCO.js';
34
35
  import 'fs';
35
36
  import 'path';
36
37
  import '@expo/apple-utils/build/index.js';
37
- import 'deepmerge';
38
- import 'ini';
39
38
  import '../../StatusTable-DzRWcMr4.js';
40
39
  import '../../Title-BCQtayg6.js';
41
40
  import '../../NextSteps-DbJHmscQ.js';
42
- import '../../Command-Cj6F5B5a.js';
41
+ import '../../Command-cVo97lkQ.js';
43
42
 
44
43
  class GameStatus extends BaseAuthenticatedCommand {
45
44
  static args = {};
@@ -1,14 +1,14 @@
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 { k as cacheKeys, C as CommandContext, G as GameContext, u as useBuilds, M as Markdown, g as getShortUUID, w as useSafeInput, z as queryBuilds, n as fetchKeyTestResult, K as KeyTestStatus, p as KeyTestError, j as GameProvider, A as CreateGooglePlayGame, B as BaseAuthenticatedCommand } from '../../baseGameCommand-8VL7xe-O.js';
4
+ import { k as cacheKeys, j as CommandContext, i as GameContext, v as useBuilds, M as Markdown, g as getShortUUID, x as useSafeInput, z as queryBuilds, n as fetchKeyTestResult, K as KeyTestStatus, p as KeyTestError, G as GameProvider, A as CreateGooglePlayGame, B as BaseAuthenticatedCommand } from '../../baseGameCommand-BKvHM3h_.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
9
  import 'crypto-js';
10
10
  import 'uuid';
11
- import { H as queryClient, p as getAuthedHeaders, o as API_URL, F as castArrayObjectDates, k as getProject, a8 as updateProject, t as getGodotVersion, s as GameEngine, u as createProject, v as DEFAULT_SHIPPED_FILES_GLOBS, w as DEFAULT_IGNORED_FILES_GLOBS, P as Platform, J as JobStatus, W as WEB_URL, C as CredentialsType, M as getGoogleStatus, j as isCWDGodotGame } from '../../baseCommand-CTn3KGH3.js';
11
+ import { I as queryClient, q as getAuthedHeaders, p as API_URL, H as castArrayObjectDates, l as getProject, aa as updateProject, v as getGodotVersion, u as GameEngine, w as createProject, x as DEFAULT_SHIPPED_FILES_GLOBS, y as DEFAULT_IGNORED_FILES_GLOBS, P as Platform, ab as BuildType, J as JobStatus, W as WEB_URL, ac as getGradleBuildOptionKey, i as isGradleBuildEnabled, s as setGradleBuildEnabled, C as CredentialsType, O as getGoogleStatus, k as isCWDGodotGame } from '../../baseCommand-CscxrTMI.js';
12
12
  import 'luxon';
13
13
  import 'node:crypto';
14
14
  import 'node:readline';
@@ -25,31 +25,30 @@ 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-CuyVBHWc.js';
28
+ import { C as ConnectGoogle } from '../../index-zdIBXHs2.js';
29
29
  import { TextInput, Alert } from '@inkjs/ui';
30
30
  import 'marked';
31
31
  import 'marked-terminal';
32
32
  import 'qrcode';
33
- import { J as JobLogTail } from '../../JobLogTail-Da8GuReK.js';
34
- import { u as useShip, J as JobProgress } from '../../JobProgress-DltCQpzA.js';
35
- import { C as CreateServiceAccountKey } from '../../index-cRnjcGxV.js';
36
- import { C as CreateKeystore } from '../../Create-pfGYcKu4.js';
37
- import { I as ImportKeystore } from '../../Import-D046HBaF.js';
38
- import { a as getProjectCredentials } from '../../index-BW7z-5sB.js';
33
+ import { getMajorVersion } from 'godot-export-presets';
34
+ import { J as JobLogTail } from '../../JobLogTail-BzisGkY8.js';
35
+ import { u as useShip, J as JobProgress } from '../../JobProgress-DAnhaTho.js';
36
+ import { C as CreateServiceAccountKey } from '../../index-WrVwh6le.js';
37
+ import { C as CreateKeystore } from '../../Create-By4NsPEI.js';
38
+ import { I as ImportKeystore } from '../../Import-DTcVM-T-.js';
39
+ import { a as getProjectCredentials } from '../../index-qOGviaGc.js';
39
40
  import { T as Title } from '../../Title-BCQtayg6.js';
40
- import { C as Command } from '../../Command-Cj6F5B5a.js';
41
+ import { C as Command } from '../../Command-cVo97lkQ.js';
41
42
  import 'fs';
42
43
  import 'path';
43
44
  import '@expo/apple-utils/build/index.js';
44
- import 'deepmerge';
45
- import 'ini';
46
- import '../../useGoogleStatus-WqPgHteE.js';
47
- import '../../useWebSocket-MXDbQHcu.js';
45
+ import '../../useGoogleStatus-DpPwKmw_.js';
46
+ import '../../useWebSocket-PU55rRGt.js';
48
47
  import '../../git-BpsfNFZ_.js';
49
48
  import '../../ProgressSpinner-Um6ARKlk.js';
50
- import '../../useProjectCredentials-TvlolkId.js';
49
+ import '../../useProjectCredentials-rQLm2O1J.js';
51
50
  import '../../RunWithSpinner-DucRnFp6.js';
52
- import '../../import-Dk2ywOVU.js';
51
+ import '../../import-Bk4w8kks.js';
53
52
 
54
53
  const useInviteServiceAccount = () => useMutation({
55
54
  async mutationFn({ developerId, projectId }) {
@@ -248,11 +247,7 @@ const CreateGame = (props) => {
248
247
  ] });
249
248
  };
250
249
 
251
- const CreateInitialBuild = (props) => {
252
- const { gameId } = useContext(GameContext);
253
- return /* @__PURE__ */ jsx(Fragment, { children: gameId && /* @__PURE__ */ jsx(CreateForGame, { gameId, ...props }) });
254
- };
255
- const CreateForGame = ({ gameId, onComplete, onError, ...boxProps }) => {
250
+ const InitialAndroidBuild = ({ gameId, onComplete, onError, ...boxProps }) => {
256
251
  const { command } = useContext(CommandContext);
257
252
  const { data: buildData, isLoading: isLoadingBuilds } = useBuilds({ pageNumber: 0, projectId: gameId });
258
253
  const { data: jobData, isLoading: isLoadingJobs } = useJobs({
@@ -268,7 +263,9 @@ const CreateForGame = ({ gameId, onComplete, onError, ...boxProps }) => {
268
263
  if (!buildData) return;
269
264
  if (!jobData) return;
270
265
  if (!command) return;
271
- const hasAndroidBuild = buildData.data.some((build) => build.platform === Platform.ANDROID);
266
+ const hasAndroidBuild = buildData.data.some(
267
+ (build) => build.platform === Platform.ANDROID && build.buildType == BuildType.AAB
268
+ );
272
269
  if (!prevHasBuild.current && hasAndroidBuild) return onComplete();
273
270
  prevHasBuild.current = hasAndroidBuild;
274
271
  const hasRunningAndroidJob = jobData.data.some(
@@ -294,12 +291,19 @@ const CreateForGame = ({ gameId, onComplete, onError, ...boxProps }) => {
294
291
  (isLoadingBuilds || isLoadingJobs || shipMutation.isPending) && /* @__PURE__ */ jsx(Spinner, { type: "dots" })
295
292
  ] }),
296
293
  androidJob === null && /* @__PURE__ */ jsx(Text, { children: shipLog }),
297
- androidJob && /* @__PURE__ */ jsx(JobProgress, { job: androidJob, onComplete, onFailure: (j) => {
298
- setFailedJob(j);
299
- setTimeout(() => {
300
- onError(new Error(`Job ${j.id} failed`));
301
- }, 1e3);
302
- } }),
294
+ androidJob && /* @__PURE__ */ jsx(
295
+ JobProgress,
296
+ {
297
+ job: androidJob,
298
+ onComplete,
299
+ onFailure: (j) => {
300
+ setFailedJob(j);
301
+ setTimeout(() => {
302
+ onError(new Error(`Job ${j.id} failed`));
303
+ }, 1e3);
304
+ }
305
+ }
306
+ ),
303
307
  failedJob && /* @__PURE__ */ jsxs(Fragment, { children: [
304
308
  /* @__PURE__ */ jsx(
305
309
  Markdown,
@@ -315,6 +319,49 @@ const CreateForGame = ({ gameId, onComplete, onError, ...boxProps }) => {
315
319
  ] }) });
316
320
  };
317
321
 
322
+ const EnableGradle = ({ onConfirm, onCancel, ...boxProps }) => {
323
+ const godotVersion = getGodotVersion();
324
+ const majorVersion = getMajorVersion(godotVersion);
325
+ useSafeInput(async (input) => {
326
+ if (input == "y") return onConfirm && onConfirm();
327
+ if (input == "n") return onCancel && onCancel();
328
+ });
329
+ return /* @__PURE__ */ jsx(Box, { flexDirection: "column", gap: 1, ...boxProps, children: /* @__PURE__ */ jsx(Box, { flexDirection: "row", gap: 1, children: /* @__PURE__ */ jsx(
330
+ Markdown,
331
+ {
332
+ filename: "confirm-change-android-build-method.md.ejs",
333
+ templateVars: {
334
+ docsURL: `${WEB_URL}docs/guides/android-build-methods`,
335
+ godotVersion,
336
+ optionKey: getGradleBuildOptionKey(majorVersion)
337
+ }
338
+ }
339
+ ) }) });
340
+ };
341
+
342
+ const CreateInitialBuild = ({ onComplete, onError, ...boxProps }) => {
343
+ const { gameId } = useContext(GameContext);
344
+ const [canBuildAAB, setCanBuildAAB] = useState(null);
345
+ useEffect(() => {
346
+ async function fetchBuildMethod() {
347
+ const isGradle = await isGradleBuildEnabled();
348
+ setCanBuildAAB(isGradle);
349
+ }
350
+ fetchBuildMethod();
351
+ }, []);
352
+ const updateBuildMethod = async () => {
353
+ await setGradleBuildEnabled(true);
354
+ setCanBuildAAB(true);
355
+ };
356
+ if (canBuildAAB === null) {
357
+ return /* @__PURE__ */ jsx(Text, { children: "Loading..." });
358
+ }
359
+ if (canBuildAAB === false) {
360
+ return /* @__PURE__ */ jsx(EnableGradle, { ...boxProps, onConfirm: () => updateBuildMethod(), onCancel: () => process.exit() });
361
+ }
362
+ return /* @__PURE__ */ jsx(Fragment, { children: gameId && /* @__PURE__ */ jsx(InitialAndroidBuild, { gameId, onComplete, onError, ...boxProps }) });
363
+ };
364
+
318
365
  const InviteForm = ({ onSubmit }) => {
319
366
  const [error, setError] = useState(null);
320
367
  const [accountId, setAccountId] = useState("");
@@ -521,7 +568,9 @@ const getStatusFlags = async (cmd) => {
521
568
  (cred) => cred.isActive && cred.platform === Platform.ANDROID && cred.type === CredentialsType.KEY
522
569
  );
523
570
  const buildsResponse = projectId && hasShipThisProject ? await queryBuilds({ pageNumber: 0, projectId: `${projectId}` }) : null;
524
- const hasInitialBuild = Boolean(buildsResponse?.data?.some((build) => build.platform === Platform.ANDROID));
571
+ const hasInitialBuild = Boolean(
572
+ buildsResponse?.data?.some((build) => build.platform === Platform.ANDROID && build.buildType === BuildType.AAB)
573
+ );
525
574
  const testResult = projectId ? await fetchKeyTestResult({ projectId }) : null;
526
575
  const hasGooglePlayGame = testResult && testResult?.status === KeyTestStatus.SUCCESS || testResult?.status === KeyTestStatus.ERROR && testResult?.error === KeyTestError.NOT_INVITED;
527
576
  const hasInvitedServiceAccount = testResult ? testResult?.status === KeyTestStatus.SUCCESS : false;
@@ -4,7 +4,7 @@ import { Args, Flags } from '@oclif/core';
4
4
  import 'axios';
5
5
  import 'crypto-js';
6
6
  import 'uuid';
7
- import { B as BaseCommand } from '../../baseCommand-CTn3KGH3.js';
7
+ import { B as BaseCommand } from '../../baseCommand-CscxrTMI.js';
8
8
  import 'luxon';
9
9
  import 'react/jsx-runtime';
10
10
  import 'ink';
@@ -24,14 +24,13 @@ import 'string-length';
24
24
  import 'strip-ansi';
25
25
  import 'open';
26
26
  import '@inkjs/ui';
27
- import '../../baseGameCommand-8VL7xe-O.js';
27
+ import '../../baseGameCommand-BKvHM3h_.js';
28
28
  import 'marked';
29
29
  import 'marked-terminal';
30
30
  import 'qrcode';
31
+ import 'godot-export-presets';
31
32
  import 'chalk';
32
33
  import '@expo/apple-utils/build/index.js';
33
- import 'deepmerge';
34
- import 'ini';
35
34
  import 'fs';
36
35
  import 'path';
37
36
 
@@ -1,11 +1,11 @@
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-8VL7xe-O.js';
4
+ import { q as ejs } from '../../baseGameCommand-BKvHM3h_.js';
5
5
  import 'axios';
6
6
  import 'crypto-js';
7
7
  import 'uuid';
8
- import { B as BaseCommand } from '../../baseCommand-CTn3KGH3.js';
8
+ import { B as BaseCommand } from '../../baseCommand-CscxrTMI.js';
9
9
  import 'luxon';
10
10
  import 'react/jsx-runtime';
11
11
  import 'ink';
@@ -29,12 +29,11 @@ import '@inkjs/ui';
29
29
  import 'marked';
30
30
  import 'marked-terminal';
31
31
  import 'qrcode';
32
+ import 'godot-export-presets';
32
33
  import 'fs';
33
34
  import 'path';
34
35
  import 'chalk';
35
36
  import '@expo/apple-utils/build/index.js';
36
- import 'deepmerge';
37
- import 'ini';
38
37
 
39
38
  const ROOT_TOPIC_NAME = "shipthis";
40
39
  const ROOT_TOPIC_DESCRIPTION = "Root topic";
@@ -1,10 +1,10 @@
1
1
  import { Flags } from '@oclif/core';
2
2
  import axios from 'axios';
3
- import { W as WEB_URL, B as BaseCommand, Z as acceptTerms, o as API_URL, _ as setAuthToken } from '../baseCommand-CTn3KGH3.js';
3
+ import { W as WEB_URL, B as BaseCommand, $ as acceptTerms, p as API_URL, a0 as setAuthToken } from '../baseCommand-CscxrTMI.js';
4
4
  import 'react/jsx-runtime';
5
5
  import 'ink';
6
6
  import 'ink-spinner';
7
- import { b as getInput } from '../baseGameCommand-8VL7xe-O.js';
7
+ import { b as getInput } from '../baseGameCommand-BKvHM3h_.js';
8
8
  import 'react';
9
9
  import '@tanstack/react-query';
10
10
  import 'luxon';
@@ -22,6 +22,7 @@ import 'node:path';
22
22
  import 'marked';
23
23
  import 'marked-terminal';
24
24
  import 'qrcode';
25
+ import 'godot-export-presets';
25
26
  import 'chalk';
26
27
  import 'crypto-js';
27
28
  import '@expo/apple-utils/build/index.js';
@@ -30,8 +31,6 @@ import 'node:readline';
30
31
  import 'node:url';
31
32
  import 'readline-sync';
32
33
  import 'isomorphic-git';
33
- import 'deepmerge';
34
- import 'ini';
35
34
  import 'fs';
36
35
  import 'path';
37
36
 
@@ -4,7 +4,7 @@ import 'node:fs';
4
4
  import 'axios';
5
5
  import 'crypto-js';
6
6
  import 'uuid';
7
- import { B as BaseCommand, j as isCWDGodotGame } from '../baseCommand-CTn3KGH3.js';
7
+ import { B as BaseCommand, k as isCWDGodotGame } from '../baseCommand-CscxrTMI.js';
8
8
  import 'luxon';
9
9
  import 'ink-spinner';
10
10
  import 'node:crypto';
@@ -25,17 +25,16 @@ import 'strip-ansi';
25
25
  import { S as StatusTable } from '../StatusTable-DzRWcMr4.js';
26
26
  import 'open';
27
27
  import '@inkjs/ui';
28
- import '../baseGameCommand-8VL7xe-O.js';
28
+ import '../baseGameCommand-BKvHM3h_.js';
29
29
  import 'marked';
30
30
  import 'marked-terminal';
31
31
  import { N as NextSteps } from '../NextSteps-DbJHmscQ.js';
32
32
  import 'qrcode';
33
- import { C as Command } from '../Command-Cj6F5B5a.js';
33
+ import 'godot-export-presets';
34
+ import { C as Command } from '../Command-cVo97lkQ.js';
34
35
  import chalk from 'chalk';
35
36
  import '@expo/apple-utils/build/index.js';
36
37
  import 'isomorphic-git';
37
- import 'deepmerge';
38
- import 'ini';
39
38
  import '../Title-BCQtayg6.js';
40
39
  import 'fs';
41
40
  import 'path';
@@ -0,0 +1,66 @@
1
+ import { Flags } from '@oclif/core';
2
+ import 'node:fs';
3
+ import 'axios';
4
+ import 'crypto-js';
5
+ import 'uuid';
6
+ import { B as BaseCommand, i as isGradleBuildEnabled, s as setGradleBuildEnabled } from '../../baseCommand-CscxrTMI.js';
7
+ import 'luxon';
8
+ import 'react/jsx-runtime';
9
+ import 'ink';
10
+ import 'ink-spinner';
11
+ import 'node:crypto';
12
+ import 'node:path';
13
+ import 'node:readline';
14
+ import 'node:url';
15
+ import 'readline-sync';
16
+ import 'isomorphic-git';
17
+ import '@tanstack/react-query';
18
+ import 'react';
19
+ import 'fast-glob';
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 '../../baseGameCommand-BKvHM3h_.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 UtilAndroidBuildMethod extends BaseCommand {
38
+ static args = {};
39
+ static description = "Gets and sets the Android build method in export_presets.cfg";
40
+ static examples = [
41
+ "<%= config.bin %> <%= command.id %>",
42
+ "<%= config.bin %> <%= command.id %> --legacy",
43
+ "<%= config.bin %> <%= command.id %> --gradle"
44
+ ];
45
+ static flags = {
46
+ legacy: Flags.boolean({ char: "l", description: "use legacy build method" }),
47
+ gradle: Flags.boolean({ char: "g", description: "use gradle build method" })
48
+ };
49
+ async run() {
50
+ const { flags } = await this.parse(UtilAndroidBuildMethod);
51
+ if (flags.legacy && flags.gradle) {
52
+ this.error("Cannot use both --legacy and --gradle flags together");
53
+ }
54
+ if (!flags.legacy && !flags.gradle) {
55
+ const buildMethod2 = await isGradleBuildEnabled() ? "gradle" : "legacy";
56
+ this.log(`Current Android build method: ${buildMethod2}`);
57
+ return;
58
+ }
59
+ const isGradle = flags.gradle ? true : false;
60
+ const buildMethod = flags.legacy ? "legacy" : "gradle";
61
+ this.log(`Setting Android build method to: ${buildMethod}`);
62
+ await setGradleBuildEnabled(isGradle);
63
+ }
64
+ }
65
+
66
+ export { UtilAndroidBuildMethod as default };
@@ -1,4 +1,4 @@
1
- import { B as BaseCommand } from '../../baseCommand-CTn3KGH3.js';
1
+ import { B as BaseCommand } from '../../baseCommand-CscxrTMI.js';
2
2
  import { Flags, Args } from '@oclif/core';
3
3
  import * as fs from 'node:fs';
4
4
  import * as path from 'node:path';
@@ -14,8 +14,7 @@ import 'node:readline';
14
14
  import 'node:url';
15
15
  import 'readline-sync';
16
16
  import 'isomorphic-git';
17
- import 'deepmerge';
18
- import 'ini';
17
+ import 'godot-export-presets';
19
18
  import '@tanstack/react-query';
20
19
  import 'react';
21
20
  import 'fast-glob';
@@ -1,6 +1,6 @@
1
1
  import * as fs from 'node:fs';
2
2
  import axios from 'axios';
3
- import { o as API_URL, p as getAuthedHeaders } from './baseCommand-CTn3KGH3.js';
3
+ import { p as API_URL, q as getAuthedHeaders } from './baseCommand-CscxrTMI.js';
4
4
 
5
5
  async function exportCredential({ credentialId, projectId, zipPath }) {
6
6
  const headers = getAuthedHeaders();
@@ -1,6 +1,6 @@
1
1
  import { promises } from 'node:fs';
2
2
  import axios from 'axios';
3
- import { o as API_URL, p as getAuthedHeaders } from './baseCommand-CTn3KGH3.js';
3
+ import { p as API_URL, q as getAuthedHeaders } from './baseCommand-CscxrTMI.js';
4
4
 
5
5
  async function getNewImportTicket(projectId) {
6
6
  const url = projectId ? `${API_URL}/projects/${projectId}/credentials/import/url` : `${API_URL}/credentials/import/url`;
@@ -8,21 +8,21 @@ import 'node:path';
8
8
  import 'node:readline';
9
9
  import 'node:url';
10
10
  import 'readline-sync';
11
- import { p as getAuthedHeaders, o as API_URL, a4 as castObjectDates, H as queryClient, Q as revokePolicy, O as enforcePolicy, P as Platform, C as CredentialsType, M as getGoogleStatus, c as getShortDate } from './baseCommand-CTn3KGH3.js';
11
+ import { q as getAuthedHeaders, p as API_URL, a6 as castObjectDates, I as queryClient, S as revokePolicy, R as enforcePolicy, P as Platform, C as CredentialsType, O as getGoogleStatus, c as getShortDate } from './baseCommand-CscxrTMI.js';
12
12
  import axios from 'axios';
13
13
  import 'isomorphic-git';
14
14
  import '@oclif/core';
15
15
  import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
16
16
  import 'luxon';
17
- import { k as cacheKeys, G as GameContext, w as useSafeInput, M as Markdown } from './baseGameCommand-8VL7xe-O.js';
17
+ import { k as cacheKeys, i as GameContext, x as useSafeInput, M as Markdown } from './baseGameCommand-BKvHM3h_.js';
18
18
  import 'fast-glob';
19
19
  import 'uuid';
20
20
  import 'yazl';
21
21
  import 'socket.io-client';
22
22
  import 'fullscreen-ink';
23
- import { u as useWebSocket } from './useWebSocket-MXDbQHcu.js';
24
- import { u as useProjectCredentials } from './useProjectCredentials-TvlolkId.js';
25
- import { u as useGoogleStatus } from './useGoogleStatus-WqPgHteE.js';
23
+ import { u as useWebSocket } from './useWebSocket-PU55rRGt.js';
24
+ import { u as useProjectCredentials } from './useProjectCredentials-rQLm2O1J.js';
25
+ import { u as useGoogleStatus } from './useGoogleStatus-DpPwKmw_.js';
26
26
  import 'crypto-js';
27
27
  import 'string-length';
28
28
  import 'strip-ansi';
@@ -30,6 +30,7 @@ import 'open';
30
30
  import '@inkjs/ui';
31
31
  import { P as ProgressSpinner } from './ProgressSpinner-Um6ARKlk.js';
32
32
  import 'qrcode';
33
+ import 'godot-export-presets';
33
34
 
34
35
  async function fetchStatus({ projectId }) {
35
36
  try {
@@ -1,5 +1,5 @@
1
1
  import axios from 'axios';
2
- import { o as API_URL, p as getAuthedHeaders, F as castArrayObjectDates } from './baseCommand-CTn3KGH3.js';
2
+ import { p as API_URL, q as getAuthedHeaders, H as castArrayObjectDates } from './baseCommand-CscxrTMI.js';
3
3
  import 'node:fs';
4
4
 
5
5
  async function getUserCredentials(pageSize = 100) {
@@ -12,7 +12,7 @@ import 'readline-sync';
12
12
  import 'luxon';
13
13
  import 'axios';
14
14
  import 'isomorphic-git';
15
- import { a3 as getShortAuthRequiredUrl, a5 as getGoogleAuthUrl, W as WEB_URL } from './baseCommand-CTn3KGH3.js';
15
+ import { a5 as getShortAuthRequiredUrl, a7 as getGoogleAuthUrl, W as WEB_URL } from './baseCommand-CscxrTMI.js';
16
16
  import '@oclif/core';
17
17
  import '@tanstack/react-query';
18
18
  import 'crypto-js';
@@ -20,13 +20,14 @@ import 'uuid';
20
20
  import 'fast-glob';
21
21
  import 'yazl';
22
22
  import 'socket.io-client';
23
- import { u as useGoogleStatus } from './useGoogleStatus-WqPgHteE.js';
24
- import { u as useWebSocket } from './useWebSocket-MXDbQHcu.js';
23
+ import { u as useGoogleStatus } from './useGoogleStatus-DpPwKmw_.js';
24
+ import { u as useWebSocket } from './useWebSocket-PU55rRGt.js';
25
25
  import 'fullscreen-ink';
26
- import { G as GameContext, w as useSafeInput, M as Markdown } from './baseGameCommand-8VL7xe-O.js';
26
+ import { i as GameContext, x as useSafeInput, M as Markdown } from './baseGameCommand-BKvHM3h_.js';
27
27
  import 'string-length';
28
28
  import 'strip-ansi';
29
29
  import '@inkjs/ui';
30
+ import 'godot-export-presets';
30
31
  import 'marked';
31
32
  import 'marked-terminal';
32
33
  import qrcode from 'qrcode';
@@ -1,5 +1,5 @@
1
1
  import axios from 'axios';
2
- import { o as API_URL, p as getAuthedHeaders } from './baseCommand-CTn3KGH3.js';
2
+ import { p as API_URL, q as getAuthedHeaders } from './baseCommand-CscxrTMI.js';
3
3
 
4
4
  async function getNewUploadTicket(projectId = null) {
5
5
  const url = projectId ? `${API_URL}/projects/${projectId}/credentials/url` : `${API_URL}/credentials/url`;
@@ -1,5 +1,5 @@
1
1
  import { useQuery } from '@tanstack/react-query';
2
- import { f as App } from './baseCommand-CTn3KGH3.js';
2
+ import { f as App } from './baseCommand-CscxrTMI.js';
3
3
 
4
4
  const queryAppleApp = async ({ ctx, iosBundleId }) => {
5
5
  if (!iosBundleId) {
@@ -1,5 +1,5 @@
1
1
  import { useQuery } from '@tanstack/react-query';
2
- import { e as BundleId, q as getGodotProjectCapabilities, P as Platform, G as GODOT_CAPABILITIES, r as CapabilityType } from './baseCommand-CTn3KGH3.js';
2
+ import { e as BundleId, r as getGodotProjectCapabilities, P as Platform, G as GODOT_CAPABILITIES, t as CapabilityType } from './baseCommand-CscxrTMI.js';
3
3
 
4
4
  async function getBundleIdCapabilities(bundleId) {
5
5
  const current = await bundleId.getBundleIdCapabilitiesAsync();
@@ -27,7 +27,7 @@ const fetchBundleId = async ({ ctx, iosBundleId }) => {
27
27
  });
28
28
  if (!bundleId) return empty;
29
29
  const bundleIdCapabilities = await getBundleIdCapabilities(bundleId);
30
- const projectCapabilities = getGodotProjectCapabilities(Platform.IOS);
30
+ const projectCapabilities = await getGodotProjectCapabilities(Platform.IOS);
31
31
  const capabilitiesTable = GODOT_CAPABILITIES.map((gc) => {
32
32
  const isEnabledInBundle = bundleIdCapabilities.includes(gc.type);
33
33
  const isEnabledInProject = projectCapabilities.includes(gc.type);
@@ -1,6 +1,6 @@
1
1
  import { useQuery } from '@tanstack/react-query';
2
2
  import { DateTime } from 'luxon';
3
- import { c as getShortDate, m as Profile, n as ProfileType } from './baseCommand-CTn3KGH3.js';
3
+ import { c as getShortDate, n as Profile, o as ProfileType } from './baseCommand-CscxrTMI.js';
4
4
  import 'node:crypto';
5
5
  import 'node:fs';
6
6
  import 'node:path';
@@ -1,6 +1,6 @@
1
1
  import { useQuery } from '@tanstack/react-query';
2
- import { M as getGoogleStatus } from './baseCommand-CTn3KGH3.js';
3
- import { k as cacheKeys } from './baseGameCommand-8VL7xe-O.js';
2
+ import { O as getGoogleStatus } from './baseCommand-CscxrTMI.js';
3
+ import { k as cacheKeys } from './baseGameCommand-BKvHM3h_.js';
4
4
 
5
5
  const useGoogleStatus = () => useQuery({
6
6
  queryFn: getGoogleStatus,
@@ -1,7 +1,7 @@
1
1
  import { useQuery } from '@tanstack/react-query';
2
2
  import axios from 'axios';
3
- import { c as getShortDate, p as getAuthedHeaders, o as API_URL, F as castArrayObjectDates } from './baseCommand-CTn3KGH3.js';
4
- import { k as cacheKeys, g as getShortUUID } from './baseGameCommand-8VL7xe-O.js';
3
+ import { c as getShortDate, q as getAuthedHeaders, p as API_URL, H as castArrayObjectDates } from './baseCommand-CscxrTMI.js';
4
+ import { k as cacheKeys, g as getShortUUID } from './baseGameCommand-BKvHM3h_.js';
5
5
 
6
6
  async function queryProjectCredentials({
7
7
  projectId,
@@ -1,6 +1,6 @@
1
1
  import { useEffect } from 'react';
2
2
  import { io } from 'socket.io-client';
3
- import { I as WS_URL, K as getAuthToken } from './baseCommand-CTn3KGH3.js';
3
+ import { K as WS_URL, L as getAuthToken } from './baseCommand-CscxrTMI.js';
4
4
 
5
5
  function useWebSocket(listeners = []) {
6
6
  const log = () => {
@@ -0,0 +1,26 @@
1
+ # Command: `util android-build-method`
2
+
3
+ ## Description
4
+
5
+ Gets and sets the Android build method in export_presets.cfg
6
+
7
+ ## Help Output
8
+
9
+ ```help
10
+ USAGE
11
+ $ shipthis util android-build-method [-l] [-g]
12
+
13
+ FLAGS
14
+ -g, --gradle use gradle build method
15
+ -l, --legacy use legacy build method
16
+
17
+ DESCRIPTION
18
+ Gets and sets the Android build method in export_presets.cfg
19
+
20
+ EXAMPLES
21
+ $ shipthis util android-build-method
22
+
23
+ $ shipthis util android-build-method --legacy
24
+
25
+ $ shipthis util android-build-method --gradle
26
+ ```
package/docs/util.md CHANGED
@@ -8,4 +8,5 @@ These commands do not require authentication.
8
8
 
9
9
  ## Commands
10
10
 
11
- - [util glass](/docs/reference/util/glass.md)
11
+ - [util android-build-method](/docs/reference/util/android-build-method)
12
+ - [util glass](/docs/reference/util/glass)