shipthis 0.1.44 → 0.1.45
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 +6 -45
- package/dist/{AppleBundleIdDetails-DSTNVuCE.js → AppleBundleIdDetails-Cx8k-rYB.js} +4 -4
- package/dist/{Command-CUAYljjP.js → Command-B2Qnw47r.js} +2 -2
- package/dist/{CommandGame-DpCdhjIa.js → CommandGame-C23_F55i.js} +2 -2
- package/dist/{Create-CrvCt5uP.js → Create-BxNeKc2r.js} +2 -2
- package/dist/{GameStatus-4GPzUgCD.js → GameStatus-repzSNId.js} +2 -2
- package/dist/{Import-BXH6fSxe.js → Import-D6J9b-XO.js} +3 -3
- package/dist/{JobLogTail-CNw7TQdK.js → JobLogTail-CJWxpIq5.js} +3 -3
- package/dist/{JobProgress-BbklmvdG.js → JobProgress-CISmKMuD.js} +3 -3
- package/dist/{JobStatusTable-L4wAk8Ns.js → JobStatusTable-BEOu5MgG.js} +3 -3
- package/dist/{ProjectCredentialsTable-BfMmJ7AU.js → ProjectCredentialsTable-DR11Mn7W.js} +2 -2
- package/dist/{UserCredentialsTable-081xdlb9.js → UserCredentialsTable-db4Xb8HC.js} +2 -2
- package/dist/{baseAppleCommand-DDQU5PTs.js → baseAppleCommand-YzhCAdUY.js} +1 -1
- package/dist/{baseCommand-CdsX3LS8.js → baseCommand-ClUdS6Cn.js} +120 -8
- package/dist/{baseGameAndroidCommand-CAQVvU3i.js → baseGameAndroidCommand-LdDRof_I.js} +2 -2
- package/dist/{baseGameCommand-CCyAhN-V.js → baseGameCommand-DQ6Wj-Pk.js} +43 -43
- package/dist/commands/apiKey/create.js +3 -3
- package/dist/commands/apiKey/list.js +3 -3
- package/dist/commands/apiKey/revoke.js +3 -3
- package/dist/commands/apple/apiKey/create.js +6 -6
- package/dist/commands/apple/apiKey/delete.js +4 -4
- package/dist/commands/apple/apiKey/export.js +5 -5
- package/dist/commands/apple/apiKey/import.js +5 -5
- package/dist/commands/apple/apiKey/status.js +4 -4
- package/dist/commands/apple/certificate/create.js +6 -6
- package/dist/commands/apple/certificate/delete.js +4 -4
- package/dist/commands/apple/certificate/export.js +5 -5
- package/dist/commands/apple/certificate/import.js +5 -5
- package/dist/commands/apple/certificate/status.js +4 -4
- package/dist/commands/apple/login.js +2 -2
- package/dist/commands/apple/status.js +3 -3
- package/dist/commands/dashboard.js +2 -2
- package/dist/commands/game/android/apiKey/connect.js +8 -8
- package/dist/commands/game/android/apiKey/create.js +10 -10
- package/dist/commands/game/android/apiKey/delete.js +4 -4
- package/dist/commands/game/android/apiKey/export.js +6 -6
- package/dist/commands/game/android/apiKey/import.js +6 -6
- package/dist/commands/game/android/apiKey/invite.js +3 -3
- package/dist/commands/game/android/apiKey/policy.js +3 -3
- package/dist/commands/game/android/apiKey/status.js +6 -6
- package/dist/commands/game/android/keyStore/create.js +7 -7
- package/dist/commands/game/android/keyStore/delete.js +4 -4
- package/dist/commands/game/android/keyStore/export.js +5 -5
- package/dist/commands/game/android/keyStore/import.js +8 -8
- package/dist/commands/game/android/keyStore/status.js +5 -5
- package/dist/commands/game/android/status.js +2 -2
- package/dist/commands/game/build/download.js +3 -3
- package/dist/commands/game/build/list.js +4 -4
- package/dist/commands/game/create.js +2 -2
- package/dist/commands/game/details.js +3 -3
- package/dist/commands/game/export.js +2 -2
- package/dist/commands/game/ios/app/addTester.js +4 -4
- package/dist/commands/game/ios/app/create.js +3 -3
- package/dist/commands/game/ios/app/status.js +6 -6
- package/dist/commands/game/ios/app/sync.js +4 -4
- package/dist/commands/game/ios/profile/create.js +9 -7
- package/dist/commands/game/ios/profile/delete.js +4 -4
- package/dist/commands/game/ios/profile/export.js +5 -5
- package/dist/commands/game/ios/profile/import.js +5 -5
- package/dist/commands/game/ios/profile/status.js +6 -6
- package/dist/commands/game/ios/status.js +8 -8
- package/dist/commands/game/ios/wizard.js +3 -3
- package/dist/commands/game/job/list.js +3 -3
- package/dist/commands/game/job/status.js +6 -6
- package/dist/commands/game/list.js +3 -3
- package/dist/commands/game/ship.js +8 -8
- package/dist/commands/game/status.js +5 -5
- package/dist/commands/game/wizard.js +15 -15
- package/dist/commands/internal/fastlane.js +2 -2
- package/dist/commands/internal/readme.js +2 -2
- package/dist/commands/login.js +2 -2
- package/dist/commands/status.js +3 -3
- package/dist/commands/util/android-build-method.js +2 -2
- package/dist/commands/util/glass.js +1 -1
- package/dist/{export-4rGFZrzT.js → export-Dq53OG06.js} +1 -1
- package/dist/{import-C9i4RAW6.js → import-CPAFgZO5.js} +1 -1
- package/dist/{index-B-7dXz3a.js → index-B-5yl-9h.js} +5 -5
- package/dist/{index-DBy7ImFs.js → index-BMdQLpAh.js} +1 -1
- package/dist/{index-CQKTbsum.js → index-ZQyiwS8O.js} +4 -4
- package/dist/{upload-DWm3upu4.js → upload-BfWRd6ss.js} +1 -1
- package/dist/{useAppleApp-B0I5eZYx.js → useAppleApp-BZ1YvB2M.js} +1 -1
- package/dist/{useAppleBundleId-D4Uk-B7k.js → useAppleBundleId-CVBg5V7b.js} +1 -1
- package/dist/{useAppleProfiles-YAcyvQa0.js → useAppleProfiles-BPZwJoCh.js} +1 -1
- package/dist/{useGoogleStatus-CMZyzdD6.js → useGoogleStatus-TpGFvpk5.js} +2 -2
- package/dist/{useProjectCredentials-8rTRb2Y7.js → useProjectCredentials-Dv0DF2rA.js} +2 -2
- package/dist/{useWebSocket-CFc1M_mq.js → useWebSocket-Bj5fQveo.js} +1 -1
- package/docs/game/ios/app.md +11 -14
- package/npm-shrinkwrap.json +4358 -1535
- package/oclif.manifest.json +1 -1
- package/package.json +13 -10
package/README.md
CHANGED
|
@@ -49,7 +49,7 @@ The wizard command takes a platform parameter: either **android** or **ios**. Ru
|
|
|
49
49
|
|
|
50
50
|
#### Set up an Android game
|
|
51
51
|
|
|
52
|
-
Read more about [how ShipThis
|
|
52
|
+
Read more about [how ShipThis exports Godot Android games](https://shipth.is/docs/guides/android-export-methods?ref=github_readme) (Gradle vs legacy, APK/AAB output).
|
|
53
53
|
|
|
54
54
|
```bash
|
|
55
55
|
shipthis game wizard android
|
|
@@ -109,7 +109,7 @@ We support **all stable Godot versions since 3.6**, including:
|
|
|
109
109
|
|
|
110
110
|
| [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) | [4.6](https://github.com/godotengine/godot/releases/tag/4.6-stable) |
|
|
111
111
|
| ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ |
|
|
112
|
-
| [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-28eb575) | [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) |
|
|
112
|
+
| [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-28eb575) | [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) | [4.6.1](https://github.com/godotengine/godot/releases/tag/4.6.1-stable) |
|
|
113
113
|
| [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-ca113b3) | | |
|
|
114
114
|
| | [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-d33f443) | | | | |
|
|
115
115
|
| | [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) | | | | | |
|
|
@@ -368,49 +368,9 @@ We store:
|
|
|
368
368
|
|
|
369
369
|
### What happens to my files when I run the command `shipthis game ship`?
|
|
370
370
|
|
|
371
|
-
|
|
371
|
+
Your game files are packaged, uploaded to private storage via a temporary signed URL, and made available to an ephemeral build machine. After the build completes, all files are cleaned up on the machine. Uploaded files and build outputs are retained for **30 days** before automatic deletion.
|
|
372
372
|
|
|
373
|
-
|
|
374
|
-
Your game files are packaged locally on your machine:
|
|
375
|
-
|
|
376
|
-
- Files matching `shippedFilesGlobs` in `shipthis.json` are included
|
|
377
|
-
- Files matching `ignoredFilesGlobs` are excluded
|
|
378
|
-
|
|
379
|
-
The zip file is then uploaded directly from your computer to a private DigitalOcean Space using the temporary upload URL.
|
|
380
|
-
|
|
381
|
-
#### 2. Where the files are stored
|
|
382
|
-
|
|
383
|
-
The uploaded zip lives in a private DigitalOcean Space. The space is not public and cannot be browsed.
|
|
384
|
-
|
|
385
|
-
Files in this storage can only be accessed using signed URLs that expire after a short time. Those URLs are generated only when they are needed.
|
|
386
|
-
|
|
387
|
-
This storage is used for:
|
|
388
|
-
|
|
389
|
-
- Providing a build machine access to your game files
|
|
390
|
-
- Storing the resulting build outputs (APK/AAB/IPA)
|
|
391
|
-
|
|
392
|
-
#### 3. How build machines access your code
|
|
393
|
-
|
|
394
|
-
Build machines do not have general access to storage of game files or credentials.
|
|
395
|
-
|
|
396
|
-
When a machine is ready to run a job, it asks the backend for work. The job it receives includes a temporary, signed download URL for the zip containing the game files. The machine downloads the zip, extracts it, runs the build, and uploads the results using signed upload URLs provided in the job metadata.
|
|
397
|
-
|
|
398
|
-
Build machines cannot browse files or access anything outside the job that they are currently running.
|
|
399
|
-
|
|
400
|
-
#### 4. Cleanup after the build
|
|
401
|
-
|
|
402
|
-
After a build machine has completed a job, a cleanup routine is run which deletes:
|
|
403
|
-
|
|
404
|
-
- Downloaded and extracted game files
|
|
405
|
-
- Build intermediates
|
|
406
|
-
- Temporary files
|
|
407
|
-
|
|
408
|
-
The build machines do not keep user files after a job completes.
|
|
409
|
-
|
|
410
|
-
#### 5. Retention and deletion
|
|
411
|
-
|
|
412
|
-
- Uploaded game file zips and build outputs (APK/AAB/IPA) are retained for **30 days**
|
|
413
|
-
- A lifecycle policy set on the storage automatically deletes them after that period
|
|
373
|
+
Read the full [How your code is handled](https://shipth.is/docs/guides/code-handling?ref=github_readme) guide for details.
|
|
414
374
|
|
|
415
375
|
## 📖 Command Reference
|
|
416
376
|
|
|
@@ -432,8 +392,9 @@ The build machines do not keep user files after a job completes.
|
|
|
432
392
|
### 📚 Guides
|
|
433
393
|
|
|
434
394
|
- [Quick start](https://shipth.is/docs/guides/quick-start?ref=github_readme) - Get your first build running in minutes
|
|
435
|
-
- [Android
|
|
395
|
+
- [Android export methods](https://shipth.is/docs/guides/android-export-methods?ref=github_readme) - Gradle vs legacy builds, APK & AAB output
|
|
436
396
|
- [Godot versioning](https://shipth.is/docs/guides/godot-versioning?ref=github_readme) - Supported Godot versions and custom builds
|
|
397
|
+
- [How your code is handled](https://shipth.is/docs/guides/code-handling?ref=github_readme) - Upload, storage, and 30-day retention policy
|
|
437
398
|
- [Liquid Glass icons](https://shipth.is/docs/guides/liquid-glass?ref=github_readme) - Use Liquid Glass icons with your iOS game
|
|
438
399
|
- [Troubleshooting](https://shipth.is/docs/troubleshooting?ref=github_readme) - Common issues and how to fix them
|
|
439
400
|
|
|
@@ -11,11 +11,11 @@ import 'readline-sync';
|
|
|
11
11
|
import 'luxon';
|
|
12
12
|
import 'axios';
|
|
13
13
|
import 'isomorphic-git';
|
|
14
|
-
import './baseCommand-
|
|
14
|
+
import './baseCommand-ClUdS6Cn.js';
|
|
15
15
|
import '@oclif/core';
|
|
16
16
|
import '@tanstack/react-query';
|
|
17
17
|
import 'react';
|
|
18
|
-
import { u as useAppleApp } from './useAppleApp-
|
|
18
|
+
import { u as useAppleApp } from './useAppleApp-BZ1YvB2M.js';
|
|
19
19
|
import 'fast-glob';
|
|
20
20
|
import 'uuid';
|
|
21
21
|
import 'socket.io-client';
|
|
@@ -27,12 +27,12 @@ import 'strip-ansi';
|
|
|
27
27
|
import { T as Table } from './Table-FaNgpyeq.js';
|
|
28
28
|
import { T as Title } from './Title-BCQtayg6.js';
|
|
29
29
|
import 'open';
|
|
30
|
-
import './baseGameCommand-
|
|
30
|
+
import './baseGameCommand-DQ6Wj-Pk.js';
|
|
31
31
|
import 'godot-export-presets';
|
|
32
32
|
import 'marked';
|
|
33
33
|
import 'marked-terminal';
|
|
34
34
|
import 'qrcode';
|
|
35
|
-
import { u as useAppleBundleId } from './useAppleBundleId-
|
|
35
|
+
import { u as useAppleBundleId } from './useAppleBundleId-CVBg5V7b.js';
|
|
36
36
|
|
|
37
37
|
const AppleAppDetails = (props) => {
|
|
38
38
|
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 { I as queryClient } from './baseCommand-
|
|
5
|
+
import { I as queryClient } from './baseCommand-ClUdS6Cn.js';
|
|
6
6
|
import 'axios';
|
|
7
7
|
import 'node:fs';
|
|
8
8
|
import 'luxon';
|
|
@@ -19,7 +19,7 @@ import 'stream';
|
|
|
19
19
|
import 'yazl';
|
|
20
20
|
import 'fast-glob';
|
|
21
21
|
import 'uuid';
|
|
22
|
-
import { C as CommandProvider } from './baseGameCommand-
|
|
22
|
+
import { C as CommandProvider } from './baseGameCommand-DQ6Wj-Pk.js';
|
|
23
23
|
|
|
24
24
|
const Command = ({ children, command }) => {
|
|
25
25
|
const { width } = useScreenSize();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { G as GameProvider } from './baseGameCommand-
|
|
3
|
-
import { C as Command } from './Command-
|
|
2
|
+
import { G as GameProvider } from './baseGameCommand-DQ6Wj-Pk.js';
|
|
3
|
+
import { C as Command } from './Command-B2Qnw47r.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 { q as getAuthedHeaders, p as API_URL } from './baseCommand-
|
|
6
|
+
import { q as getAuthedHeaders, p as API_URL } from './baseCommand-ClUdS6Cn.js';
|
|
7
7
|
import 'ink-spinner';
|
|
8
8
|
import 'node:crypto';
|
|
9
9
|
import 'node:fs';
|
|
@@ -14,7 +14,7 @@ import 'readline-sync';
|
|
|
14
14
|
import 'luxon';
|
|
15
15
|
import 'isomorphic-git';
|
|
16
16
|
import '@oclif/core';
|
|
17
|
-
import { i as GameContext, k as cacheKeys } from './baseGameCommand-
|
|
17
|
+
import { i as GameContext, k as cacheKeys } from './baseGameCommand-DQ6Wj-Pk.js';
|
|
18
18
|
import 'fast-glob';
|
|
19
19
|
import 'uuid';
|
|
20
20
|
import 'socket.io-client';
|
|
@@ -1,9 +1,9 @@
|
|
|
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 { c as getShortDate, P as Platform, l as getProject, M as getProjectPlatformProgress } from './baseCommand-
|
|
4
|
+
import { c as getShortDate, P as Platform, l as getProject, M as getProjectPlatformProgress } from './baseCommand-ClUdS6Cn.js';
|
|
5
5
|
import 'ink-spinner';
|
|
6
|
-
import { g as getShortUUID, m as makeHumanReadable, i as GameContext, j as CommandContext } from './baseGameCommand-
|
|
6
|
+
import { g as getShortUUID, m as makeHumanReadable, i as GameContext, j as CommandContext } from './baseGameCommand-DQ6Wj-Pk.js';
|
|
7
7
|
import '@tanstack/react-query';
|
|
8
8
|
import 'axios';
|
|
9
9
|
import 'luxon';
|
|
@@ -11,7 +11,7 @@ import 'readline-sync';
|
|
|
11
11
|
import 'luxon';
|
|
12
12
|
import 'axios';
|
|
13
13
|
import 'isomorphic-git';
|
|
14
|
-
import { I as queryClient, P as Platform, C as CredentialsType } from './baseCommand-
|
|
14
|
+
import { I as queryClient, P as Platform, C as CredentialsType } from './baseCommand-ClUdS6Cn.js';
|
|
15
15
|
import '@oclif/core';
|
|
16
16
|
import { useMutation } from '@tanstack/react-query';
|
|
17
17
|
import 'fast-glob';
|
|
@@ -24,12 +24,12 @@ import 'string-length';
|
|
|
24
24
|
import 'strip-ansi';
|
|
25
25
|
import 'open';
|
|
26
26
|
import '@inkjs/ui';
|
|
27
|
-
import { k as cacheKeys, i as GameContext } from './baseGameCommand-
|
|
27
|
+
import { k as cacheKeys, i as GameContext } from './baseGameCommand-DQ6Wj-Pk.js';
|
|
28
28
|
import 'marked';
|
|
29
29
|
import 'marked-terminal';
|
|
30
30
|
import 'qrcode';
|
|
31
31
|
import 'godot-export-presets';
|
|
32
|
-
import { i as importCredential } from './import-
|
|
32
|
+
import { i as importCredential } from './import-CPAFgZO5.js';
|
|
33
33
|
|
|
34
34
|
async function importKeystore({ log = () => {
|
|
35
35
|
}, ...opt }) {
|
|
@@ -5,7 +5,7 @@ import { useInfiniteQuery } from '@tanstack/react-query';
|
|
|
5
5
|
import axios from 'axios';
|
|
6
6
|
import { useState, useRef, useEffect } from 'react';
|
|
7
7
|
import 'node:fs';
|
|
8
|
-
import { q as getAuthedHeaders, p as API_URL, H as castArrayObjectDates, J as JobStatus, a8 as castJobDates, a6 as castObjectDates, a9 as getShortTime } from './baseCommand-
|
|
8
|
+
import { q as getAuthedHeaders, p as API_URL, H as castArrayObjectDates, J as JobStatus, a8 as castJobDates, a6 as castObjectDates, a9 as getShortTime } from './baseCommand-ClUdS6Cn.js';
|
|
9
9
|
import 'luxon';
|
|
10
10
|
import 'node:crypto';
|
|
11
11
|
import 'node:path';
|
|
@@ -19,9 +19,9 @@ import 'yazl';
|
|
|
19
19
|
import 'fast-glob';
|
|
20
20
|
import 'uuid';
|
|
21
21
|
import 'socket.io-client';
|
|
22
|
-
import { k as cacheKeys, y as useJob, h as getStageColor, x as getMessageColor } from './baseGameCommand-
|
|
22
|
+
import { k as cacheKeys, y as useJob, h as getStageColor, x as getMessageColor } from './baseGameCommand-DQ6Wj-Pk.js';
|
|
23
23
|
import 'fullscreen-ink';
|
|
24
|
-
import { u as useWebSocket } from './useWebSocket-
|
|
24
|
+
import { u as useWebSocket } from './useWebSocket-Bj5fQveo.js';
|
|
25
25
|
import { T as Title } from './Title-BCQtayg6.js';
|
|
26
26
|
import stringLength from 'string-length';
|
|
27
27
|
import stripAnsi from 'strip-ansi';
|
|
@@ -2,8 +2,8 @@ import fs__default from 'node:fs';
|
|
|
2
2
|
import { useMutation } from '@tanstack/react-query';
|
|
3
3
|
import fg from 'fast-glob';
|
|
4
4
|
import { v4 } from 'uuid';
|
|
5
|
-
import { I as queryClient, l as getProject, x as DEFAULT_SHIPPED_FILES_GLOBS, y as DEFAULT_IGNORED_FILES_GLOBS, a4 as getNewUploadTicket, a5 as startJobsFromUpload, a2 as LogLevel } from './baseCommand-
|
|
6
|
-
import { k as cacheKeys, v as getFileHash, w as getPlatformName, x as getMessageColor } from './baseGameCommand-
|
|
5
|
+
import { I as queryClient, l as getProject, x as DEFAULT_SHIPPED_FILES_GLOBS, y as DEFAULT_IGNORED_FILES_GLOBS, a4 as getNewUploadTicket, a5 as startJobsFromUpload, a2 as LogLevel } from './baseCommand-ClUdS6Cn.js';
|
|
6
|
+
import { k as cacheKeys, v as getFileHash, w as getPlatformName, x as getMessageColor } from './baseGameCommand-DQ6Wj-Pk.js';
|
|
7
7
|
import { ZipFile } from 'yazl';
|
|
8
8
|
import { g as getCWDGitInfo } from './git-BpsfNFZ_.js';
|
|
9
9
|
import { Readable, Transform } from 'stream';
|
|
@@ -14,7 +14,7 @@ import { useState } from 'react';
|
|
|
14
14
|
import 'axios';
|
|
15
15
|
import 'luxon';
|
|
16
16
|
import 'socket.io-client';
|
|
17
|
-
import { u as useJobWatching, a as JobLogLine } from './JobLogTail-
|
|
17
|
+
import { u as useJobWatching, a as JobLogLine } from './JobLogTail-CJWxpIq5.js';
|
|
18
18
|
import 'fullscreen-ink';
|
|
19
19
|
import 'open';
|
|
20
20
|
import '@inkjs/ui';
|
|
@@ -3,15 +3,15 @@ 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 { J as JobStatus } from './baseCommand-
|
|
6
|
+
import { J as JobStatus } from './baseCommand-ClUdS6Cn.js';
|
|
7
7
|
import '@tanstack/react-query';
|
|
8
8
|
import 'axios';
|
|
9
9
|
import 'node:fs';
|
|
10
|
-
import { e as getJobSummary, h as getStageColor, f as getJobStatusColor } from './baseGameCommand-
|
|
10
|
+
import { e as getJobSummary, h as getStageColor, f as getJobStatusColor } from './baseGameCommand-DQ6Wj-Pk.js';
|
|
11
11
|
import 'fast-glob';
|
|
12
12
|
import 'uuid';
|
|
13
13
|
import 'socket.io-client';
|
|
14
|
-
import { u as useJobWatching } from './JobLogTail-
|
|
14
|
+
import { u as useJobWatching } from './JobLogTail-CJWxpIq5.js';
|
|
15
15
|
import 'fullscreen-ink';
|
|
16
16
|
import { a as StatusRow, b as StatusRowLabel } from './StatusTable-DzRWcMr4.js';
|
|
17
17
|
import { T as Title } from './Title-BCQtayg6.js';
|
|
@@ -10,11 +10,11 @@ import 'readline-sync';
|
|
|
10
10
|
import 'luxon';
|
|
11
11
|
import 'axios';
|
|
12
12
|
import 'isomorphic-git';
|
|
13
|
-
import './baseCommand-
|
|
13
|
+
import './baseCommand-ClUdS6Cn.js';
|
|
14
14
|
import '@oclif/core';
|
|
15
15
|
import '@tanstack/react-query';
|
|
16
16
|
import 'react';
|
|
17
|
-
import { u as useProjectCredentials, g as getProjectCredentialSummary } from './useProjectCredentials-
|
|
17
|
+
import { u as useProjectCredentials, g as getProjectCredentialSummary } from './useProjectCredentials-Dv0DF2rA.js';
|
|
18
18
|
import 'fast-glob';
|
|
19
19
|
import 'uuid';
|
|
20
20
|
import 'socket.io-client';
|
|
@@ -10,13 +10,13 @@ import 'readline-sync';
|
|
|
10
10
|
import 'luxon';
|
|
11
11
|
import axios from 'axios';
|
|
12
12
|
import 'isomorphic-git';
|
|
13
|
-
import { c as getShortDate, q as getAuthedHeaders, p as API_URL, H as castArrayObjectDates } from './baseCommand-
|
|
13
|
+
import { c as getShortDate, q as getAuthedHeaders, p as API_URL, H as castArrayObjectDates } from './baseCommand-ClUdS6Cn.js';
|
|
14
14
|
import '@oclif/core';
|
|
15
15
|
import { useQuery } from '@tanstack/react-query';
|
|
16
16
|
import 'react';
|
|
17
17
|
import 'fast-glob';
|
|
18
18
|
import 'uuid';
|
|
19
|
-
import { k as cacheKeys, g as getShortUUID } from './baseGameCommand-
|
|
19
|
+
import { k as cacheKeys, g as getShortUUID } from './baseGameCommand-DQ6Wj-Pk.js';
|
|
20
20
|
import 'socket.io-client';
|
|
21
21
|
import 'fullscreen-ink';
|
|
22
22
|
import 'stream';
|
|
@@ -422,23 +422,135 @@ var BuildType = /* @__PURE__ */ ((BuildType2) => {
|
|
|
422
422
|
return BuildType2;
|
|
423
423
|
})(BuildType || {});
|
|
424
424
|
|
|
425
|
+
const ENTITLEMENT_KEY_TO_CAPABILITY = {
|
|
426
|
+
"com.apple.developer.applesignin": { name: "Sign in with Apple", type: CapabilityType.APPLE_ID_AUTH },
|
|
427
|
+
"com.apple.developer.game-center": { name: "Game Center", type: CapabilityType.GAME_CENTER },
|
|
428
|
+
"com.apple.developer.healthkit": { name: "HealthKit", type: CapabilityType.HEALTH_KIT },
|
|
429
|
+
"com.apple.developer.healthkit.recalibrate-estimates": {
|
|
430
|
+
name: "HealthKit Recalibrate Estimates",
|
|
431
|
+
type: CapabilityType.HEALTH_KIT_RECALIBRATE_ESTIMATES
|
|
432
|
+
},
|
|
433
|
+
"com.apple.developer.homekit": { name: "HomeKit", type: CapabilityType.HOME_KIT },
|
|
434
|
+
"com.apple.developer.associated-domains": {
|
|
435
|
+
name: "Associated Domains",
|
|
436
|
+
type: CapabilityType.ASSOCIATED_DOMAINS
|
|
437
|
+
},
|
|
438
|
+
"com.apple.developer.authentication-services.autofill-credential-provider": {
|
|
439
|
+
name: "AutoFill Credential Provider",
|
|
440
|
+
type: CapabilityType.AUTO_FILL_CREDENTIAL
|
|
441
|
+
},
|
|
442
|
+
"com.apple.developer.ClassKit-environment": { name: "ClassKit", type: CapabilityType.CLASS_KIT },
|
|
443
|
+
"com.apple.developer.family-controls": {
|
|
444
|
+
name: "Family Controls",
|
|
445
|
+
type: CapabilityType.FAMILY_CONTROLS
|
|
446
|
+
},
|
|
447
|
+
"com.apple.developer.group-session": {
|
|
448
|
+
name: "Group Activities",
|
|
449
|
+
type: CapabilityType.GROUP_ACTIVITIES
|
|
450
|
+
},
|
|
451
|
+
"com.apple.developer.fileprovider.testing-mode": {
|
|
452
|
+
name: "File Provider Testing Mode",
|
|
453
|
+
type: CapabilityType.FILE_PROVIDER_TESTING_MODE
|
|
454
|
+
},
|
|
455
|
+
"com.apple.developer.networking.networkextension": {
|
|
456
|
+
name: "Network Extensions",
|
|
457
|
+
type: CapabilityType.NETWORK_EXTENSIONS
|
|
458
|
+
},
|
|
459
|
+
"com.apple.developer.networking.vpn.api": {
|
|
460
|
+
name: "Personal VPN",
|
|
461
|
+
type: CapabilityType.PERSONAL_VPN
|
|
462
|
+
},
|
|
463
|
+
"com.apple.developer.in-app-payments": { name: "Apple Pay", type: CapabilityType.APPLE_PAY },
|
|
464
|
+
"com.apple.developer.kernel.extended-virtual-addressing": {
|
|
465
|
+
name: "Extended Virtual Addressing",
|
|
466
|
+
type: CapabilityType.EXTENDED_VIRTUAL_ADDRESSING
|
|
467
|
+
},
|
|
468
|
+
"com.apple.developer.journal.allow": {
|
|
469
|
+
name: "Journaling Suggestions",
|
|
470
|
+
type: CapabilityType.JOURNALING_SUGGESTIONS
|
|
471
|
+
},
|
|
472
|
+
"com.apple.developer.managed-app-distribution.install-ui": {
|
|
473
|
+
name: "Managed App Installation UI",
|
|
474
|
+
type: CapabilityType.MANAGED_APP_INSTALLATION_UI
|
|
475
|
+
},
|
|
476
|
+
"com.apple.developer.media-device-discovery-extension": {
|
|
477
|
+
name: "Media Device Discovery",
|
|
478
|
+
type: CapabilityType.MEDIA_DEVICE_DISCOVERY
|
|
479
|
+
},
|
|
480
|
+
"com.apple.developer.matter.allow-setup-payload": {
|
|
481
|
+
name: "Matter Allow Setup Payload",
|
|
482
|
+
type: CapabilityType.MATTER_ALLOW_SETUP_PAYLOAD
|
|
483
|
+
},
|
|
484
|
+
"com.apple.developer.sustained-execution": {
|
|
485
|
+
name: "Sustained Execution",
|
|
486
|
+
type: CapabilityType.SUSTAINED_EXECUTION
|
|
487
|
+
},
|
|
488
|
+
"com.apple.security.application-groups": { name: "App Groups", type: CapabilityType.APP_GROUP }
|
|
489
|
+
};
|
|
490
|
+
const KEY_ELEMENT_REGEX = /<key>\s*([^<]+?)\s*<\/key>/g;
|
|
491
|
+
function parseEntitlementsAdditional(raw) {
|
|
492
|
+
const types = [];
|
|
493
|
+
if (!raw || typeof raw !== "string") return types;
|
|
494
|
+
let match;
|
|
495
|
+
KEY_ELEMENT_REGEX.lastIndex = 0;
|
|
496
|
+
while ((match = KEY_ELEMENT_REGEX.exec(raw)) !== null) {
|
|
497
|
+
const key = match[1].trim();
|
|
498
|
+
const entry = ENTITLEMENT_KEY_TO_CAPABILITY[key];
|
|
499
|
+
if (entry && !types.includes(entry.type)) types.push(entry.type);
|
|
500
|
+
}
|
|
501
|
+
return types;
|
|
502
|
+
}
|
|
503
|
+
|
|
425
504
|
function isCWDGodotGame() {
|
|
426
505
|
const cwd = process.cwd();
|
|
427
506
|
const godotProject = path__default.join(cwd, "project.godot");
|
|
428
507
|
return fs__default.existsSync(godotProject);
|
|
429
508
|
}
|
|
430
|
-
const
|
|
431
|
-
// TODO: how about capabilities from godot extensions
|
|
509
|
+
const GODOT_SYNCABLE_CAPABILITIES = [
|
|
432
510
|
{ key: "capabilities/access_wifi", name: "Access WiFi", type: CapabilityType.ACCESS_WIFI },
|
|
433
|
-
{ key: "
|
|
511
|
+
{ key: "entitlements/increased_memory_limit", name: "Increased Memory Limit", type: CapabilityType.INCREASED_MEMORY_LIMIT },
|
|
512
|
+
{ key: "entitlements/game_center", name: "Game Center", type: CapabilityType.GAME_CENTER },
|
|
513
|
+
{ key: "entitlements/push_notifications", name: "Push Notifications", type: CapabilityType.PUSH_NOTIFICATIONS, pushKey: true }
|
|
514
|
+
];
|
|
515
|
+
const syncableTypes = new Set(GODOT_SYNCABLE_CAPABILITIES.map((c) => c.type));
|
|
516
|
+
const GODOT_CAPABILITIES = [
|
|
517
|
+
...GODOT_SYNCABLE_CAPABILITIES,
|
|
518
|
+
...Object.entries(ENTITLEMENT_KEY_TO_CAPABILITY).filter(([, { type }]) => !syncableTypes.has(type)).map(([key, { name, type }]) => ({
|
|
519
|
+
key: `entitlements/additional (${key})`,
|
|
520
|
+
name,
|
|
521
|
+
type
|
|
522
|
+
}))
|
|
434
523
|
];
|
|
435
|
-
|
|
436
|
-
const
|
|
437
|
-
|
|
524
|
+
function isPushEnabled(options) {
|
|
525
|
+
const entitlementsPush = options["entitlements/push_notifications"];
|
|
526
|
+
if (entitlementsPush != null) {
|
|
527
|
+
const s = `${entitlementsPush}`.trim().toLowerCase();
|
|
528
|
+
if (s === "production" || s === "development") return true;
|
|
529
|
+
if (s === "disabled") return false;
|
|
530
|
+
}
|
|
531
|
+
const legacyPush = options["capabilities/push_notifications"];
|
|
532
|
+
if (legacyPush != null) {
|
|
533
|
+
return `${legacyPush}`.toLowerCase() === "true";
|
|
534
|
+
}
|
|
535
|
+
return false;
|
|
536
|
+
}
|
|
537
|
+
async function getGodotProjectCapabilities(platform, overrides) {
|
|
538
|
+
const options = (await getGodotExportPresets(platform)).options ?? {};
|
|
438
539
|
const capabilities = [];
|
|
439
|
-
for (const capability of
|
|
540
|
+
for (const capability of GODOT_SYNCABLE_CAPABILITIES) {
|
|
541
|
+
if (capability.pushKey) {
|
|
542
|
+
if (isPushEnabled(options)) capabilities.push(capability.type);
|
|
543
|
+
continue;
|
|
544
|
+
}
|
|
440
545
|
if (!(capability.key in options)) continue;
|
|
441
|
-
if (`${options[capability.key]}`.
|
|
546
|
+
if (`${options[capability.key]}`.toLowerCase() === "true") capabilities.push(capability.type);
|
|
547
|
+
}
|
|
548
|
+
const additionalRaw = options["entitlements/additional"];
|
|
549
|
+
const fromAdditional = parseEntitlementsAdditional(
|
|
550
|
+
typeof additionalRaw === "string" ? additionalRaw : ""
|
|
551
|
+
);
|
|
552
|
+
for (const type of fromAdditional) {
|
|
553
|
+
if (!capabilities.includes(type)) capabilities.push(type);
|
|
442
554
|
}
|
|
443
555
|
return capabilities;
|
|
444
556
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { O as getGoogleStatus, Q as getGodotAndroidPackageName } from './baseCommand-
|
|
2
|
-
import { c as BaseGameCommand, d as generatePackageName, b as getInput } from './baseGameCommand-
|
|
1
|
+
import { O as getGoogleStatus, Q as getGodotAndroidPackageName } from './baseCommand-ClUdS6Cn.js';
|
|
2
|
+
import { c as BaseGameCommand, d as generatePackageName, b as getInput } from './baseGameCommand-DQ6Wj-Pk.js';
|
|
3
3
|
|
|
4
4
|
class BaseGameAndroidCommand extends BaseGameCommand {
|
|
5
5
|
async checkGoogleAuth(waitForAuth = false) {
|