shipthis 0.1.37 → 0.1.39

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 (87) hide show
  1. package/README.md +38 -33
  2. package/assets/markdown/ship-success.md.ejs +4 -0
  3. package/dist/{AppleBundleIdDetails-KMzyex1H.js → AppleBundleIdDetails-Ck7iAjMb.js} +3 -3
  4. package/dist/{Command-CHh8RDXK.js → Command-C84QiOWP.js} +1 -1
  5. package/dist/{CommandGame-Rvmsa7b0.js → CommandGame-CsM9GE5Q.js} +2 -2
  6. package/dist/{Create-DInZ_pw-.js → Create-Dx1nEKmS.js} +1 -1
  7. package/dist/{GameStatus-D7ID10tS.js → GameStatus-B4WBgoLs.js} +1 -1
  8. package/dist/{Import-BmO8EYKj.js → Import-BC5XgwRT.js} +2 -2
  9. package/dist/{JobLogTail-CYdceTKL.js → JobLogTail-mBXpeWMu.js} +2 -2
  10. package/dist/{JobProgress-DBCYbWrO.js → JobProgress-KZ6EkMFi.js} +14 -8
  11. package/dist/{JobStatusTable-DhnhY1_i.js → JobStatusTable-BYIxTt0d.js} +2 -2
  12. package/dist/{ProjectCredentialsTable-BDYVYqAq.js → ProjectCredentialsTable-DSy1YIWX.js} +2 -2
  13. package/dist/{UserCredentialsTable-cDPvjF-F.js → UserCredentialsTable-qNByRE84.js} +1 -1
  14. package/dist/{baseAppleCommand-CQ5dOna7.js → baseAppleCommand-CdROzhyU.js} +1 -1
  15. package/dist/{baseGameAndroidCommand-D4ryZS6A.js → baseGameAndroidCommand-B21zS0MN.js} +1 -1
  16. package/dist/commands/apiKey/create.js +2 -2
  17. package/dist/commands/apiKey/list.js +2 -2
  18. package/dist/commands/apiKey/revoke.js +2 -2
  19. package/dist/commands/apple/apiKey/create.js +5 -5
  20. package/dist/commands/apple/apiKey/delete.js +3 -3
  21. package/dist/commands/apple/apiKey/export.js +4 -4
  22. package/dist/commands/apple/apiKey/import.js +4 -4
  23. package/dist/commands/apple/apiKey/status.js +3 -3
  24. package/dist/commands/apple/certificate/create.js +5 -5
  25. package/dist/commands/apple/certificate/delete.js +3 -3
  26. package/dist/commands/apple/certificate/export.js +4 -4
  27. package/dist/commands/apple/certificate/import.js +4 -4
  28. package/dist/commands/apple/certificate/status.js +3 -3
  29. package/dist/commands/apple/login.js +1 -1
  30. package/dist/commands/apple/status.js +2 -2
  31. package/dist/commands/dashboard.js +1 -1
  32. package/dist/commands/game/android/apiKey/connect.js +7 -7
  33. package/dist/commands/game/android/apiKey/create.js +9 -9
  34. package/dist/commands/game/android/apiKey/delete.js +3 -3
  35. package/dist/commands/game/android/apiKey/export.js +5 -5
  36. package/dist/commands/game/android/apiKey/import.js +5 -5
  37. package/dist/commands/game/android/apiKey/invite.js +2 -2
  38. package/dist/commands/game/android/apiKey/policy.js +2 -2
  39. package/dist/commands/game/android/apiKey/status.js +5 -5
  40. package/dist/commands/game/android/keyStore/create.js +6 -6
  41. package/dist/commands/game/android/keyStore/delete.js +3 -3
  42. package/dist/commands/game/android/keyStore/export.js +4 -4
  43. package/dist/commands/game/android/keyStore/import.js +7 -7
  44. package/dist/commands/game/android/keyStore/status.js +4 -4
  45. package/dist/commands/game/android/status.js +1 -1
  46. package/dist/commands/game/build/download.js +2 -2
  47. package/dist/commands/game/build/list.js +3 -3
  48. package/dist/commands/game/create.js +2 -1
  49. package/dist/commands/game/details.js +8 -5
  50. package/dist/commands/game/export.js +1 -1
  51. package/dist/commands/game/ios/app/addTester.js +3 -3
  52. package/dist/commands/game/ios/app/create.js +2 -2
  53. package/dist/commands/game/ios/app/status.js +5 -5
  54. package/dist/commands/game/ios/app/sync.js +3 -3
  55. package/dist/commands/game/ios/profile/create.js +5 -5
  56. package/dist/commands/game/ios/profile/delete.js +3 -3
  57. package/dist/commands/game/ios/profile/export.js +4 -4
  58. package/dist/commands/game/ios/profile/import.js +4 -4
  59. package/dist/commands/game/ios/profile/status.js +5 -5
  60. package/dist/commands/game/ios/status.js +7 -7
  61. package/dist/commands/game/ios/wizard.js +9 -8
  62. package/dist/commands/game/job/list.js +2 -2
  63. package/dist/commands/game/job/status.js +5 -5
  64. package/dist/commands/game/list.js +2 -2
  65. package/dist/commands/game/ship.js +23 -11
  66. package/dist/commands/game/status.js +4 -4
  67. package/dist/commands/game/wizard.js +19 -18
  68. package/dist/commands/internal/fastlane.js +1 -1
  69. package/dist/commands/internal/readme.js +1 -1
  70. package/dist/commands/login.js +1 -1
  71. package/dist/commands/status.js +2 -2
  72. package/dist/{export-DujIwhJw.js → export-BtUjg3Tl.js} +1 -1
  73. package/dist/{import-DGCqCAcC.js → import-BYSkF-tX.js} +1 -1
  74. package/dist/{index-BPh_qt7t.js → index-CcGRePRU.js} +4 -4
  75. package/dist/{index-9LxGafAo.js → index-CgGLBt2v.js} +3 -3
  76. package/dist/{index-CmuXyPed.js → index-Cv-92xRd.js} +12 -5
  77. package/dist/{index-CNsmEDXi.js → index-Du6l7ZyV.js} +1 -1
  78. package/dist/{upload-D4x4yCia.js → upload-LoVBuJbT.js} +1 -1
  79. package/dist/{useAppleApp-taaewPSf.js → useAppleApp-Bg0x6s97.js} +1 -1
  80. package/dist/{useAppleBundleId-BeGViMe7.js → useAppleBundleId-CEOssLqN.js} +1 -1
  81. package/dist/{useAppleProfiles-1TtO0aO6.js → useAppleProfiles-CHf_gHdZ.js} +1 -1
  82. package/dist/{useGoogleStatus-CSsxEvX7.js → useGoogleStatus-Ch36GbVo.js} +1 -1
  83. package/dist/{useProjectCredentials-Cm50WMZU.js → useProjectCredentials-CsQWPdyo.js} +1 -1
  84. package/dist/{useWebSocket-BVfn36be.js → useWebSocket-CWeaaLqi.js} +1 -1
  85. package/docs/game/details.md +13 -10
  86. package/docs/game/ship.md +37 -13
  87. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  import fs__default from 'node:fs';
2
2
  import path from 'node:path';
3
3
  import { Args, Flags } from '@oclif/core';
4
- import { ac as BaseCommand, ad as ejs } from '../../index-CmuXyPed.js';
4
+ import { ac as BaseCommand, ad as ejs } from '../../index-Cv-92xRd.js';
5
5
  import CustomHelp from '../../utils/help.js';
6
6
  import 'axios';
7
7
  import 'crypto-js';
@@ -1,6 +1,6 @@
1
1
  import { Flags } from '@oclif/core';
2
2
  import axios from 'axios';
3
- import { W as WEB_URL, ac as BaseCommand, ai as acceptTerms, s as API_URL, aj as setAuthToken, c as getInput } from '../index-CmuXyPed.js';
3
+ import { W as WEB_URL, ac as BaseCommand, ai as acceptTerms, t as API_URL, aj as setAuthToken, c as getInput } from '../index-Cv-92xRd.js';
4
4
  import 'node:fs';
5
5
  import 'crypto-js';
6
6
  import 'uuid';
@@ -1,6 +1,6 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { render } from 'ink';
3
- import { ac as BaseCommand, o as isCWDGodotGame } from '../index-CmuXyPed.js';
3
+ import { ac as BaseCommand, o as isCWDGodotGame } from '../index-Cv-92xRd.js';
4
4
  import 'ink-spinner';
5
5
  import 'node:crypto';
6
6
  import 'node:fs';
@@ -29,7 +29,7 @@ import 'marked';
29
29
  import 'marked-terminal';
30
30
  import { N as NextSteps } from '../NextSteps-DbJHmscQ.js';
31
31
  import 'qrcode';
32
- import { C as Command } from '../Command-CHh8RDXK.js';
32
+ import { C as Command } from '../Command-C84QiOWP.js';
33
33
  import chalk from 'chalk';
34
34
  import '@expo/apple-utils/build/index.js';
35
35
  import 'isomorphic-git';
@@ -1,6 +1,6 @@
1
1
  import * as fs from 'node:fs';
2
2
  import axios from 'axios';
3
- import { s as API_URL, t as getAuthedHeaders } from './index-CmuXyPed.js';
3
+ import { t as API_URL, u as getAuthedHeaders } from './index-Cv-92xRd.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 { s as API_URL, t as getAuthedHeaders } from './index-CmuXyPed.js';
3
+ import { t as API_URL, u as getAuthedHeaders } from './index-Cv-92xRd.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,7 +8,7 @@ import 'node:path';
8
8
  import 'node:readline';
9
9
  import 'node:url';
10
10
  import 'readline-sync';
11
- import { a0 as cacheKeys, t as getAuthedHeaders, s as API_URL, aw as castObjectDates, X as queryClient, a5 as revokePolicy, a4 as enforcePolicy, P as Platform, C as CredentialsType, a2 as getGoogleStatus, R as GameContext, at as useSafeInput, au as Markdown, f as getShortDate } from './index-CmuXyPed.js';
11
+ import { a0 as cacheKeys, u as getAuthedHeaders, t as API_URL, aw as castObjectDates, X as queryClient, a5 as revokePolicy, a4 as enforcePolicy, P as Platform, C as CredentialsType, a2 as getGoogleStatus, R as GameContext, at as useSafeInput, au as Markdown, f as getShortDate } from './index-Cv-92xRd.js';
12
12
  import axios from 'axios';
13
13
  import 'isomorphic-git';
14
14
  import '@oclif/core';
@@ -19,9 +19,9 @@ import 'uuid';
19
19
  import 'yazl';
20
20
  import 'socket.io-client';
21
21
  import 'fullscreen-ink';
22
- import { u as useWebSocket } from './useWebSocket-BVfn36be.js';
23
- import { u as useProjectCredentials } from './useProjectCredentials-Cm50WMZU.js';
24
- import { u as useGoogleStatus } from './useGoogleStatus-CSsxEvX7.js';
22
+ import { u as useWebSocket } from './useWebSocket-CWeaaLqi.js';
23
+ import { u as useProjectCredentials } from './useProjectCredentials-CsQWPdyo.js';
24
+ import { u as useGoogleStatus } from './useGoogleStatus-Ch36GbVo.js';
25
25
  import 'crypto-js';
26
26
  import 'string-length';
27
27
  import 'strip-ansi';
@@ -12,7 +12,7 @@ import 'readline-sync';
12
12
  import 'luxon';
13
13
  import 'axios';
14
14
  import 'isomorphic-git';
15
- import { av as getShortAuthRequiredUrl, ax as getGoogleAuthUrl, R as GameContext, at as useSafeInput, W as WEB_URL, au as Markdown } from './index-CmuXyPed.js';
15
+ import { av as getShortAuthRequiredUrl, ax as getGoogleAuthUrl, R as GameContext, at as useSafeInput, W as WEB_URL, au as Markdown } from './index-Cv-92xRd.js';
16
16
  import '@oclif/core';
17
17
  import '@tanstack/react-query';
18
18
  import 'crypto-js';
@@ -20,8 +20,8 @@ import 'uuid';
20
20
  import 'fast-glob';
21
21
  import 'yazl';
22
22
  import 'socket.io-client';
23
- import { u as useGoogleStatus } from './useGoogleStatus-CSsxEvX7.js';
24
- import { u as useWebSocket } from './useWebSocket-BVfn36be.js';
23
+ import { u as useGoogleStatus } from './useGoogleStatus-Ch36GbVo.js';
24
+ import { u as useWebSocket } from './useWebSocket-CWeaaLqi.js';
25
25
  import 'fullscreen-ink';
26
26
  import 'string-length';
27
27
  import 'strip-ansi';
@@ -62,7 +62,9 @@ const DEFAULT_IGNORED_FILES_GLOBS = [
62
62
  "*.translation",
63
63
  ".mono/**",
64
64
  "data_*/**",
65
- "mono_crash.*.json"
65
+ "mono_crash.*.json",
66
+ "*.apk",
67
+ "*.aab"
66
68
  ];
67
69
  const PRIMARY_DOMAIN = "shipth.is";
68
70
  function getUrlsForDomain(domain) {
@@ -426,7 +428,7 @@ const GODOT_CAPABILITIES = [
426
428
  ];
427
429
  function getGodotProjectCapabilities(platform) {
428
430
  const exportPresets = getGodotExportPresets(platform);
429
- const { options } = exportPresets;
431
+ const options = exportPresets.options || {};
430
432
  const capabilities = [];
431
433
  for (const capability of GODOT_CAPABILITIES) {
432
434
  if (!(capability.key in options)) continue;
@@ -985,7 +987,11 @@ class BaseCommand extends Command {
985
987
  }
986
988
  async setProjectConfig(config) {
987
989
  const configPath = this.getProjectConfigPath();
988
- await fs__default.promises.writeFile(configPath, JSON.stringify(config, null, 2));
990
+ const clean = {
991
+ ...config,
992
+ project: config.project ? { id: config.project.id } : void 0
993
+ };
994
+ await fs__default.promises.writeFile(configPath, JSON.stringify(clean, null, 2));
989
995
  }
990
996
  async updateProjectConfig(update) {
991
997
  const config = await this.getProjectConfig();
@@ -1899,7 +1905,8 @@ const DetailsFlags = {
1899
1905
  gcpServiceAccountId: Flags.string({ char: "c", description: "Set the GCP service account ID" }),
1900
1906
  iosBundleId: Flags.string({ char: "i", description: "Set the iOS bundle ID" }),
1901
1907
  name: Flags.string({ char: "n", description: "The name of the game" }),
1902
- semanticVersion: Flags.string({ char: "s", description: "Set the semantic version" })
1908
+ semanticVersion: Flags.string({ char: "s", description: "Set the semantic version" }),
1909
+ useDemoCredentials: Flags.string({ char: "d", description: "Use demo credentials for this project" })
1903
1910
  };
1904
1911
 
1905
- export { getAuthToken as $, ApiKey as A, BaseAuthenticatedCommand as B, CredentialsType as C, DetailsFlags as D, DEFAULT_IGNORED_FILES_GLOBS as E, getGodotProjectName as F, GODOT_CAPABILITIES as G, getProjectJobs as H, getJobSummary as I, getJobStatusColor as J, getJob as K, JobStatus as L, getStageColor as M, makeHumanReadable as N, getProject as O, Platform as P, getProjectPlatformProgress as Q, GameContext as R, CommandContext as S, isValidSemVer as T, UserRole as U, castArrayObjectDates as V, WEB_URL as W, queryClient as X, CommandProvider as Y, GameProvider as Z, WS_URL as _, ApiKeyType as a, cacheKeys as a0, downloadBuildById as a1, getGoogleStatus as a2, getGodotAndroidPackageName as a3, enforcePolicy as a4, revokePolicy as a5, fetchKeyTestResult as a6, niceError as a7, KeyTestStatus as a8, KeyTestError as a9, getMessageColor as aA, getShortTime as aB, updateProject as aC, queryBuilds as aD, CreateGooglePlayGame as aE, inviteServiceAccount as aa, disconnectGoogle as ab, BaseCommand as ac, ejs as ad, getAPIKeys as ae, createAPIKey as af, revokeAPIKey as ag, getSingleUseUrl as ah, acceptTerms as ai, setAuthToken as aj, Auth as ak, getMaskedInput as al, getNewUploadTicket as am, getFileHash as an, startJobsFromUpload as ao, getPlatformName as ap, useBuilds as aq, getBuildSummary as ar, LogLevel as as, useSafeInput as at, Markdown as au, getShortAuthRequiredUrl as av, castObjectDates as aw, getGoogleAuthUrl as ax, useJob as ay, castJobDates as az, getRenderedMarkdown as b, getInput as c, Certificate as d, getProjects as e, getShortDate as f, getShortUUID as g, BaseGameCommand as h, generatePackageName as i, getGodotAppleBundleIdentifier as j, BundleId as k, App as l, CapabilityTypeOption as m, BetaGroup as n, isCWDGodotGame as o, CertificateType as p, Profile as q, ProfileType as r, API_URL as s, getAuthedHeaders as t, getGodotProjectCapabilities as u, CapabilityType as v, GameEngine as w, getGodotVersion as x, createProject as y, DEFAULT_SHIPPED_FILES_GLOBS as z };
1912
+ export { getAuthToken as $, ApiKey as A, BaseAuthenticatedCommand as B, CredentialsType as C, DetailsFlags as D, DEFAULT_SHIPPED_FILES_GLOBS as E, DEFAULT_IGNORED_FILES_GLOBS as F, GODOT_CAPABILITIES as G, getGodotProjectName as H, getProjectJobs as I, getJobSummary as J, getJobStatusColor as K, getJob as L, JobStatus as M, getStageColor as N, makeHumanReadable as O, Platform as P, getProjectPlatformProgress as Q, GameContext as R, CommandContext as S, isValidSemVer as T, UserRole as U, castArrayObjectDates as V, WEB_URL as W, queryClient as X, CommandProvider as Y, GameProvider as Z, WS_URL as _, ApiKeyType as a, cacheKeys as a0, downloadBuildById as a1, getGoogleStatus as a2, getGodotAndroidPackageName as a3, enforcePolicy as a4, revokePolicy as a5, fetchKeyTestResult as a6, niceError as a7, KeyTestStatus as a8, KeyTestError as a9, getMessageColor as aA, getShortTime as aB, updateProject as aC, queryBuilds as aD, CreateGooglePlayGame as aE, inviteServiceAccount as aa, disconnectGoogle as ab, BaseCommand as ac, ejs as ad, getAPIKeys as ae, createAPIKey as af, revokeAPIKey as ag, getSingleUseUrl as ah, acceptTerms as ai, setAuthToken as aj, Auth as ak, getMaskedInput as al, getNewUploadTicket as am, getFileHash as an, startJobsFromUpload as ao, getPlatformName as ap, useBuilds as aq, getBuildSummary as ar, LogLevel as as, useSafeInput as at, Markdown as au, getShortAuthRequiredUrl as av, castObjectDates as aw, getGoogleAuthUrl as ax, useJob as ay, castJobDates as az, getRenderedMarkdown as b, getInput as c, Certificate as d, getProjects as e, getShortDate as f, getShortUUID as g, BaseGameCommand as h, generatePackageName as i, getGodotAppleBundleIdentifier as j, BundleId as k, App as l, CapabilityTypeOption as m, BetaGroup as n, isCWDGodotGame as o, getProject as p, CertificateType as q, Profile as r, ProfileType as s, API_URL as t, getAuthedHeaders as u, getGodotProjectCapabilities as v, CapabilityType as w, GameEngine as x, getGodotVersion as y, createProject as z };
@@ -1,5 +1,5 @@
1
1
  import axios from 'axios';
2
- import { s as API_URL, t as getAuthedHeaders, V as castArrayObjectDates } from './index-CmuXyPed.js';
2
+ import { t as API_URL, u as getAuthedHeaders, V as castArrayObjectDates } from './index-Cv-92xRd.js';
3
3
  import 'node:fs';
4
4
 
5
5
  async function getUserCredentials(pageSize = 100) {
@@ -1,5 +1,5 @@
1
1
  import axios from 'axios';
2
- import { s as API_URL, t as getAuthedHeaders } from './index-CmuXyPed.js';
2
+ import { t as API_URL, u as getAuthedHeaders } from './index-Cv-92xRd.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 { l as App } from './index-CmuXyPed.js';
2
+ import { l as App } from './index-Cv-92xRd.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 { k as BundleId, u as getGodotProjectCapabilities, P as Platform, G as GODOT_CAPABILITIES, v as CapabilityType } from './index-CmuXyPed.js';
2
+ import { k as BundleId, v as getGodotProjectCapabilities, P as Platform, G as GODOT_CAPABILITIES, w as CapabilityType } from './index-Cv-92xRd.js';
3
3
 
4
4
  async function getBundleIdCapabilities(bundleId) {
5
5
  const current = await bundleId.getBundleIdCapabilitiesAsync();
@@ -1,6 +1,6 @@
1
1
  import { useQuery } from '@tanstack/react-query';
2
2
  import { DateTime } from 'luxon';
3
- import { f as getShortDate, q as Profile, r as ProfileType } from './index-CmuXyPed.js';
3
+ import { f as getShortDate, r as Profile, s as ProfileType } from './index-Cv-92xRd.js';
4
4
  import 'node:crypto';
5
5
  import 'node:fs';
6
6
  import 'node:path';
@@ -1,5 +1,5 @@
1
1
  import { useQuery } from '@tanstack/react-query';
2
- import { a0 as cacheKeys, a2 as getGoogleStatus } from './index-CmuXyPed.js';
2
+ import { a0 as cacheKeys, a2 as getGoogleStatus } from './index-Cv-92xRd.js';
3
3
 
4
4
  const useGoogleStatus = () => useQuery({
5
5
  queryFn: getGoogleStatus,
@@ -1,6 +1,6 @@
1
1
  import { useQuery } from '@tanstack/react-query';
2
2
  import axios from 'axios';
3
- import { a0 as cacheKeys, g as getShortUUID, f as getShortDate, t as getAuthedHeaders, s as API_URL, V as castArrayObjectDates } from './index-CmuXyPed.js';
3
+ import { a0 as cacheKeys, g as getShortUUID, f as getShortDate, u as getAuthedHeaders, t as API_URL, V as castArrayObjectDates } from './index-Cv-92xRd.js';
4
4
 
5
5
  async function queryProjectCredentials({
6
6
  projectId,
@@ -1,6 +1,6 @@
1
1
  import { useEffect } from 'react';
2
2
  import { io } from 'socket.io-client';
3
- import { _ as WS_URL, $ as getAuthToken } from './index-CmuXyPed.js';
3
+ import { _ as WS_URL, $ as getAuthToken } from './index-Cv-92xRd.js';
4
4
 
5
5
  function useWebSocket(listeners = []) {
6
6
  const log = () => {
@@ -29,18 +29,21 @@ After changing these values, you will need to trigger a new build of your game w
29
29
 
30
30
  ```help
31
31
  USAGE
32
- $ shipthis game details [-g <value>] [-f] [-b <value>] [-s <value>] [-e <value>] [-v <value>] [-i <value>] [-a
33
- <value>]
32
+ $ shipthis game details [-g <value>] [-f] [-a <value>] [-b <value>] [-e <value>] [-v <value>] [-g <value>] [-c <value>] [-i <value>] [-n <value>] [-s <value>] [-d <value>]
34
33
 
35
34
  FLAGS
36
- -a, --androidPackageName=<value> Set the Android package name
37
- -b, --buildNumber=<value> Set the build number
38
- -e, --gameEngine=<value> Set the game engine
39
- -f, --force Force the command to run
40
- -g, --gameId=<value> The ID of the game
41
- -i, --iosBundleId=<value> Set the iOS bundle ID
42
- -s, --semanticVersion=<value> Set the semantic version
43
- -v, --gameEngineVersion=<value> Set the game engine version
35
+ -a, --androidPackageName=<value> Set the Android package name
36
+ -b, --buildNumber=<value> Set the build number
37
+ -c, --gcpServiceAccountId=<value> Set the GCP service account ID
38
+ -d, --useDemoCredentials=<value> Use demo credentials for this project
39
+ -e, --gameEngine=<value> Set the game engine
40
+ -f, --force Force the command to run
41
+ -g, --gameId=<value> The ID of the game
42
+ -g, --gcpProjectId=<value> Set the GCP project ID
43
+ -i, --iosBundleId=<value> Set the iOS bundle ID
44
+ -n, --name=<value> The name of the game
45
+ -s, --semanticVersion=<value> Set the semantic version
46
+ -v, --gameEngineVersion=<value> Set the game engine version
44
47
 
45
48
  DESCRIPTION
46
49
  Shows and sets the details of a game.
package/docs/game/ship.md CHANGED
@@ -27,30 +27,51 @@ When using ShipThis in a CI environment, it is most useful to use the `--follow`
27
27
 
28
28
  [![asciicast](https://asciinema.org/a/gKmZ0E1rJ4oiT9SyuSivXBZfY.svg)](https://asciinema.org/a/gKmZ0E1rJ4oiT9SyuSivXBZfY#shipthis-col80row24)
29
29
 
30
- ### Advanced usage - follow, do not publish, and then download APK
30
+ ### Follow, do not publish, and then download APK
31
31
 
32
32
  [![asciicast](https://asciinema.org/a/GNf0t8niOlrMDsgPKqmBcuqQh.svg)](https://asciinema.org/a/GNf0t8niOlrMDsgPKqmBcuqQh#shipthis-col80row24)
33
33
 
34
+ ### Building with demo credentials
35
+
36
+ Adding the `--useDemoCredentials` flag executes the build for the specified platform but applies ShipThis certificates, keystores or provisioning profiles. This can be useful to generate an asset which can be side-loaded onto your own device.
37
+
38
+ ```bash
39
+ # To build for iOS with demo credentials
40
+ shipthis game ship --platform ios --follow --useDemoCredentials --download game.ipa
41
+
42
+ # To build for Android with demo credentials
43
+ shipthis game ship --platform android --follow --useDemoCredentials --downloadAPK game.apk
44
+ ```
45
+
46
+ ### Overriding the Godot version
47
+
48
+ You can specify a different Godot version to use only for the current job. This can be helpful if you are upgrading your game to use a newer version of Godot.
49
+
50
+ ```bash
51
+ shipthis game ship --platform android --follow --gameEngineVersion 4.5.1 --download game-4.5.1.aab
52
+ ```
53
+
34
54
  ## Help Output
35
55
 
36
56
  ```help
37
- Builds the app (for all platforms with valid credentials) and ships it to the stores.
38
-
39
57
  USAGE
40
- $ shipthis game ship [-g <value>] [--download <value> --platform android|ios] [--downloadAPK <value> ] [--follow ] [--skipPublish] [--verbose]
58
+ $ shipthis game ship [-g <value>] [--download <value> --platform android|ios] [--downloadAPK <value> ] [--follow ] [--skipPublish] [--verbose] [--useDemoCredentials ]
59
+ [--gameEngineVersion <value>]
41
60
 
42
61
  FLAGS
43
- -g, --gameId=<value> The ID of the game
44
- --download=<value> Download the build artifact to the specified file
45
- --downloadAPK=<value> Download the APK artifact (if available) to the specified file
46
- --follow Follow the job logs in real-time. Requires --platform to be specified.
47
- --platform=<option> The platform to ship the game to. This can be "android" or "ios"
48
- <options: android|ios>
49
- --skipPublish Skip the publish step
50
- --verbose Enable verbose logging
62
+ -g, --gameId=<value> The ID of the game
63
+ --download=<value> Download the build artifact to the specified file
64
+ --downloadAPK=<value> Download the APK artifact (if available) to the specified file
65
+ --follow Follow the job logs in real-time (requires --platform)
66
+ --gameEngineVersion=<value> Override the specified game engine version for this build
67
+ --platform=<option> The platform to ship the game to. This can be "android" or "ios"
68
+ <options: android|ios>
69
+ --skipPublish Skip the publish step
70
+ --useDemoCredentials Use demo credentials for this build (requires --platform, implies --skipPublish)
71
+ --verbose Enable verbose logging
51
72
 
52
73
  DESCRIPTION
53
- Builds the app (for all platforms with valid credentials) and ships it to the stores.
74
+ Builds and publishes your ShipThis game.
54
75
 
55
76
  EXAMPLES
56
77
  $ shipthis game ship
@@ -65,4 +86,7 @@ EXAMPLES
65
86
 
66
87
  $ shipthis game ship --platform ios --follow --verbose
67
88
 
89
+ $ shipthis game ship --platform ios --useDemoCredentials --download game.ipa
90
+
91
+ $ shipthis game ship --platform android --gameEngineVersion 4.5.1 --skipPublish
68
92
  ```
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "shipthis",
3
3
  "description": "ShipThis manages building and uploading your Godot games to the App Store and Google Play.",
4
- "version": "0.1.37",
4
+ "version": "0.1.39",
5
5
  "author": "Hello Invent Ltd",
6
6
  "bin": {
7
7
  "shipthis": "./bin/run.js"