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.
- package/README.md +46 -33
- package/assets/markdown/confirm-delete-android-keystore.md.ejs +22 -0
- package/assets/markdown/confirm-delete-android-serviceaccountkey.md.ejs +24 -0
- package/assets/markdown/confirm-delete-apple-credential.md.ejs +29 -0
- package/assets/markdown/ship-success.md.ejs +4 -0
- package/dist/{AppleBundleIdDetails-pEVOUXTQ.js → AppleBundleIdDetails-CgleH2pl.js} +3 -3
- package/dist/{Command-DhAVAdiI.js → Command-7dCv1F9p.js} +1 -1
- package/dist/{CommandGame-C-oV-hb4.js → CommandGame-er5Ql6hq.js} +2 -2
- package/dist/{Create-Dg9ZlwEd.js → Create-pLXESvEq.js} +1 -1
- package/dist/{GameStatus-Dm9TqFfW.js → GameStatus-B_Iw9tYr.js} +1 -1
- package/dist/{Import-BFNNkN-I.js → Import-fIsrfsmr.js} +2 -2
- package/dist/{JobLogTail-RTNIiAUk.js → JobLogTail-BPcQ8ghI.js} +2 -2
- package/dist/{JobProgress-dFWcT0CQ.js → JobProgress-CpEatVPs.js} +10 -6
- package/dist/{JobStatusTable-BlvMuWF7.js → JobStatusTable-BmJLzsUN.js} +2 -2
- package/dist/{ProjectCredentialsTable-CMBnYLou.js → ProjectCredentialsTable-DvPDhi7C.js} +5 -3
- package/dist/{UserCredentialsTable-oxE3mDmE.js → UserCredentialsTable-MBm1vAP3.js} +4 -2
- package/dist/{baseAppleCommand-cnLvBz95.js → baseAppleCommand-uL0Gnav4.js} +1 -1
- package/dist/{baseGameAndroidCommand-DUDYisYm.js → baseGameAndroidCommand-CKTSQyZV.js} +1 -1
- package/dist/commands/apiKey/create.js +3 -2
- package/dist/commands/apiKey/list.js +3 -2
- package/dist/commands/apiKey/revoke.js +3 -2
- package/dist/commands/apple/apiKey/create.js +7 -6
- package/dist/commands/apple/apiKey/delete.js +118 -0
- package/dist/commands/apple/apiKey/export.js +6 -5
- package/dist/commands/apple/apiKey/import.js +6 -5
- package/dist/commands/apple/apiKey/status.js +4 -3
- package/dist/commands/apple/certificate/create.js +7 -6
- package/dist/commands/apple/certificate/delete.js +127 -0
- package/dist/commands/apple/certificate/export.js +6 -5
- package/dist/commands/apple/certificate/import.js +6 -5
- package/dist/commands/apple/certificate/status.js +4 -3
- package/dist/commands/apple/login.js +12 -3
- package/dist/commands/apple/status.js +3 -2
- package/dist/commands/dashboard.js +2 -1
- package/dist/commands/game/android/apiKey/connect.js +8 -7
- package/dist/commands/game/android/apiKey/create.js +10 -9
- package/dist/commands/game/android/apiKey/delete.js +100 -0
- package/dist/commands/game/android/apiKey/export.js +6 -5
- package/dist/commands/game/android/apiKey/import.js +6 -5
- package/dist/commands/game/android/apiKey/invite.js +3 -2
- package/dist/commands/game/android/apiKey/policy.js +3 -2
- package/dist/commands/game/android/apiKey/status.js +6 -5
- package/dist/commands/game/android/keyStore/create.js +7 -6
- package/dist/commands/game/android/keyStore/delete.js +100 -0
- package/dist/commands/game/android/keyStore/export.js +5 -4
- package/dist/commands/game/android/keyStore/import.js +8 -7
- package/dist/commands/game/android/keyStore/status.js +5 -4
- package/dist/commands/game/android/status.js +2 -1
- package/dist/commands/game/build/download.js +3 -2
- package/dist/commands/game/build/list.js +4 -3
- package/dist/commands/game/create.js +2 -1
- package/dist/commands/game/details.js +9 -5
- package/dist/commands/game/export.js +2 -1
- package/dist/commands/game/ios/app/addTester.js +4 -3
- package/dist/commands/game/ios/app/create.js +3 -2
- package/dist/commands/game/ios/app/status.js +6 -5
- package/dist/commands/game/ios/app/sync.js +4 -3
- package/dist/commands/game/ios/profile/create.js +6 -5
- package/dist/commands/game/ios/profile/delete.js +123 -0
- package/dist/commands/game/ios/profile/export.js +5 -4
- package/dist/commands/game/ios/profile/import.js +5 -4
- package/dist/commands/game/ios/profile/status.js +8 -47
- package/dist/commands/game/ios/status.js +8 -7
- package/dist/commands/game/ios/wizard.js +2 -2
- package/dist/commands/game/job/list.js +3 -2
- package/dist/commands/game/job/status.js +6 -5
- package/dist/commands/game/list.js +3 -2
- package/dist/commands/game/ship.js +18 -10
- package/dist/commands/game/status.js +5 -4
- package/dist/commands/game/wizard.js +14 -13
- package/dist/commands/internal/fastlane.js +2 -1
- package/dist/commands/internal/readme.js +2 -1
- package/dist/commands/login.js +2 -1
- package/dist/commands/status.js +2 -2
- package/dist/{export-Bd552LBe.js → export-BwwAjG_F.js} +1 -1
- package/dist/{import-D-EL9sQJ.js → import-OgFrUsqw.js} +1 -1
- package/dist/{index-DwATmUTQ.js → index-C1XpCT_9.js} +4 -4
- package/dist/index-C2omlhEs.js +48 -0
- package/dist/{index-BtPf4vzY.js → index-DHioYOIm.js} +6 -3
- package/dist/{index-DCN43FhY.js → index-DVEYxVsH.js} +3 -3
- package/dist/{upload-Dm38PqhN.js → upload-5s3sy2jF.js} +1 -1
- package/dist/{useAppleApp-BKPntZPm.js → useAppleApp-szQ_Kg5S.js} +1 -1
- package/dist/{useAppleBundleId-DvQKEEy4.js → useAppleBundleId-BarLcidd.js} +1 -1
- package/dist/useAppleProfiles-C2U4NzC3.js +63 -0
- package/dist/{useGoogleStatus-D9jjGa--.js → useGoogleStatus-zfnjhtNB.js} +1 -1
- package/dist/{useProjectCredentials-BjsS28hP.js → useProjectCredentials-DbynNY96.js} +1 -1
- package/dist/{useWebSocket-CIeyHqxG.js → useWebSocket-h7smqhZQ.js} +1 -1
- package/docs/apple/apiKey/delete.md +25 -0
- package/docs/apple/apiKey.md +26 -0
- package/docs/apple/certificate/delete.md +25 -0
- package/docs/apple/certificate.md +26 -0
- package/docs/game/android/apiKey/delete.md +25 -0
- package/docs/game/android/apiKey.md +26 -0
- package/docs/game/android/keyStore/delete.md +25 -0
- package/docs/game/android/keyStore.md +26 -0
- package/docs/game/details.md +13 -10
- package/docs/game/ios/profile/delete.md +26 -0
- package/docs/game/ios/profile.md +27 -0
- package/docs/game/ship.md +5 -4
- package/package.json +6 -1
- package/dist/index-1H48f5j2.js +0 -24
package/README.md
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# ShipThis <a href="https://discord.gg/gPjn3S99k4"><img alt="discord" src="https://img.shields.io/discord/1304144717239554069?style=flat-square&label=%F0%9F%92%AC%20discord&color=00ACD7"></a><a href="https://shipth.is/?ref=github_readme"><img src="docs/assets/st.png" align="right" height="80" alt="ShipThis" /></a>
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
* Build iOS and Android binaries (APK, AAB, IPA) for your **Godot** game
|
|
4
|
+
* Publish to the **App Store** and **Google Play** when you are ready
|
|
5
|
+
* Automatically manages **certificates**, **keystores**, **API keys**, and **provisioning profiles**
|
|
6
|
+
* **Free cloud builds** for most solo devs
|
|
6
7
|
|
|
7
8
|
<p align="center">
|
|
8
9
|
<a href="https://shipth.is/docs/reference/game/ship?ref=github_readme">
|
|
@@ -20,13 +21,12 @@
|
|
|
20
21
|
### Requirements
|
|
21
22
|
|
|
22
23
|
- A Godot 3.6 or 4.x game
|
|
23
|
-
- [Node.js](https://nodejs.org/en/download/) version 18
|
|
24
|
-
- **To publish an Android game** - a [Play Console
|
|
25
|
-
- **To
|
|
24
|
+
- [Node.js](https://nodejs.org/en/download/) version 18 or above
|
|
25
|
+
- **To publish an Android game** - a [Play Console Developer account](https://play.google.com/apps/publish/signup) (not required for building an APK/AAB)
|
|
26
|
+
- **To publish an iOS game** - an [Apple Developer account](https://developer.apple.com) (not required for building an IPA)
|
|
26
27
|
|
|
27
28
|
### 1. Install ShipThis
|
|
28
29
|
|
|
29
|
-
|
|
30
30
|
Install via the [NPM package manager](https://www.npmjs.com/):
|
|
31
31
|
|
|
32
32
|
```bash
|
|
@@ -37,14 +37,15 @@ npm install -g shipthis
|
|
|
37
37
|
|
|
38
38
|
Set up an account with ShipThis by logging in for the first time using the [`shipthis login`](https://shipth.is/docs/reference/login?ref=github_readme) command.
|
|
39
39
|
|
|
40
|
-
|
|
41
40
|
```bash
|
|
42
41
|
shipthis login
|
|
43
42
|
```
|
|
44
43
|
|
|
45
44
|
### 3. Set up your game
|
|
46
45
|
|
|
47
|
-
Run the [wizard command](https://shipth.is/docs/reference/game/wizard?ref=github_readme) to configure your game on ShipThis
|
|
46
|
+
Run the [wizard command](https://shipth.is/docs/reference/game/wizard?ref=github_readme) to configure your game on ShipThis; it will set up everything needed to automatically build and publish your Godot game.
|
|
47
|
+
|
|
48
|
+
The wizard command takes a platform parameter: either **android** or **ios**. Run the command from within a Godot game directory (with a **project.godot** file):
|
|
48
49
|
|
|
49
50
|
#### Set up an Android game
|
|
50
51
|
|
|
@@ -91,12 +92,11 @@ shipthis game ship
|
|
|
91
92
|
- Having issues? Check the [Troubleshooting](https://shipth.is/docs/troubleshooting?ref=github_readme) or [join our Discord](https://discord.gg/gPjn3S99k4)
|
|
92
93
|
- For detailed documentation, visit [shipth.is/docs](https://shipth.is/docs?ref=github_readme)
|
|
93
94
|
|
|
94
|
-
|
|
95
95
|
## FAQ
|
|
96
96
|
|
|
97
97
|
### Do I need a Mac to build for iOS?
|
|
98
98
|
|
|
99
|
-
No, you do not need a Mac, but you will need an Apple Developer
|
|
99
|
+
No, you do not need a Mac, but if you want to publish to TestFlight or the Apple App Store then you will need an Apple Developer account.
|
|
100
100
|
|
|
101
101
|
ShipThis handles iOS builds on managed macOS cloud servers. The CLI connects to the Apple Developer Portal and sets everything up for you.
|
|
102
102
|
|
|
@@ -104,33 +104,38 @@ ShipThis handles iOS builds on managed macOS cloud servers. The CLI connects to
|
|
|
104
104
|
|
|
105
105
|
We support **all stable Godot versions since 3.6**, including:
|
|
106
106
|
|
|
107
|
-
| 3.6 | 4.0
|
|
108
|
-
|
|
109
|
-
| 3.6.1
|
|
110
|
-
|
|
|
111
|
-
|
|
|
112
|
-
|
|
|
107
|
+
| [3.6](https://github.com/godotengine/godot/releases/tag/3.6-stable) | [4.0](https://github.com/godotengine/godot/releases/tag/4.0-stable) | [4.1](https://github.com/godotengine/godot/releases/tag/4.1-stable) | [4.2](https://github.com/godotengine/godot/releases/tag/4.2-stable) | [4.3](https://github.com/godotengine/godot/releases/tag/4.3-stable) | [4.4](https://github.com/godotengine/godot/releases/tag/4.4-stable) | [4.5](https://github.com/godotengine/godot/releases/tag/4.5-stable) |
|
|
108
|
+
| ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ----------------------------------------------------------------------- |
|
|
109
|
+
| [3.6.1](https://github.com/godotengine/godot/releases/tag/3.6.1-stable) | [4.0.1](https://github.com/godotengine/godot/releases/tag/4.0.1-stable) | [4.1.1](https://github.com/godotengine/godot/releases/tag/4.1.1-stable) | [4.2.1](https://github.com/godotengine/godot/releases/tag/4.2.1-stable) | [4.3.1 *](https://github.com/shipth-is/godot-android-sdk-upgrade/releases/tag/4.3.1) | [4.4.1](https://github.com/godotengine/godot/releases/tag/4.4.1-stable) | [4.5.1](https://github.com/godotengine/godot/releases/tag/4.5.1-stable) |
|
|
110
|
+
| [3.6.2](https://github.com/godotengine/godot/releases/tag/3.6.2-stable) | [4.0.2](https://github.com/godotengine/godot/releases/tag/4.0.2-stable) | [4.1.2](https://github.com/godotengine/godot/releases/tag/4.1.2-stable) | [4.2.2](https://github.com/godotengine/godot/releases/tag/4.2.2-stable) | | [4.4.2 *](https://github.com/shipth-is/godot-android-sdk-upgrade/releases/tag/4.4.2) | |
|
|
111
|
+
| | [4.0.3](https://github.com/godotengine/godot/releases/tag/4.0.3-stable) | [4.1.3](https://github.com/godotengine/godot/releases/tag/4.1.3-stable) | [4.2.3 *](https://github.com/shipth-is/godot-android-sdk-upgrade/releases/tag/4.2.3) | | | |
|
|
112
|
+
| | [4.0.4](https://github.com/godotengine/godot/releases/tag/4.0.4-stable) | [4.1.4](https://github.com/godotengine/godot/releases/tag/4.1.4-stable) | | | | |
|
|
113
|
+
| | [4.0.5 *](https://github.com/shipth-is/godot-android-sdk-upgrade/releases/tag/4.0.5) | [4.1.5 *](https://github.com/shipth-is/godot-android-sdk-upgrade/releases/tag/4.1.5) | | | | |
|
|
113
114
|
|
|
114
|
-
|
|
115
|
+
**\* Custom builds** - [maintained by us](https://github.com/shipth-is/godot-android-sdk-upgrade/) to support **Android SDK 35**.
|
|
115
116
|
|
|
117
|
+
You can read more in our [Godot versioning guide](https://shipth.is/docs/guides/godot-versioning?ref=github_readme).
|
|
116
118
|
|
|
117
|
-
### Can I build my game as APK without
|
|
119
|
+
### Can I build my game as APK/AAB/IPA without an Apple or Google account?
|
|
118
120
|
|
|
119
121
|
Yes.
|
|
120
122
|
|
|
121
|
-
|
|
123
|
+
The [wizard command](https://shipth.is/docs/reference/game/wizard?ref=github_readme) is designed to generate your own credentials for signing and publishing, but you might not need this when initially building your game.
|
|
122
124
|
|
|
123
|
-
You can create a ShipThis account, create the game
|
|
125
|
+
You can create a ShipThis account, create the game and then run the [ship command](https://shipth.is/docs/reference/game/ship?ref=github_readme) using demo credentials. Later, when you need to set up publishing, you can re-run the wizard command.
|
|
124
126
|
|
|
125
127
|
```bash
|
|
126
128
|
# Create a ShipThis game - run this in a dir with a project.godot file
|
|
127
|
-
shipthis game create --name "My Game"
|
|
129
|
+
shipthis game create --name "My Game"
|
|
128
130
|
|
|
129
|
-
#
|
|
130
|
-
shipthis game android
|
|
131
|
+
# Run the build, use demo credentials, and download as game.apk
|
|
132
|
+
shipthis game ship --follow --platform android --useDemoCredentials --downloadAPK game.apk
|
|
131
133
|
|
|
132
|
-
# Run the build,
|
|
133
|
-
shipthis game ship --follow --platform android --
|
|
134
|
+
# Run the build, use demo credentials, and download as game.aab
|
|
135
|
+
shipthis game ship --follow --platform android --useDemoCredentials --download game.aab
|
|
136
|
+
|
|
137
|
+
# Run the build, use demo credentials, and download as game.ipa
|
|
138
|
+
shipthis game ship --follow --platform ios --useDemoCredentials --download game.ipa
|
|
134
139
|
```
|
|
135
140
|
|
|
136
141
|
### Do I need to create an export_presets.cfg file?
|
|
@@ -145,9 +150,11 @@ Currently free while in open beta. Planned pricing is on the [pricing page](http
|
|
|
145
150
|
|
|
146
151
|
### What does the `shipthis game wizard` do?
|
|
147
152
|
|
|
148
|
-
The wizard
|
|
153
|
+
The wizard is designed to set up everything you need to automatically build and publish your game to the Apple App Store or Google Play.
|
|
154
|
+
|
|
155
|
+
The [wizard command](https://shipth.is/docs/reference/game/wizard?ref=github_readme) runs different steps for Android and iOS. Each "step" is another ShipThis command - meaning you can run each step by itself. The wizard can be re-run any number of times.
|
|
149
156
|
|
|
150
|
-
The Android steps are described in the [Android
|
|
157
|
+
The Android steps are described in the [Android setup guide](https://shipth.is/docs/android?ref=github_readme).
|
|
151
158
|
The iOS steps are described in the [iOS setup guide](https://shipth.is/docs/ios).
|
|
152
159
|
|
|
153
160
|
<details>
|
|
@@ -197,7 +204,7 @@ The iOS steps are described in the [iOS setup guide](https://shipth.is/docs/ios)
|
|
|
197
204
|
|
|
198
205
|
1. Invite the Service Account
|
|
199
206
|
|
|
200
|
-
Before the Service Account API Key can submit your games automatically, you will need to invite the Service Account to your Google Play account. To do this you will need your Google Play
|
|
207
|
+
Before the Service Account API Key can submit your games automatically, you will need to invite the Service Account to your Google Play account. To do this you will need your Google Play account ID.
|
|
201
208
|
|
|
202
209
|
```bash
|
|
203
210
|
shipthis game android apiKey invite XXXXXXXXX
|
|
@@ -292,7 +299,13 @@ If a build fails, rerun it for only the failing platform with the `--follow` fla
|
|
|
292
299
|
shipthis game ship --platform android --follow
|
|
293
300
|
```
|
|
294
301
|
|
|
295
|
-
|
|
302
|
+
For additional debugging, you can include the `--verbose` flag - this enables detailed logging locally and on the build server, including running the Godot export with verbose output:
|
|
303
|
+
|
|
304
|
+
```bash
|
|
305
|
+
shipthis game ship --platform ios --follow --verbose
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
You can review logs at any time in the [dashboard](https://shipth.is/dashboard?ref=github_readme) under the "Jobs" tab.
|
|
296
309
|
|
|
297
310
|
See the [Troubleshooting Guide](https://shipth.is/docs/troubleshooting?ref=github_readme) for common checks.
|
|
298
311
|
|
|
@@ -302,7 +315,7 @@ If the issue persists, we can help you directly in our [Discord](https://discord
|
|
|
302
315
|
|
|
303
316
|
Yes. ShipThis works with CI/CD pipelines, allowing you to run automated builds without an interactive shell.
|
|
304
317
|
|
|
305
|
-
To get started, create an API key
|
|
318
|
+
To get started, create an API key for your pipeline environment:
|
|
306
319
|
|
|
307
320
|
```bash
|
|
308
321
|
# API keys can have a maximum lifetime of 1 year
|
|
@@ -333,7 +346,7 @@ ShipThis uses short-lived, signed URLs and ephemeral build environments.
|
|
|
333
346
|
We store:
|
|
334
347
|
|
|
335
348
|
- Android Keystores
|
|
336
|
-
- Google Play Service
|
|
349
|
+
- Google Play Service account API keys
|
|
337
350
|
- iOS provisioning profiles
|
|
338
351
|
- App Store Connect API keys
|
|
339
352
|
- iOS distribution certificates
|
|
@@ -343,7 +356,7 @@ We store:
|
|
|
343
356
|
### 🗂 Topics
|
|
344
357
|
|
|
345
358
|
- [apiKey](https://shipth.is/docs/reference/apiKey?ref=github_readme) - Commands related to ShipThis API Keys
|
|
346
|
-
- [apple](https://shipth.is/docs/reference/apple?ref=github_readme) - Commands that relate to linking your ShipThis account with your Apple Developer
|
|
359
|
+
- [apple](https://shipth.is/docs/reference/apple?ref=github_readme) - Commands that relate to linking your ShipThis account with your Apple Developer account
|
|
347
360
|
- [game](https://shipth.is/docs/reference/game?ref=github_readme) - Commands that relate to configuring the specific game in the current working directory.
|
|
348
361
|
|
|
349
362
|
### 🔧 Commands
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Please confirm deletion
|
|
2
|
+
|
|
3
|
+
## Are you sure you want to delete this Android KeyStore?
|
|
4
|
+
|
|
5
|
+
<% if (immediate) { %>
|
|
6
|
+
- This action **will delete the credential from ShipThis immediately and cannot be undone**.
|
|
7
|
+
<% } else { %>
|
|
8
|
+
- This action **will delete the credential from ShipThis in the next 24 hours and cannot be undone**.
|
|
9
|
+
- To delete the credential immediately, rerun the command with the `--immediate` flag.
|
|
10
|
+
<% } %>
|
|
11
|
+
|
|
12
|
+
## Export your credential (optional but recommended)
|
|
13
|
+
|
|
14
|
+
If you haven't already done so, you can export your credential to a local file for safekeeping before deleting it. You can do this by running the following command:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
<%= exportCommand %>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Confirm deletion
|
|
21
|
+
|
|
22
|
+
Please type **<%= confirmString %>** to confirm, or rerun the command with the `--iAmSure` flag.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Please confirm deletion
|
|
2
|
+
|
|
3
|
+
## Are you sure you want to delete this Android Service Account API Key?
|
|
4
|
+
|
|
5
|
+
<% if (immediate) { %>
|
|
6
|
+
- This action **will delete the credential from ShipThis immediately and cannot be undone**.
|
|
7
|
+
<% } else { %>
|
|
8
|
+
- This action **will delete the credential from ShipThis in the next 24 hours and cannot be undone**.
|
|
9
|
+
- To delete the credential immediately, rerun the command with the `--immediate` flag.
|
|
10
|
+
<% } %>
|
|
11
|
+
|
|
12
|
+
**Note: this will NOT delete the Service Account in Google Cloud Console. You will need to do that manually if you wish to fully delete the Service Account.**
|
|
13
|
+
|
|
14
|
+
## Export your credential (optional but recommended)
|
|
15
|
+
|
|
16
|
+
If you haven't already done so, you can export your credential to a local file for safekeeping before deleting it. You can do this by running the following command:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
<%= exportCommand %>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Confirm deletion
|
|
23
|
+
|
|
24
|
+
Please type **<%= confirmString %>** to confirm, or rerun the command with the `--iAmSure` flag.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# Please confirm deletion
|
|
2
|
+
|
|
3
|
+
## Are you sure you want to delete this <%= credentialType %>?
|
|
4
|
+
|
|
5
|
+
<% if (immediate) { %>
|
|
6
|
+
- This action **will delete the credential from ShipThis immediately and cannot be undone**.
|
|
7
|
+
<% } else { %>
|
|
8
|
+
- This action **will delete the credential from ShipThis in the next 24 hours and cannot be undone**.
|
|
9
|
+
- To delete the credential immediately, rerun the command with the `--immediate` flag.
|
|
10
|
+
<% } %>
|
|
11
|
+
<% if (revokeInApple) { %>
|
|
12
|
+
- This action **will also revoke the credential in Apple and cannot be undone**.
|
|
13
|
+
<% } else { %>
|
|
14
|
+
- This action will **NOT** revoke the credential in Apple.
|
|
15
|
+
- To also revoke the credential in Apple, rerun the command with the `--revokeInApple` flag.
|
|
16
|
+
<% } %>
|
|
17
|
+
|
|
18
|
+
## Export your credential (optional but recommended)
|
|
19
|
+
|
|
20
|
+
If you haven't already done so, you can export your credential to a local file for safekeeping before deleting it. You can do this by running the following command:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
<%= exportCommand %>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Confirm deletion
|
|
27
|
+
|
|
28
|
+
Please type **<%= confirmString %>** to confirm, or rerun the command with the `--iAmSure` flag.
|
|
29
|
+
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
**Your game has been successfully built<% if (wasPublished) { %> and published<% } %>.**
|
|
4
4
|
|
|
5
|
+
<% if (usedDemoCredentials) { %>
|
|
6
|
+
> **Note: Demo credentials were used for this build, so the game was not published.**
|
|
7
|
+
<% } %>
|
|
8
|
+
|
|
5
9
|
## Next Steps
|
|
6
10
|
|
|
7
11
|
- See all builds in the **Dashboard** [<%= gameBuildsUrl %>](<%= gameBuildsUrl %>)
|
|
@@ -11,13 +11,13 @@ import 'readline-sync';
|
|
|
11
11
|
import 'luxon';
|
|
12
12
|
import 'axios';
|
|
13
13
|
import 'isomorphic-git';
|
|
14
|
-
import './index-
|
|
14
|
+
import './index-DHioYOIm.js';
|
|
15
15
|
import '@oclif/core';
|
|
16
16
|
import '@tanstack/react-query';
|
|
17
17
|
import 'react';
|
|
18
18
|
import 'crypto-js';
|
|
19
19
|
import 'uuid';
|
|
20
|
-
import { u as useAppleApp } from './useAppleApp-
|
|
20
|
+
import { u as useAppleApp } from './useAppleApp-szQ_Kg5S.js';
|
|
21
21
|
import 'fast-glob';
|
|
22
22
|
import 'yazl';
|
|
23
23
|
import 'socket.io-client';
|
|
@@ -30,7 +30,7 @@ import 'open';
|
|
|
30
30
|
import 'marked';
|
|
31
31
|
import 'marked-terminal';
|
|
32
32
|
import 'qrcode';
|
|
33
|
-
import { u as useAppleBundleId } from './useAppleBundleId-
|
|
33
|
+
import { u as useAppleBundleId } from './useAppleBundleId-BarLcidd.js';
|
|
34
34
|
|
|
35
35
|
const AppleAppDetails = (props) => {
|
|
36
36
|
const { data, isLoading } = useAppleApp(props);
|
|
@@ -2,7 +2,7 @@ import { jsx } from 'react/jsx-runtime';
|
|
|
2
2
|
import { QueryClientProvider } from '@tanstack/react-query';
|
|
3
3
|
import { useScreenSize } from 'fullscreen-ink';
|
|
4
4
|
import { Box } from 'ink';
|
|
5
|
-
import {
|
|
5
|
+
import { X as queryClient, Y as CommandProvider } from './index-DHioYOIm.js';
|
|
6
6
|
import 'axios';
|
|
7
7
|
import 'node:fs';
|
|
8
8
|
import 'crypto-js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import {
|
|
3
|
-
import { C as Command } from './Command-
|
|
2
|
+
import { Z as GameProvider } from './index-DHioYOIm.js';
|
|
3
|
+
import { C as Command } from './Command-7dCv1F9p.js';
|
|
4
4
|
|
|
5
5
|
const CommandGame = ({ children, command }) => /* @__PURE__ */ jsx(Command, { command, children: /* @__PURE__ */ jsx(GameProvider, { children }) });
|
|
6
6
|
|
|
@@ -3,7 +3,7 @@ import { useQueryClient } from '@tanstack/react-query';
|
|
|
3
3
|
import axios from 'axios';
|
|
4
4
|
import { Box } from 'ink';
|
|
5
5
|
import { useContext } from 'react';
|
|
6
|
-
import { R as GameContext, t as getAuthedHeaders, s as API_URL,
|
|
6
|
+
import { R as GameContext, t as getAuthedHeaders, s as API_URL, a0 as cacheKeys } from './index-DHioYOIm.js';
|
|
7
7
|
import 'ink-spinner';
|
|
8
8
|
import 'node:crypto';
|
|
9
9
|
import 'node:fs';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import { Text, Box } from 'ink';
|
|
3
3
|
import { useState, useEffect, useContext } from 'react';
|
|
4
|
-
import {
|
|
4
|
+
import { g as getShortUUID, f as getShortDate, P as Platform, N as makeHumanReadable, O as getProject, Q as getProjectPlatformProgress, R as GameContext, S as CommandContext } from './index-DHioYOIm.js';
|
|
5
5
|
import 'ink-spinner';
|
|
6
6
|
import '@tanstack/react-query';
|
|
7
7
|
import 'axios';
|
|
@@ -11,7 +11,7 @@ import 'readline-sync';
|
|
|
11
11
|
import 'luxon';
|
|
12
12
|
import 'axios';
|
|
13
13
|
import 'isomorphic-git';
|
|
14
|
-
import {
|
|
14
|
+
import { X as queryClient, a0 as cacheKeys, P as Platform, C as CredentialsType, R as GameContext } from './index-DHioYOIm.js';
|
|
15
15
|
import '@oclif/core';
|
|
16
16
|
import { useMutation } from '@tanstack/react-query';
|
|
17
17
|
import 'crypto-js';
|
|
@@ -27,7 +27,7 @@ import '@inkjs/ui';
|
|
|
27
27
|
import 'marked';
|
|
28
28
|
import 'marked-terminal';
|
|
29
29
|
import 'qrcode';
|
|
30
|
-
import { i as importCredential } from './import-
|
|
30
|
+
import { i as importCredential } from './import-OgFrUsqw.js';
|
|
31
31
|
|
|
32
32
|
async function importKeystore({ log = () => {
|
|
33
33
|
}, ...opt }) {
|
|
@@ -7,7 +7,7 @@ import { useState, useRef, useEffect } from 'react';
|
|
|
7
7
|
import 'node:fs';
|
|
8
8
|
import 'crypto-js';
|
|
9
9
|
import 'uuid';
|
|
10
|
-
import {
|
|
10
|
+
import { a0 as cacheKeys, t as getAuthedHeaders, s as API_URL, V as castArrayObjectDates, L as JobStatus, ay as useJob, az as castJobDates, aw as castObjectDates, M as getStageColor, aA as getMessageColor, aB as getShortTime } from './index-DHioYOIm.js';
|
|
11
11
|
import 'luxon';
|
|
12
12
|
import 'fast-glob';
|
|
13
13
|
import 'yazl';
|
|
@@ -20,7 +20,7 @@ import 'readline-sync';
|
|
|
20
20
|
import 'isomorphic-git';
|
|
21
21
|
import '@oclif/core';
|
|
22
22
|
import 'fullscreen-ink';
|
|
23
|
-
import { u as useWebSocket } from './useWebSocket-
|
|
23
|
+
import { u as useWebSocket } from './useWebSocket-h7smqhZQ.js';
|
|
24
24
|
import { T as Title } from './Title-BCQtayg6.js';
|
|
25
25
|
import stringLength from 'string-length';
|
|
26
26
|
import stripAnsi from 'strip-ansi';
|
|
@@ -4,7 +4,7 @@ import axios from 'axios';
|
|
|
4
4
|
import fg from 'fast-glob';
|
|
5
5
|
import { v4 } from 'uuid';
|
|
6
6
|
import { ZipFile } from 'yazl';
|
|
7
|
-
import {
|
|
7
|
+
import { X as queryClient, a0 as cacheKeys, z as DEFAULT_SHIPPED_FILES_GLOBS, E as DEFAULT_IGNORED_FILES_GLOBS, am as getNewUploadTicket, an as getFileHash, ao as startJobsFromUpload, ap as getPlatformName } from './index-DHioYOIm.js';
|
|
8
8
|
import { g as getCWDGitInfo } from './git-BpsfNFZ_.js';
|
|
9
9
|
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
10
10
|
import 'ink';
|
|
@@ -13,7 +13,7 @@ import 'react';
|
|
|
13
13
|
import 'crypto-js';
|
|
14
14
|
import 'luxon';
|
|
15
15
|
import 'socket.io-client';
|
|
16
|
-
import { u as useJobWatching } from './JobLogTail-
|
|
16
|
+
import { u as useJobWatching } from './JobLogTail-BPcQ8ghI.js';
|
|
17
17
|
import 'fullscreen-ink';
|
|
18
18
|
import 'string-length';
|
|
19
19
|
import 'strip-ansi';
|
|
@@ -27,13 +27,17 @@ import 'qrcode';
|
|
|
27
27
|
|
|
28
28
|
async function ship({ command, log = () => {
|
|
29
29
|
}, shipFlags }) {
|
|
30
|
-
const
|
|
30
|
+
const commandFlags = command.getFlags();
|
|
31
|
+
const finalFlags = shipFlags || commandFlags;
|
|
32
|
+
const { verbose, useDemoCredentials } = finalFlags;
|
|
31
33
|
verbose && log("Fetching game config...");
|
|
32
34
|
const projectConfig = await command.getProjectConfig();
|
|
33
35
|
if (!projectConfig.project) throw new Error("No project found in project config");
|
|
36
|
+
const projectUsesDemoCredentials = Boolean(projectConfig.project.details?.useDemoCredentials);
|
|
37
|
+
const isUsingDemoCredentials = useDemoCredentials ?? projectUsesDemoCredentials ?? false;
|
|
34
38
|
const hasConfiguredIos = Boolean(projectConfig.project.details?.iosBundleId);
|
|
35
39
|
const hasConfiguredAndroid = Boolean(projectConfig.project.details?.androidPackageName);
|
|
36
|
-
if (!hasConfiguredAndroid && !hasConfiguredIos) {
|
|
40
|
+
if (!isUsingDemoCredentials && !hasConfiguredAndroid && !hasConfiguredIos) {
|
|
37
41
|
throw new Error(
|
|
38
42
|
"No Android or iOS configuration found. Please run `shipthis game wizard android` or `shipthis game wizard ios` to configure your game."
|
|
39
43
|
);
|
|
@@ -77,12 +81,12 @@ async function ship({ command, log = () => {
|
|
|
77
81
|
zipFileMd5
|
|
78
82
|
};
|
|
79
83
|
verbose && log("Starting jobs from upload...");
|
|
80
|
-
const finalFlags = shipFlags || command.getFlags();
|
|
81
84
|
const startJobsOptions = {
|
|
82
85
|
...uploadDetails,
|
|
83
86
|
platform: finalFlags.platform?.toUpperCase(),
|
|
84
87
|
skipPublish: finalFlags.skipPublish,
|
|
85
|
-
verbose: finalFlags.verbose
|
|
88
|
+
verbose: finalFlags.verbose,
|
|
89
|
+
useDemoCredentials: isUsingDemoCredentials
|
|
86
90
|
};
|
|
87
91
|
const jobs = await startJobsFromUpload(uploadTicket.id, startJobsOptions);
|
|
88
92
|
verbose && log("Cleaning up temporary zip file...");
|
|
@@ -3,7 +3,7 @@ import { Box, Text } from 'ink';
|
|
|
3
3
|
import Spinner from 'ink-spinner';
|
|
4
4
|
import { DateTime } from 'luxon';
|
|
5
5
|
import { useState, useEffect } from 'react';
|
|
6
|
-
import { L as JobStatus, I as getJobSummary, M as getStageColor, J as getJobStatusColor } from './index-
|
|
6
|
+
import { L as JobStatus, I as getJobSummary, M as getStageColor, J as getJobStatusColor } from './index-DHioYOIm.js';
|
|
7
7
|
import '@tanstack/react-query';
|
|
8
8
|
import 'axios';
|
|
9
9
|
import 'node:fs';
|
|
@@ -12,7 +12,7 @@ import 'uuid';
|
|
|
12
12
|
import 'fast-glob';
|
|
13
13
|
import 'yazl';
|
|
14
14
|
import 'socket.io-client';
|
|
15
|
-
import { u as useJobWatching } from './JobLogTail-
|
|
15
|
+
import { u as useJobWatching } from './JobLogTail-BPcQ8ghI.js';
|
|
16
16
|
import 'fullscreen-ink';
|
|
17
17
|
import { a as StatusRow, b as StatusRowLabel } from './StatusTable-DzRWcMr4.js';
|
|
18
18
|
import { T as Title } from './Title-BCQtayg6.js';
|
|
@@ -10,13 +10,13 @@ import 'readline-sync';
|
|
|
10
10
|
import 'luxon';
|
|
11
11
|
import 'axios';
|
|
12
12
|
import 'isomorphic-git';
|
|
13
|
-
import './index-
|
|
13
|
+
import './index-DHioYOIm.js';
|
|
14
14
|
import '@oclif/core';
|
|
15
15
|
import '@tanstack/react-query';
|
|
16
16
|
import 'react';
|
|
17
17
|
import 'crypto-js';
|
|
18
18
|
import 'uuid';
|
|
19
|
-
import { u as useProjectCredentials, g as getProjectCredentialSummary } from './useProjectCredentials-
|
|
19
|
+
import { u as useProjectCredentials, g as getProjectCredentialSummary } from './useProjectCredentials-DbynNY96.js';
|
|
20
20
|
import 'fast-glob';
|
|
21
21
|
import 'yazl';
|
|
22
22
|
import 'socket.io-client';
|
|
@@ -27,11 +27,13 @@ import { T as Title } from './Title-BCQtayg6.js';
|
|
|
27
27
|
const ProjectCredentialsTable = ({ credentialTypeName, queryProps, ...boxProps }) => {
|
|
28
28
|
const { data, isLoading } = useProjectCredentials(queryProps);
|
|
29
29
|
const hasActive = data?.data.some((credential) => credential.isActive);
|
|
30
|
+
const hasInactive = data?.data.some((credential) => !credential.isActive);
|
|
30
31
|
return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", marginBottom: 1, ...boxProps, children: [
|
|
31
32
|
/* @__PURE__ */ jsx(Title, { children: `${credentialTypeName}s in your ShipThis account` }),
|
|
32
33
|
/* @__PURE__ */ jsx(Box, { flexDirection: "column", marginBottom: 1, marginLeft: 2, 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.` }) }),
|
|
33
34
|
isLoading && /* @__PURE__ */ jsx(Spinner, { type: "dots" }),
|
|
34
|
-
data && data.data.length > 0 && /* @__PURE__ */ jsx(Table, { data: data.data.map(getProjectCredentialSummary) })
|
|
35
|
+
data && data.data.length > 0 && /* @__PURE__ */ jsx(Table, { data: data.data.map(getProjectCredentialSummary) }),
|
|
36
|
+
hasInactive && /* @__PURE__ */ jsx(Text, { children: "Inactive credentials are automatically removed from storage after 24 hours." })
|
|
35
37
|
] });
|
|
36
38
|
};
|
|
37
39
|
|
|
@@ -10,7 +10,7 @@ import 'readline-sync';
|
|
|
10
10
|
import 'luxon';
|
|
11
11
|
import axios from 'axios';
|
|
12
12
|
import 'isomorphic-git';
|
|
13
|
-
import {
|
|
13
|
+
import { a0 as cacheKeys, g as getShortUUID, f as getShortDate, t as getAuthedHeaders, s as API_URL, V as castArrayObjectDates } from './index-DHioYOIm.js';
|
|
14
14
|
import '@oclif/core';
|
|
15
15
|
import { useQuery } from '@tanstack/react-query';
|
|
16
16
|
import 'react';
|
|
@@ -68,11 +68,13 @@ const useUserCredentials = ({
|
|
|
68
68
|
const UserCredentialsTable = ({ credentialTypeName, queryProps, ...boxProps }) => {
|
|
69
69
|
const { data, isLoading } = useUserCredentials(queryProps);
|
|
70
70
|
const hasActive = data?.data.some((credential) => credential.isActive);
|
|
71
|
+
const hasInactive = data?.data.some((credential) => !credential.isActive);
|
|
71
72
|
return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", marginBottom: 1, ...boxProps, children: [
|
|
72
73
|
/* @__PURE__ */ jsx(Title, { children: `${credentialTypeName}s in your ShipThis account` }),
|
|
73
74
|
/* @__PURE__ */ jsx(Box, { flexDirection: "column", marginBottom: 1, marginLeft: 2, 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.` }) }),
|
|
74
75
|
isLoading && /* @__PURE__ */ jsx(Spinner, { type: "dots" }),
|
|
75
|
-
data && data.data.length > 0 && /* @__PURE__ */ jsx(Table, { data: data.data.map(getUserCredentialSummary) })
|
|
76
|
+
data && data.data.length > 0 && /* @__PURE__ */ jsx(Table, { data: data.data.map(getUserCredentialSummary) }),
|
|
77
|
+
hasInactive && /* @__PURE__ */ jsx(Text, { children: "Inactive credentials are automatically removed from storage after 24 hours." })
|
|
76
78
|
] });
|
|
77
79
|
};
|
|
78
80
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { h as BaseGameCommand, a2 as getGoogleStatus, i as generatePackageName, a3 as getGodotAndroidPackageName, c as getInput } from './index-DHioYOIm.js';
|
|
2
2
|
|
|
3
3
|
class BaseGameAndroidCommand extends BaseGameCommand {
|
|
4
4
|
async checkGoogleAuth(waitForAuth = false) {
|
|
@@ -2,7 +2,7 @@ import { jsx } from 'react/jsx-runtime';
|
|
|
2
2
|
import { Flags } from '@oclif/core';
|
|
3
3
|
import { render } from 'ink';
|
|
4
4
|
import { v4 } from 'uuid';
|
|
5
|
-
import { B as BaseAuthenticatedCommand,
|
|
5
|
+
import { B as BaseAuthenticatedCommand, g as getShortUUID, af as createAPIKey, b as getRenderedMarkdown, f as getShortDate } from '../../index-DHioYOIm.js';
|
|
6
6
|
import 'ink-spinner';
|
|
7
7
|
import 'react';
|
|
8
8
|
import '@tanstack/react-query';
|
|
@@ -19,9 +19,10 @@ import 'open';
|
|
|
19
19
|
import '@inkjs/ui';
|
|
20
20
|
import 'qrcode';
|
|
21
21
|
import { R as RunWithSpinner } from '../../RunWithSpinner-DucRnFp6.js';
|
|
22
|
-
import { C as Command } from '../../Command-
|
|
22
|
+
import { C as Command } from '../../Command-7dCv1F9p.js';
|
|
23
23
|
import 'crypto-js';
|
|
24
24
|
import 'node:path';
|
|
25
|
+
import 'chalk';
|
|
25
26
|
import '@expo/apple-utils/build/index.js';
|
|
26
27
|
import 'node:crypto';
|
|
27
28
|
import 'node:readline';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { Flags } from '@oclif/core';
|
|
3
3
|
import { render, Box, Text } from 'ink';
|
|
4
|
-
import { B as BaseAuthenticatedCommand, ae as getAPIKeys,
|
|
4
|
+
import { B as BaseAuthenticatedCommand, ae as getAPIKeys, f as getShortDate, g as getShortUUID } from '../../index-DHioYOIm.js';
|
|
5
5
|
import 'ink-spinner';
|
|
6
6
|
import { T as Table } from '../../Table-FaNgpyeq.js';
|
|
7
7
|
import 'react';
|
|
@@ -22,8 +22,9 @@ import 'node:path';
|
|
|
22
22
|
import 'marked';
|
|
23
23
|
import 'marked-terminal';
|
|
24
24
|
import 'qrcode';
|
|
25
|
-
import { C as Command } from '../../Command-
|
|
25
|
+
import { C as Command } from '../../Command-7dCv1F9p.js';
|
|
26
26
|
import 'crypto-js';
|
|
27
|
+
import 'chalk';
|
|
27
28
|
import '@expo/apple-utils/build/index.js';
|
|
28
29
|
import 'node:crypto';
|
|
29
30
|
import 'node:readline';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { Args, Flags } from '@oclif/core';
|
|
3
3
|
import { render } from 'ink';
|
|
4
|
-
import { B as BaseAuthenticatedCommand, ag as revokeAPIKey,
|
|
4
|
+
import { B as BaseAuthenticatedCommand, ag as revokeAPIKey, g as getShortUUID } from '../../index-DHioYOIm.js';
|
|
5
5
|
import 'ink-spinner';
|
|
6
6
|
import 'react';
|
|
7
7
|
import '@tanstack/react-query';
|
|
@@ -22,8 +22,9 @@ import 'marked';
|
|
|
22
22
|
import 'marked-terminal';
|
|
23
23
|
import 'qrcode';
|
|
24
24
|
import { R as RunWithSpinner } from '../../RunWithSpinner-DucRnFp6.js';
|
|
25
|
-
import { C as Command } from '../../Command-
|
|
25
|
+
import { C as Command } from '../../Command-7dCv1F9p.js';
|
|
26
26
|
import 'crypto-js';
|
|
27
|
+
import 'chalk';
|
|
27
28
|
import '@expo/apple-utils/build/index.js';
|
|
28
29
|
import 'node:crypto';
|
|
29
30
|
import 'node:readline';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { Flags } from '@oclif/core';
|
|
3
3
|
import { render } from 'ink';
|
|
4
|
-
import { g as getUserCredentials } from '../../../index-
|
|
5
|
-
import { P as Platform, C as CredentialsType, A as ApiKey, U as UserRole, a as ApiKeyType } from '../../../index-
|
|
4
|
+
import { g as getUserCredentials } from '../../../index-C2omlhEs.js';
|
|
5
|
+
import { P as Platform, C as CredentialsType, A as ApiKey, U as UserRole, a as ApiKeyType } from '../../../index-DHioYOIm.js';
|
|
6
6
|
import 'ink-spinner';
|
|
7
7
|
import 'node:crypto';
|
|
8
8
|
import 'node:fs';
|
|
@@ -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-
|
|
33
|
-
import { B as BaseAppleCommand } from '../../../baseAppleCommand-
|
|
34
|
-
import { u as uploadUserCredentials } from '../../../upload-
|
|
32
|
+
import { C as Command } from '../../../Command-7dCv1F9p.js';
|
|
33
|
+
import { B as BaseAppleCommand } from '../../../baseAppleCommand-uL0Gnav4.js';
|
|
34
|
+
import { u as uploadUserCredentials } from '../../../upload-5s3sy2jF.js';
|
|
35
|
+
import 'chalk';
|
|
35
36
|
import '@expo/apple-utils/build/index.js';
|
|
36
37
|
import 'deepmerge';
|
|
37
38
|
import 'ini';
|
|
@@ -51,7 +52,7 @@ class AppleApiKeyCreate extends BaseAppleCommand {
|
|
|
51
52
|
const { force } = flags;
|
|
52
53
|
const userCredentials = await getUserCredentials();
|
|
53
54
|
const userAppleApiKeyCredentials = userCredentials.filter(
|
|
54
|
-
(cred) => cred.platform === Platform.IOS && cred.type === CredentialsType.KEY
|
|
55
|
+
(cred) => cred.platform === Platform.IOS && cred.type === CredentialsType.KEY && cred.isActive
|
|
55
56
|
);
|
|
56
57
|
if (userAppleApiKeyCredentials.length > 0 && !force) {
|
|
57
58
|
this.error("An App Store Connect API already exists. Use --force to overwrite it.");
|