shipthis 0.0.33 → 0.0.34

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.
@@ -16,11 +16,11 @@ import 'socket.io-client';
16
16
  import 'isomorphic-git';
17
17
  import { A as App } from '../../../App-BfoOFeZ-.js';
18
18
  import Spinner from 'ink-spinner';
19
- import { N as NextSteps } from '../../../NextSteps-CK9zHOCt.js';
20
19
  import { g as getShortUUID } from '../../../index-ZHJdUrwJ.js';
21
20
  import { u as useUserCredentials, U as UserCredentialsTable } from '../../../UserCredentialsTable-A_YlFeJX.js';
22
21
  import { T as Title } from '../../../Title-BCQtayg6.js';
23
22
  import { T as Table } from '../../../Table-CvM6pccN.js';
23
+ import { N as NextSteps } from '../../../NextSteps-CK9zHOCt.js';
24
24
  import 'string-length';
25
25
  import 'strip-ansi';
26
26
  import 'ini';
@@ -109,8 +109,7 @@ class AppleCertificateStatus extends BaseAuthenticatedCommand {
109
109
  queryProps: { type: CredentialsType.CERTIFICATE, platform: Platform.IOS }
110
110
  }
111
111
  ),
112
- showApple && /* @__PURE__ */ jsx(AppleCertificatesTable, { ctx }),
113
- /* @__PURE__ */ jsx(NextSteps, { steps: [] })
112
+ showApple && /* @__PURE__ */ jsx(AppleCertificatesTable, { ctx })
114
113
  ] })
115
114
  );
116
115
  }
@@ -62,9 +62,13 @@ class GameIosProfileCreate extends BaseGameCommand {
62
62
  const validCert = userCerts.find(
63
63
  (cred) => cred.platform === Platform.IOS && cred.type === CredentialsType.CERTIFICATE && cred.isActive == true
64
64
  );
65
- if (!validCert) throw new Error("No valid user certificates found");
66
- const validAppleCert = appleCerts.find((cert) => cert.attributes.serialNumber === validCert.serialNumber);
67
- if (!validAppleCert) throw new Error("No valid apple certificates found");
65
+ const validAppleCert = appleCerts.find(
66
+ (cert) => validCert && cert.attributes.serialNumber === validCert.serialNumber
67
+ );
68
+ if (!validCert || !validAppleCert)
69
+ throw new Error(
70
+ 'No usable iOS Distribution Certificate found. Please run "shipthis apple certificate create" first.'
71
+ );
68
72
  const profile = await Profile.createAsync(ctx, {
69
73
  bundleId: bundleId.id,
70
74
  certificates: [validAppleCert.id],
@@ -15,11 +15,11 @@ import { DateTime } from 'luxon';
15
15
  import 'socket.io-client';
16
16
  import '@expo/apple-utils/build/index.js';
17
17
  import 'isomorphic-git';
18
- import { N as NextSteps } from '../../../../NextSteps-CK9zHOCt.js';
19
18
  import { c as cacheKeys } from '../../../../cacheKeys-CShA-ZjE.js';
20
19
  import { g as getShortUUID } from '../../../../index-ZHJdUrwJ.js';
21
20
  import { T as Title } from '../../../../Title-BCQtayg6.js';
22
21
  import { T as Table } from '../../../../Table-CvM6pccN.js';
22
+ import { N as NextSteps } from '../../../../NextSteps-CK9zHOCt.js';
23
23
  import 'string-length';
24
24
  import 'strip-ansi';
25
25
  import 'path';
@@ -120,19 +120,20 @@ const AppleProfilesTable = ({ ctx, project, ...boxProps }) => {
120
120
  platform: Platform.IOS,
121
121
  type: CredentialsType.CERTIFICATE
122
122
  });
123
- const { data: certs, isLoading } = useAppleProfiles({ ctx });
124
- const hasUsable = certs && credentialsResponse && certs.some((cert) => canAppleProfileBeUsed(cert, project, credentialsResponse.data));
123
+ const { data: profiles, isLoading } = useAppleProfiles({ ctx });
124
+ const hasUsable = profiles && credentialsResponse && profiles.some((cert) => canAppleProfileBeUsed(cert, project, credentialsResponse.data));
125
125
  return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", marginBottom: 1, ...boxProps, children: [
126
126
  /* @__PURE__ */ jsx(Title, { children: "Mobile Provisioning Profiles in your Apple account" }),
127
127
  isLoading && /* @__PURE__ */ jsx(Spinner, { type: "dots" }),
128
- certs && credentialsResponse && /* @__PURE__ */ jsxs(Fragment, { children: [
128
+ profiles && credentialsResponse && /* @__PURE__ */ jsxs(Fragment, { children: [
129
129
  /* @__PURE__ */ jsxs(Box, { marginLeft: 2, marginBottom: 1, flexDirection: "column", children: [
130
- /* @__PURE__ */ jsx(Text, { children: `You have ${certs.length} Mobile Provisioning Profiles in your Apple account` }),
130
+ /* @__PURE__ */ jsx(Text, { children: `You have ${profiles.length} Mobile Provisioning Profiles in your Apple account` }),
131
131
  /* @__PURE__ */ jsx(Text, { children: `${hasUsable ? "One" : "None"} of these can be used by ShipThis` })
132
132
  ] }),
133
- /* @__PURE__ */ jsx(Table, { data: certs.map((cert) => getAppleProfileSummary(cert, project, credentialsResponse.data)) }),
133
+ profiles.length > 0 && /* @__PURE__ */ jsx(Table, { data: profiles.map((cert) => getAppleProfileSummary(cert, project, credentialsResponse.data)) }),
134
134
  !hasUsable && /* @__PURE__ */ jsx(Box, { marginTop: 1, children: /* @__PURE__ */ jsx(Text, { bold: true, children: "You do not have a usable Mobile Provisioning Profile. To ship an iOS game, you will need a usable Mobile Provisioning Profile." }) })
135
- ] })
135
+ ] }),
136
+ profiles && !hasUsable && /* @__PURE__ */ jsx(NextSteps, { steps: ["shipthis game ios profile create"] })
136
137
  ] });
137
138
  };
138
139
 
@@ -143,7 +144,7 @@ const ProjectCredentialsTable = ({ credentialTypeName, queryProps, ...boxProps }
143
144
  /* @__PURE__ */ jsx(Title, { children: `${credentialTypeName}s in your ShipThis account` }),
144
145
  /* @__PURE__ */ jsx(Box, { marginLeft: 2, marginBottom: 1, flexDirection: "column", children: /* @__PURE__ */ jsx(Text, { children: hasActive ? `You have an active ${credentialTypeName} in your ShipThis account.` : `You DO NOT have an active ${credentialTypeName} which ShipThis can use.` }) }),
145
146
  isLoading && /* @__PURE__ */ jsx(Spinner, { type: "dots" }),
146
- data && /* @__PURE__ */ jsx(Table, { data: data.data.map(getProjectCredentialSummary) })
147
+ data && data.data.length > 0 && /* @__PURE__ */ jsx(Table, { data: data.data.map(getProjectCredentialSummary) })
147
148
  ] });
148
149
  };
149
150
 
@@ -173,8 +174,7 @@ class GameIosProfileStatus extends BaseGameCommand {
173
174
  queryProps: { platform: Platform.IOS, type: CredentialsType.CERTIFICATE, projectId: game.id }
174
175
  }
175
176
  ),
176
- showApple && /* @__PURE__ */ jsx(AppleProfilesTable, { ctx, project: game }),
177
- /* @__PURE__ */ jsx(NextSteps, { steps: [] })
177
+ showApple && /* @__PURE__ */ jsx(AppleProfilesTable, { ctx, project: game })
178
178
  ] })
179
179
  );
180
180
  }
@@ -7,7 +7,8 @@ ShipThis allows you to list and download your builds.
7
7
 
8
8
  :::tip
9
9
  The `game build` topic relates to the files which are generated by ShipThis from
10
- your game code. It should not be confused with the command [`shipthis game ship`](/docs/reference/game/ship).
10
+ your game code. It should not be confused with the command [`shipthis game ship`](/docs/reference/game/ship)
11
+ which is for triggering a new compilation of your game.
11
12
  :::
12
13
 
13
14
 
@@ -9,14 +9,14 @@ The `shipthis game create` command is the first step run by the wizard
9
9
 
10
10
  Creates a new game in your [ShipThis account](https://shipthis.cc/games).
11
11
 
12
- ShipThis will read the name of your game from your `project.godot` file. You will be
12
+ ShipThis will read the name of your game from your **project.godot** file. You will be
13
13
  prompted to confirm this name, or you can specify one with the `--name` flag.
14
14
 
15
- If there is already a ShipThis game config file (`shipthis.json`) in the current
15
+ If there is already a ShipThis game config file (**shipthis.json**) in the current
16
16
  directory then you will need to use the `--force` flag to create a new game and
17
17
  overwrite this file with the config for the new game.
18
18
 
19
- ShipThis will detect the version of Godot you are using from your `project.godot`
19
+ ShipThis will detect the version of Godot you are using from your **project.godot**
20
20
  file. This can be changed with the [`shipthis game details`](/docs/reference/game/details)
21
21
  command.
22
22
 
@@ -1,13 +1,13 @@
1
1
  # Topic: `game ios app`
2
2
 
3
- Commands in the `game ios app` topic are prefixed `shipthis game ios app`. They relate to the App Store App and BundleId for for a specific game (generally in the currently directory).
3
+ Commands in the `game ios app` topic are prefixed `shipthis game ios app`. They relate to the App Store App and BundleId for a specific game (generally in the currently directory).
4
4
 
5
5
  :::info
6
6
  An **App Store App** is the public-facing application available in the App Store. It includes metadata like descriptions, screenshots, and submission details, representing the final product users download.
7
7
 
8
8
  A **Bundle ID** is a unique identifier for your app within Apple’s ecosystem. It connects your app to services, certificates, and provisioning profiles, ensuring it can be built, run, and managed correctly.
9
9
 
10
- **You can view the registered Bundle IDs (Identifiers) and their associated capabilities in the [Apple Developer Portal](https://developer.apple.com/account/resources/identifiers/list)**
10
+ **You can view the registered Bundle IDs (Identifiers) and their associated capabilities in the [Apple Developer Portal](https://developer.apple.com/account/resources/identifiers/list).**
11
11
 
12
12
  :::
13
13
 
@@ -1,17 +1,40 @@
1
1
  # Topic: `game ios profile`
2
2
 
3
- Commands related to the App Store Provisioning Profiles for this Game
3
+ Commands in the `game ios profile` topic are prefixed `shipthis game ios profile`. They relate to the App Store Mobile Provisioning Profiles for a specific game (generally in the currently directory).
4
4
 
5
+ :::info
6
+ A **Provisioning Profile** authorizes your app to run on devices and access Apple services. It is a digitally signed XML file issued by Apple that combines your App ID, developer certificate, entitlements, and device identifiers. It’s essential for development and distribution.
5
7
 
6
- ## Commands
8
+ **You can view the registered Profiles in the [Apple Developer Portal](https://developer.apple.com/account/resources/profiles/list).**
9
+
10
+ ShipThis
11
+ :::
12
+
13
+ :::tip
14
+ You will need to be authenticated against ShipThis and Apple before you can use
15
+ these commands. To do that please run the following commands first:
7
16
 
17
+ - [`shipthis login`](/docs/reference/login)
18
+ - [`shipthis apple login`](/docs/reference/apple/login)
8
19
 
9
- ### game ios profile create
20
+ :::
21
+
22
+ ## Commands
23
+
24
+ ### `game ios profile create`
10
25
 
11
26
  #### Description
12
27
 
13
28
  Creates a Mobile Provisioning Profile in the Apple Developer Portal.
14
29
 
30
+ :::tip
31
+ You will need a valid iOS Distribution Certificate before you can create a
32
+ Provisioning profile. To do that please run:
33
+
34
+ - [`shipthis apple certificate create`](/docs/reference/apple/certificate#apple-certificate-create)
35
+
36
+ :::
37
+
15
38
  #### Help Output
16
39
 
17
40
  ```
@@ -30,7 +53,7 @@ EXAMPLES
30
53
  $ shipthis game ios profile create
31
54
  ```
32
55
 
33
- ### game ios profile export
56
+ ### `game ios profile export`
34
57
 
35
58
  #### Description
36
59
 
@@ -56,7 +79,7 @@ EXAMPLES
56
79
  $ shipthis game ios profile export userProfile.zip
57
80
  ```
58
81
 
59
- ### game ios profile import
82
+ ### `game ios profile import`
60
83
 
61
84
  #### Description
62
85
 
@@ -82,7 +105,7 @@ EXAMPLES
82
105
  $ shipthis game ios profile import profile.zip
83
106
  ```
84
107
 
85
- ### game ios profile status
108
+ ### `game ios profile status`
86
109
 
87
110
  #### Description
88
111
 
package/docs/login.md CHANGED
@@ -4,6 +4,12 @@
4
4
 
5
5
  Authenticate - will create a new account if one does not exist.
6
6
 
7
+ :::info
8
+ ShipThis is a cloud build command-line tool. To enable this, you need to create
9
+ an account. There is also a [web dashboard](/dashboard) where you can view details
10
+ of your games.
11
+ :::
12
+
7
13
  ## Example
8
14
 
9
15
  [![asciicast](https://asciinema.org/a/jPd9Mqafw98hEj4KEtkZod3ny.svg)](https://asciinema.org/a/jPd9Mqafw98hEj4KEtkZod3ny)
@@ -1508,5 +1508,5 @@
1508
1508
  ]
1509
1509
  }
1510
1510
  },
1511
- "version": "0.0.33"
1511
+ "version": "0.0.34"
1512
1512
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "shipthis",
3
3
  "description": "A command line tool which manages releasing your Godot games to the iOS App Store.",
4
- "version": "0.0.33",
4
+ "version": "0.0.34",
5
5
  "author": "Hello Invent Ltd",
6
6
  "bin": {
7
7
  "shipthis": "./bin/run.js"