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.
- package/dist/commands/apple/certificate/status.js +2 -3
- package/dist/commands/game/ios/profile/create.js +7 -3
- package/dist/commands/game/ios/profile/status.js +10 -10
- package/docs/game/build.md +2 -1
- package/docs/game/create.md +3 -3
- package/docs/game/ios/app.md +2 -2
- package/docs/game/ios/profile.md +29 -6
- package/docs/login.md +6 -0
- package/oclif.manifest.json +1 -1
- package/package.json +1 -1
|
@@ -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
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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:
|
|
124
|
-
const hasUsable =
|
|
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
|
-
|
|
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 ${
|
|
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:
|
|
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
|
}
|
package/docs/game/build.md
CHANGED
|
@@ -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
|
|
package/docs/game/create.md
CHANGED
|
@@ -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
|
|
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 (
|
|
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
|
|
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
|
|
package/docs/game/ios/app.md
CHANGED
|
@@ -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
|
|
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
|
|
package/docs/game/ios/profile.md
CHANGED
|
@@ -1,17 +1,40 @@
|
|
|
1
1
|
# Topic: `game ios profile`
|
|
2
2
|
|
|
3
|
-
Commands
|
|
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
|
-
|
|
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
|
-
|
|
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
|
[](https://asciinema.org/a/jPd9Mqafw98hEj4KEtkZod3ny)
|
package/oclif.manifest.json
CHANGED
package/package.json
CHANGED