shipthis 0.0.41 → 0.1.0
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 +17 -17
- package/dist/{AppleBundleIdDetails-n1_U8IqK.js → AppleBundleIdDetails-BF-Pm1Ia.js} +19 -7
- package/dist/Command-BrfJSeOC.js +1077 -0
- package/dist/CommandGame-D9wl8hfX.js +8 -0
- package/dist/{NextSteps-CK9zHOCt.js → NextSteps-DKcjSHZ3.js} +1 -1
- package/dist/ProjectCredentialsTable-BVvkIPjN.js +36 -0
- package/dist/{StatusTable-CxuX_R1D.js → StatusTable-BzsNF75L.js} +2 -7
- package/dist/{UserCredentialsTable-A_YlFeJX.js → UserCredentialsTable-DUFQqHVt.js} +11 -5
- package/dist/{baseAppleCommand-DK5-Cvg4.js → baseAppleCommand-BSJhK8GA.js} +1 -1
- package/dist/baseGameAndroidCommand-CPAtReqy.js +43 -0
- package/dist/commands/apple/apiKey/create.js +24 -10
- package/dist/commands/apple/apiKey/export.js +23 -9
- package/dist/commands/apple/apiKey/import.js +23 -9
- package/dist/commands/apple/apiKey/status.js +25 -13
- package/dist/commands/apple/certificate/create.js +25 -11
- package/dist/commands/apple/certificate/export.js +23 -9
- package/dist/commands/apple/certificate/import.js +23 -9
- package/dist/commands/apple/certificate/status.js +26 -14
- package/dist/commands/apple/login.js +9 -3
- package/dist/commands/apple/status.js +27 -13
- package/dist/commands/dashboard.js +11 -5
- package/dist/commands/game/android/apiKey/connect.js +73 -0
- package/dist/commands/game/android/apiKey/create.js +70 -0
- package/dist/commands/game/android/apiKey/export.js +83 -0
- package/dist/commands/game/android/apiKey/import.js +92 -0
- package/dist/commands/game/android/apiKey/invite.js +81 -0
- package/dist/commands/game/android/apiKey/status.js +86 -0
- package/dist/commands/game/android/keyStore/create.js +67 -0
- package/dist/commands/game/android/keyStore/export.js +82 -0
- package/dist/commands/game/android/keyStore/import.js +91 -0
- package/dist/commands/game/android/keyStore/status.js +69 -0
- package/dist/commands/game/android/status.js +84 -0
- package/dist/commands/game/android/wizard.js +53 -0
- package/dist/commands/game/build/download.js +23 -9
- package/dist/commands/game/build/list.js +25 -14
- package/dist/commands/game/create.js +18 -10
- package/dist/commands/game/details.js +28 -19
- package/dist/commands/game/export.js +11 -5
- package/dist/commands/game/ios/app/addTester.js +25 -12
- package/dist/commands/game/ios/app/create.js +26 -13
- package/dist/commands/game/ios/app/status.js +27 -13
- package/dist/commands/game/ios/app/sync.js +23 -9
- package/dist/commands/game/ios/profile/create.js +22 -8
- package/dist/commands/game/ios/profile/export.js +23 -9
- package/dist/commands/game/ios/profile/import.js +23 -9
- package/dist/commands/game/ios/profile/status.js +26 -71
- package/dist/commands/game/ios/status.js +28 -15
- package/dist/commands/game/ios/wizard.js +125 -0
- package/dist/commands/game/job/list.js +26 -14
- package/dist/commands/game/job/status.js +26 -71
- package/dist/commands/game/list.js +26 -12
- package/dist/commands/game/ship.js +7 -4
- package/dist/commands/game/status.js +63 -25
- package/dist/commands/game/wizard.js +41 -99
- package/dist/commands/internal/fastlane.js +74 -0
- package/dist/commands/internal/readme.js +1452 -0
- package/dist/commands/login.js +9 -3
- package/dist/commands/status.js +23 -10
- package/dist/{export-C16psune.js → export-B0FJT0EU.js} +1 -1
- package/dist/{import-hte2Jy0K.js → import-CLDJ2iPu.js} +1 -1
- package/dist/{baseGameCommand-B3NbuvDu.js → index-CF0fIsx2.js} +112 -37
- package/dist/index-CFHmtzfq.js +24 -0
- package/dist/{index-ZHJdUrwJ.js → index-Df8uXQ4s.js} +14 -3
- package/dist/{upload-DADrkIUB.js → upload-C5L82Yq0.js} +1 -1
- package/dist/useAndroidServiceAccountTestResult-BnxNuoG3.js +52 -0
- package/dist/{useAppleApp-Cr3VcGVs.js → useAppleApp-IXRdsK5w.js} +1 -1
- package/dist/{useAppleBundleId-BxtyGpHy.js → useAppleBundleId-DYC5ISKT.js} +1 -1
- package/docs/game/android/apiKey/connect.md +27 -0
- package/docs/game/android/apiKey/create.md +25 -0
- package/docs/game/android/apiKey/export.md +25 -0
- package/docs/game/android/apiKey/import.md +25 -0
- package/docs/game/android/apiKey/invite.md +27 -0
- package/docs/game/android/apiKey/status.md +23 -0
- package/docs/game/android/apiKey.md +165 -0
- package/docs/game/android/keyStore/create.md +24 -0
- package/docs/game/android/keyStore/export.md +25 -0
- package/docs/game/android/keyStore/import.md +25 -0
- package/docs/game/android/keyStore/status.md +23 -0
- package/docs/game/android/keyStore.md +108 -0
- package/docs/game/android/status.md +23 -0
- package/docs/game/android/wizard.md +28 -0
- package/docs/game/android.md +339 -0
- package/docs/game/create.md +12 -7
- package/docs/game/ios/wizard.md +21 -0
- package/docs/game/wizard.md +12 -18
- package/oclif.manifest.json +938 -185
- package/package.json +53 -18
- package/dist/App-BfoOFeZ-.js +0 -21
- package/dist/RunWithSpinner-BVXNWGD3.js +0 -27
- package/dist/Title-BCQtayg6.js +0 -6
- package/dist/cacheKeys-CShA-ZjE.js +0 -9
- package/dist/useBuilds-JHqMwpWS.js +0 -41
- package/dist/useJob-Bc9fdiyP.js +0 -34
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { render } from 'ink';
|
|
3
|
+
import { Flags } from '@oclif/core';
|
|
4
|
+
import { b as CreateKeystore } from '../../../../Command-BrfJSeOC.js';
|
|
5
|
+
import 'react';
|
|
6
|
+
import 'ink-spinner';
|
|
7
|
+
import 'axios';
|
|
8
|
+
import 'crypto-js';
|
|
9
|
+
import 'uuid';
|
|
10
|
+
import { P as Platform, C as CredentialsType } from '../../../../index-CF0fIsx2.js';
|
|
11
|
+
import 'luxon';
|
|
12
|
+
import { a as getProjectCredentials } from '../../../../index-CFHmtzfq.js';
|
|
13
|
+
import '@inkjs/ui';
|
|
14
|
+
import 'crypto';
|
|
15
|
+
import 'fs';
|
|
16
|
+
import 'readline-sync';
|
|
17
|
+
import 'node:readline';
|
|
18
|
+
import 'node:path';
|
|
19
|
+
import 'node:url';
|
|
20
|
+
import '@tanstack/react-query';
|
|
21
|
+
import 'fast-glob';
|
|
22
|
+
import 'yazl';
|
|
23
|
+
import 'socket.io-client';
|
|
24
|
+
import 'isomorphic-git';
|
|
25
|
+
import 'marked';
|
|
26
|
+
import 'marked-terminal';
|
|
27
|
+
import 'qrcode';
|
|
28
|
+
import 'string-length';
|
|
29
|
+
import 'strip-ansi';
|
|
30
|
+
import { C as CommandGame } from '../../../../CommandGame-D9wl8hfX.js';
|
|
31
|
+
import { B as BaseGameAndroidCommand } from '../../../../baseGameAndroidCommand-CPAtReqy.js';
|
|
32
|
+
import 'open';
|
|
33
|
+
import '../../../../index-Df8uXQ4s.js';
|
|
34
|
+
import '../../../../useAndroidServiceAccountTestResult-BnxNuoG3.js';
|
|
35
|
+
import '../../../../git-DREGq-jc.js';
|
|
36
|
+
import 'path';
|
|
37
|
+
import '@expo/apple-utils/build/index.js';
|
|
38
|
+
import 'ini';
|
|
39
|
+
import 'deepmerge';
|
|
40
|
+
|
|
41
|
+
class GameAndroidKeyStoreCreate extends BaseGameAndroidCommand {
|
|
42
|
+
static args = {};
|
|
43
|
+
static description = "Creates a new Android Keystore for a game";
|
|
44
|
+
static examples = [
|
|
45
|
+
"<%= config.bin %> <%= command.id %>",
|
|
46
|
+
"<%= config.bin %> <%= command.id %> --gameId 0c179fc4"
|
|
47
|
+
];
|
|
48
|
+
static flags = {
|
|
49
|
+
...BaseGameAndroidCommand.flags,
|
|
50
|
+
force: Flags.boolean({ char: "f" })
|
|
51
|
+
};
|
|
52
|
+
async run() {
|
|
53
|
+
const game = await this.getGame();
|
|
54
|
+
const projectCredentials = await getProjectCredentials(game.id);
|
|
55
|
+
const hasKeystore = projectCredentials.some(
|
|
56
|
+
(cred) => cred.platform == Platform.ANDROID && cred.isActive && cred.type == CredentialsType.CERTIFICATE
|
|
57
|
+
);
|
|
58
|
+
if (hasKeystore && !this.flags.force) {
|
|
59
|
+
this.error("A Keystore is already set on this game. Use --force to overwrite it.");
|
|
60
|
+
}
|
|
61
|
+
render(
|
|
62
|
+
/* @__PURE__ */ jsx(CommandGame, { command: this, children: /* @__PURE__ */ jsx(CreateKeystore, { onComplete: () => process.exit(0), onError: (e) => this.error(e) }) })
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export { GameAndroidKeyStoreCreate as default };
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { Args, Flags } from '@oclif/core';
|
|
3
|
+
import { render } from 'ink';
|
|
4
|
+
import * as fs from 'fs';
|
|
5
|
+
import { c as BaseGameCommand, P as Platform, C as CredentialsType } from '../../../../index-CF0fIsx2.js';
|
|
6
|
+
import { a as getProjectCredentials } from '../../../../index-CFHmtzfq.js';
|
|
7
|
+
import { C as Command, R as RunWithSpinner } from '../../../../Command-BrfJSeOC.js';
|
|
8
|
+
import 'react';
|
|
9
|
+
import 'ink-spinner';
|
|
10
|
+
import 'axios';
|
|
11
|
+
import 'crypto-js';
|
|
12
|
+
import 'uuid';
|
|
13
|
+
import 'luxon';
|
|
14
|
+
import '@inkjs/ui';
|
|
15
|
+
import 'crypto';
|
|
16
|
+
import 'readline-sync';
|
|
17
|
+
import 'node:readline';
|
|
18
|
+
import 'node:path';
|
|
19
|
+
import 'node:url';
|
|
20
|
+
import '@tanstack/react-query';
|
|
21
|
+
import 'fast-glob';
|
|
22
|
+
import 'yazl';
|
|
23
|
+
import 'socket.io-client';
|
|
24
|
+
import 'isomorphic-git';
|
|
25
|
+
import 'marked';
|
|
26
|
+
import 'marked-terminal';
|
|
27
|
+
import 'qrcode';
|
|
28
|
+
import 'string-length';
|
|
29
|
+
import 'strip-ansi';
|
|
30
|
+
import { e as exportCredential } from '../../../../export-B0FJT0EU.js';
|
|
31
|
+
import 'path';
|
|
32
|
+
import '@expo/apple-utils/build/index.js';
|
|
33
|
+
import 'ini';
|
|
34
|
+
import 'deepmerge';
|
|
35
|
+
import 'open';
|
|
36
|
+
import '../../../../index-Df8uXQ4s.js';
|
|
37
|
+
import '../../../../useAndroidServiceAccountTestResult-BnxNuoG3.js';
|
|
38
|
+
import '../../../../git-DREGq-jc.js';
|
|
39
|
+
|
|
40
|
+
class GameAndroidKeyStoreExport extends BaseGameCommand {
|
|
41
|
+
static args = {
|
|
42
|
+
file: Args.string({ description: "Name of the ZIP file to create", required: true })
|
|
43
|
+
};
|
|
44
|
+
static description = "Saves the current Android Keystore to a ZIP file";
|
|
45
|
+
static examples = ["<%= config.bin %> <%= command.id %> keyStore.zip"];
|
|
46
|
+
static flags = {
|
|
47
|
+
gameId: Flags.string({ char: "g", description: "The ID of the game" }),
|
|
48
|
+
force: Flags.boolean({ char: "f", description: "Overwrite the file if it already exists" })
|
|
49
|
+
};
|
|
50
|
+
async run() {
|
|
51
|
+
const { args, flags } = this;
|
|
52
|
+
const { file } = args;
|
|
53
|
+
const { force } = flags;
|
|
54
|
+
const game = await this.getGame();
|
|
55
|
+
const zipAlreadyExists = fs.existsSync(file);
|
|
56
|
+
if (zipAlreadyExists && !force) {
|
|
57
|
+
this.error(`The file ${file} already exists. Use --force to overwrite it.`);
|
|
58
|
+
}
|
|
59
|
+
const projectCredentials = await getProjectCredentials(game.id);
|
|
60
|
+
const projectAndroidKeyStoreCreds = projectCredentials.filter(
|
|
61
|
+
(cred) => cred.platform == Platform.ANDROID && cred.type == CredentialsType.CERTIFICATE && cred.isActive
|
|
62
|
+
);
|
|
63
|
+
if (projectAndroidKeyStoreCreds.length === 0) {
|
|
64
|
+
this.error("No Android Keystore found which can be exported.");
|
|
65
|
+
}
|
|
66
|
+
const [keyStore] = projectAndroidKeyStoreCreds;
|
|
67
|
+
const handleComplete = async () => process.exit(0);
|
|
68
|
+
render(
|
|
69
|
+
/* @__PURE__ */ jsx(Command, { command: this, children: /* @__PURE__ */ jsx(
|
|
70
|
+
RunWithSpinner,
|
|
71
|
+
{
|
|
72
|
+
msgInProgress: `Exporting Android Keystore to ${file}...`,
|
|
73
|
+
msgComplete: `Android Keystore exported to ${file}`,
|
|
74
|
+
executeMethod: () => exportCredential({ zipPath: file, credentialId: keyStore.id, projectId: game.id }),
|
|
75
|
+
onComplete: handleComplete
|
|
76
|
+
}
|
|
77
|
+
) })
|
|
78
|
+
);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export { GameAndroidKeyStoreExport as default };
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { Args, Flags } from '@oclif/core';
|
|
3
|
+
import { render } from 'ink';
|
|
4
|
+
import * as fs from 'fs';
|
|
5
|
+
import { c as BaseGameCommand, P as Platform, C as CredentialsType } from '../../../../index-CF0fIsx2.js';
|
|
6
|
+
import { a as getProjectCredentials } from '../../../../index-CFHmtzfq.js';
|
|
7
|
+
import { C as Command, R as RunWithSpinner } from '../../../../Command-BrfJSeOC.js';
|
|
8
|
+
import 'react';
|
|
9
|
+
import 'ink-spinner';
|
|
10
|
+
import 'axios';
|
|
11
|
+
import 'crypto-js';
|
|
12
|
+
import 'uuid';
|
|
13
|
+
import 'luxon';
|
|
14
|
+
import '@inkjs/ui';
|
|
15
|
+
import 'crypto';
|
|
16
|
+
import 'readline-sync';
|
|
17
|
+
import 'node:readline';
|
|
18
|
+
import 'node:path';
|
|
19
|
+
import 'node:url';
|
|
20
|
+
import '@tanstack/react-query';
|
|
21
|
+
import 'fast-glob';
|
|
22
|
+
import 'yazl';
|
|
23
|
+
import 'socket.io-client';
|
|
24
|
+
import 'isomorphic-git';
|
|
25
|
+
import 'marked';
|
|
26
|
+
import 'marked-terminal';
|
|
27
|
+
import 'qrcode';
|
|
28
|
+
import 'string-length';
|
|
29
|
+
import 'strip-ansi';
|
|
30
|
+
import { i as importCredential } from '../../../../import-CLDJ2iPu.js';
|
|
31
|
+
import 'path';
|
|
32
|
+
import '@expo/apple-utils/build/index.js';
|
|
33
|
+
import 'ini';
|
|
34
|
+
import 'deepmerge';
|
|
35
|
+
import 'open';
|
|
36
|
+
import '../../../../index-Df8uXQ4s.js';
|
|
37
|
+
import '../../../../useAndroidServiceAccountTestResult-BnxNuoG3.js';
|
|
38
|
+
import '../../../../git-DREGq-jc.js';
|
|
39
|
+
|
|
40
|
+
class GameAndroidKeyStoreImport extends BaseGameCommand {
|
|
41
|
+
static args = {
|
|
42
|
+
file: Args.string({
|
|
43
|
+
description: "Name of the ZIP file to import (must be in the same format as the export)",
|
|
44
|
+
required: true
|
|
45
|
+
})
|
|
46
|
+
};
|
|
47
|
+
static description = "Imports an Android Keystore to your ShipThis account for the specified game.";
|
|
48
|
+
static examples = ["<%= config.bin %> <%= command.id %>"];
|
|
49
|
+
static flags = {
|
|
50
|
+
gameId: Flags.string({ char: "g", description: "The ID of the game" }),
|
|
51
|
+
force: Flags.boolean({ char: "f" })
|
|
52
|
+
};
|
|
53
|
+
async run() {
|
|
54
|
+
const game = await this.getGame();
|
|
55
|
+
const { args, flags } = this;
|
|
56
|
+
const { file } = args;
|
|
57
|
+
const { force } = flags;
|
|
58
|
+
const zipFound = fs.existsSync(file);
|
|
59
|
+
if (!zipFound) {
|
|
60
|
+
this.error(`The file ${file} does not exist.`);
|
|
61
|
+
}
|
|
62
|
+
const projectCredentials = await getProjectCredentials(game.id);
|
|
63
|
+
const hasKeystore = projectCredentials.some(
|
|
64
|
+
(cred) => cred.platform == Platform.ANDROID && cred.isActive && cred.type == CredentialsType.CERTIFICATE
|
|
65
|
+
);
|
|
66
|
+
if (hasKeystore && !force) {
|
|
67
|
+
this.error("A Keystore is already set on this game. Use --force to overwrite it.");
|
|
68
|
+
}
|
|
69
|
+
const handleComplete = async () => {
|
|
70
|
+
await this.config.runCommand(`game:android:keyStore:status`, ["--gameId", game.id]);
|
|
71
|
+
};
|
|
72
|
+
render(
|
|
73
|
+
/* @__PURE__ */ jsx(Command, { command: this, children: /* @__PURE__ */ jsx(
|
|
74
|
+
RunWithSpinner,
|
|
75
|
+
{
|
|
76
|
+
msgInProgress: `Importing Android Keystore from ${file}...`,
|
|
77
|
+
msgComplete: `Android Keystore imported from ${file}`,
|
|
78
|
+
executeMethod: () => importCredential({
|
|
79
|
+
projectId: game.id,
|
|
80
|
+
zipPath: file,
|
|
81
|
+
type: CredentialsType.CERTIFICATE,
|
|
82
|
+
platform: Platform.ANDROID
|
|
83
|
+
}),
|
|
84
|
+
onComplete: handleComplete
|
|
85
|
+
}
|
|
86
|
+
) })
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export { GameAndroidKeyStoreImport as default };
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { render } from 'ink';
|
|
3
|
+
import { C as Command } from '../../../../Command-BrfJSeOC.js';
|
|
4
|
+
import 'react';
|
|
5
|
+
import 'ink-spinner';
|
|
6
|
+
import 'axios';
|
|
7
|
+
import 'crypto-js';
|
|
8
|
+
import 'uuid';
|
|
9
|
+
import { c as BaseGameCommand, P as Platform, C as CredentialsType } from '../../../../index-CF0fIsx2.js';
|
|
10
|
+
import 'luxon';
|
|
11
|
+
import 'fs';
|
|
12
|
+
import '@inkjs/ui';
|
|
13
|
+
import 'crypto';
|
|
14
|
+
import 'readline-sync';
|
|
15
|
+
import 'node:readline';
|
|
16
|
+
import 'node:path';
|
|
17
|
+
import 'node:url';
|
|
18
|
+
import '@tanstack/react-query';
|
|
19
|
+
import 'fast-glob';
|
|
20
|
+
import 'yazl';
|
|
21
|
+
import 'socket.io-client';
|
|
22
|
+
import 'isomorphic-git';
|
|
23
|
+
import '@oclif/core';
|
|
24
|
+
import 'marked';
|
|
25
|
+
import 'marked-terminal';
|
|
26
|
+
import 'qrcode';
|
|
27
|
+
import 'string-length';
|
|
28
|
+
import 'strip-ansi';
|
|
29
|
+
import { P as ProjectCredentialsTable } from '../../../../ProjectCredentialsTable-BVvkIPjN.js';
|
|
30
|
+
import 'open';
|
|
31
|
+
import '../../../../index-Df8uXQ4s.js';
|
|
32
|
+
import '../../../../useAndroidServiceAccountTestResult-BnxNuoG3.js';
|
|
33
|
+
import '../../../../git-DREGq-jc.js';
|
|
34
|
+
import '../../../../index-CFHmtzfq.js';
|
|
35
|
+
import 'path';
|
|
36
|
+
import '@expo/apple-utils/build/index.js';
|
|
37
|
+
import 'ini';
|
|
38
|
+
import 'deepmerge';
|
|
39
|
+
import '../../../../Table-CvM6pccN.js';
|
|
40
|
+
|
|
41
|
+
class GameAndroidKeyStoreStatus extends BaseGameCommand {
|
|
42
|
+
static args = {};
|
|
43
|
+
static description = "Displays the status of the Android Keystore for a specific game.";
|
|
44
|
+
static examples = [
|
|
45
|
+
"<%= config.bin %> <%= command.id %>",
|
|
46
|
+
"<%= config.bin %> <%= command.id %> --gameId 0c179fc4"
|
|
47
|
+
];
|
|
48
|
+
static flags = {
|
|
49
|
+
...BaseGameCommand.flags
|
|
50
|
+
};
|
|
51
|
+
async run() {
|
|
52
|
+
const game = await this.getGame();
|
|
53
|
+
render(
|
|
54
|
+
/* @__PURE__ */ jsx(Command, { command: this, children: /* @__PURE__ */ jsx(
|
|
55
|
+
ProjectCredentialsTable,
|
|
56
|
+
{
|
|
57
|
+
credentialTypeName: "Android Keystore",
|
|
58
|
+
queryProps: {
|
|
59
|
+
projectId: game.id,
|
|
60
|
+
type: CredentialsType.CERTIFICATE,
|
|
61
|
+
platform: Platform.ANDROID
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
) })
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export { GameAndroidKeyStoreStatus as default };
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { render } from 'ink';
|
|
3
|
+
import { Flags } from '@oclif/core';
|
|
4
|
+
import { C as Command } from '../../../Command-BrfJSeOC.js';
|
|
5
|
+
import 'react';
|
|
6
|
+
import 'ink-spinner';
|
|
7
|
+
import { c as BaseGameCommand, k as getProjectPlatformProgress, P as Platform, b as getShortDate } from '../../../index-CF0fIsx2.js';
|
|
8
|
+
import '@inkjs/ui';
|
|
9
|
+
import { g as getShortUUID, m as makeHumanReadable } from '../../../index-Df8uXQ4s.js';
|
|
10
|
+
import 'axios';
|
|
11
|
+
import '@tanstack/react-query';
|
|
12
|
+
import 'marked';
|
|
13
|
+
import 'fs';
|
|
14
|
+
import 'marked-terminal';
|
|
15
|
+
import { N as NextSteps } from '../../../NextSteps-DKcjSHZ3.js';
|
|
16
|
+
import 'qrcode';
|
|
17
|
+
import { S as StatusTable } from '../../../StatusTable-BzsNF75L.js';
|
|
18
|
+
import 'string-length';
|
|
19
|
+
import 'strip-ansi';
|
|
20
|
+
import 'luxon';
|
|
21
|
+
import 'uuid';
|
|
22
|
+
import 'fast-glob';
|
|
23
|
+
import 'yazl';
|
|
24
|
+
import 'socket.io-client';
|
|
25
|
+
import 'open';
|
|
26
|
+
import 'crypto-js';
|
|
27
|
+
import '../../../useAndroidServiceAccountTestResult-BnxNuoG3.js';
|
|
28
|
+
import 'crypto';
|
|
29
|
+
import 'readline-sync';
|
|
30
|
+
import 'node:readline';
|
|
31
|
+
import 'node:path';
|
|
32
|
+
import 'node:url';
|
|
33
|
+
import 'isomorphic-git';
|
|
34
|
+
import '../../../git-DREGq-jc.js';
|
|
35
|
+
import '../../../index-CFHmtzfq.js';
|
|
36
|
+
import 'path';
|
|
37
|
+
import '@expo/apple-utils/build/index.js';
|
|
38
|
+
import 'ini';
|
|
39
|
+
import 'deepmerge';
|
|
40
|
+
|
|
41
|
+
class GameAndroidStatus extends BaseGameCommand {
|
|
42
|
+
static args = {};
|
|
43
|
+
static description = "Shows the status of the setup for the Android platform for a specific game.";
|
|
44
|
+
static examples = [
|
|
45
|
+
"<%= config.bin %> <%= command.id %>",
|
|
46
|
+
"<%= config.bin %> <%= command.id %> --gameId 0c179fc4"
|
|
47
|
+
];
|
|
48
|
+
static flags = {
|
|
49
|
+
gameId: Flags.string({ char: "g", description: "The ID of the game" })
|
|
50
|
+
};
|
|
51
|
+
async run() {
|
|
52
|
+
const game = await this.getGame();
|
|
53
|
+
const platformStatus = await getProjectPlatformProgress(game.id, Platform.ANDROID);
|
|
54
|
+
const gameStatuses = {
|
|
55
|
+
name: game.name,
|
|
56
|
+
id: getShortUUID(game.id),
|
|
57
|
+
createdAt: getShortDate(game.createdAt),
|
|
58
|
+
engine: "Godot"
|
|
59
|
+
};
|
|
60
|
+
const steps = [
|
|
61
|
+
(platformStatus.hasBundleSet == false || platformStatus.hasApiKeyForPlatform == false || platformStatus.hasCredentialsForPlatform == false) && "$ shipthis game android setup"
|
|
62
|
+
].filter(Boolean);
|
|
63
|
+
const progressToStatuses = (progress) => {
|
|
64
|
+
const { platform, ...rest } = progress;
|
|
65
|
+
return makeHumanReadable(rest);
|
|
66
|
+
};
|
|
67
|
+
render(
|
|
68
|
+
/* @__PURE__ */ jsxs(Command, { command: this, children: [
|
|
69
|
+
/* @__PURE__ */ jsx(StatusTable, { marginBottom: 1, title: "ShipThis game status", statuses: gameStatuses }),
|
|
70
|
+
/* @__PURE__ */ jsx(
|
|
71
|
+
StatusTable,
|
|
72
|
+
{
|
|
73
|
+
marginBottom: 1,
|
|
74
|
+
title: "Overall Android status for game",
|
|
75
|
+
statuses: progressToStatuses(platformStatus)
|
|
76
|
+
}
|
|
77
|
+
),
|
|
78
|
+
/* @__PURE__ */ jsx(NextSteps, { steps })
|
|
79
|
+
] })
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export { GameAndroidStatus as default };
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { render } from 'ink';
|
|
3
|
+
import { B as BaseAuthenticatedCommand, D as DetailsFlags } from '../../../index-CF0fIsx2.js';
|
|
4
|
+
import { C as Command, A as AndroidWizard } from '../../../Command-BrfJSeOC.js';
|
|
5
|
+
import 'react';
|
|
6
|
+
import 'ink-spinner';
|
|
7
|
+
import 'axios';
|
|
8
|
+
import 'crypto-js';
|
|
9
|
+
import 'uuid';
|
|
10
|
+
import 'luxon';
|
|
11
|
+
import 'fs';
|
|
12
|
+
import '@inkjs/ui';
|
|
13
|
+
import 'crypto';
|
|
14
|
+
import 'readline-sync';
|
|
15
|
+
import 'node:readline';
|
|
16
|
+
import 'node:path';
|
|
17
|
+
import 'node:url';
|
|
18
|
+
import '@tanstack/react-query';
|
|
19
|
+
import 'fast-glob';
|
|
20
|
+
import 'yazl';
|
|
21
|
+
import 'socket.io-client';
|
|
22
|
+
import 'isomorphic-git';
|
|
23
|
+
import '@oclif/core';
|
|
24
|
+
import 'marked';
|
|
25
|
+
import 'marked-terminal';
|
|
26
|
+
import 'qrcode';
|
|
27
|
+
import 'string-length';
|
|
28
|
+
import 'strip-ansi';
|
|
29
|
+
import 'path';
|
|
30
|
+
import '@expo/apple-utils/build/index.js';
|
|
31
|
+
import 'ini';
|
|
32
|
+
import 'deepmerge';
|
|
33
|
+
import 'open';
|
|
34
|
+
import '../../../index-Df8uXQ4s.js';
|
|
35
|
+
import '../../../useAndroidServiceAccountTestResult-BnxNuoG3.js';
|
|
36
|
+
import '../../../git-DREGq-jc.js';
|
|
37
|
+
import '../../../index-CFHmtzfq.js';
|
|
38
|
+
|
|
39
|
+
class GameAndroidWizard extends BaseAuthenticatedCommand {
|
|
40
|
+
static args = {};
|
|
41
|
+
static description = "Prototype Android Wizard";
|
|
42
|
+
static examples = ["<%= config.bin %> <%= command.id %>"];
|
|
43
|
+
static flags = {
|
|
44
|
+
...DetailsFlags
|
|
45
|
+
};
|
|
46
|
+
async run() {
|
|
47
|
+
render(
|
|
48
|
+
/* @__PURE__ */ jsx(Command, { command: this, children: /* @__PURE__ */ jsx(AndroidWizard, { onComplete: () => process.exit(0), onError: (e) => this.error(e) }) })
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export { GameAndroidWizard as default };
|
|
@@ -2,25 +2,39 @@ import { jsx } from 'react/jsx-runtime';
|
|
|
2
2
|
import { Args, Flags } from '@oclif/core';
|
|
3
3
|
import { render } from 'ink';
|
|
4
4
|
import * as fs from 'fs';
|
|
5
|
-
import '
|
|
6
|
-
import '
|
|
7
|
-
import
|
|
5
|
+
import { c as BaseGameCommand, I as getBuild } from '../../../index-CF0fIsx2.js';
|
|
6
|
+
import { C as Command, R as RunWithSpinner } from '../../../Command-BrfJSeOC.js';
|
|
7
|
+
import 'react';
|
|
8
|
+
import 'ink-spinner';
|
|
9
|
+
import '@inkjs/ui';
|
|
8
10
|
import 'crypto';
|
|
9
11
|
import 'readline-sync';
|
|
10
12
|
import 'node:readline';
|
|
11
|
-
import '
|
|
13
|
+
import 'node:path';
|
|
14
|
+
import 'node:url';
|
|
12
15
|
import axios from 'axios';
|
|
13
16
|
import '@tanstack/react-query';
|
|
14
|
-
import 'socket.io-client';
|
|
15
17
|
import 'luxon';
|
|
18
|
+
import 'uuid';
|
|
19
|
+
import 'fast-glob';
|
|
20
|
+
import 'yazl';
|
|
21
|
+
import 'socket.io-client';
|
|
16
22
|
import 'isomorphic-git';
|
|
17
|
-
import
|
|
18
|
-
import '
|
|
23
|
+
import 'marked';
|
|
24
|
+
import 'marked-terminal';
|
|
25
|
+
import 'qrcode';
|
|
19
26
|
import 'string-length';
|
|
20
27
|
import 'strip-ansi';
|
|
21
|
-
import
|
|
28
|
+
import 'path';
|
|
29
|
+
import '@expo/apple-utils/build/index.js';
|
|
30
|
+
import 'crypto-js';
|
|
22
31
|
import 'ini';
|
|
23
32
|
import 'deepmerge';
|
|
33
|
+
import 'open';
|
|
34
|
+
import '../../../index-Df8uXQ4s.js';
|
|
35
|
+
import '../../../useAndroidServiceAccountTestResult-BnxNuoG3.js';
|
|
36
|
+
import '../../../git-DREGq-jc.js';
|
|
37
|
+
import '../../../index-CFHmtzfq.js';
|
|
24
38
|
|
|
25
39
|
class GameBuildDownload extends BaseGameCommand {
|
|
26
40
|
static args = {
|
|
@@ -62,7 +76,7 @@ class GameBuildDownload extends BaseGameCommand {
|
|
|
62
76
|
};
|
|
63
77
|
const handleComplete = async () => process.exit(0);
|
|
64
78
|
render(
|
|
65
|
-
/* @__PURE__ */ jsx(
|
|
79
|
+
/* @__PURE__ */ jsx(Command, { command: this, children: /* @__PURE__ */ jsx(
|
|
66
80
|
RunWithSpinner,
|
|
67
81
|
{
|
|
68
82
|
msgInProgress: `Downloading to ${file}...`,
|
|
@@ -1,31 +1,42 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { Box, Text, render } from 'ink';
|
|
3
3
|
import { Flags } from '@oclif/core';
|
|
4
|
-
import '
|
|
5
|
-
import '
|
|
6
|
-
import '
|
|
4
|
+
import { c as BaseGameCommand } from '../../../index-CF0fIsx2.js';
|
|
5
|
+
import { e as useBuilds, T as Title, f as getBuildSummary } from '../../../Command-BrfJSeOC.js';
|
|
6
|
+
import 'react';
|
|
7
|
+
import Spinner from 'ink-spinner';
|
|
7
8
|
import 'axios';
|
|
8
|
-
import
|
|
9
|
+
import 'crypto-js';
|
|
10
|
+
import 'uuid';
|
|
9
11
|
import 'luxon';
|
|
12
|
+
import 'fs';
|
|
13
|
+
import '@inkjs/ui';
|
|
10
14
|
import 'crypto';
|
|
11
15
|
import 'readline-sync';
|
|
12
16
|
import 'node:readline';
|
|
13
|
-
import '
|
|
17
|
+
import 'node:path';
|
|
18
|
+
import 'node:url';
|
|
14
19
|
import '@tanstack/react-query';
|
|
20
|
+
import 'fast-glob';
|
|
21
|
+
import 'yazl';
|
|
15
22
|
import 'socket.io-client';
|
|
16
23
|
import 'isomorphic-git';
|
|
17
|
-
import
|
|
18
|
-
import
|
|
19
|
-
import
|
|
20
|
-
import { T as Table } from '../../../Table-CvM6pccN.js';
|
|
21
|
-
import { T as Title } from '../../../Title-BCQtayg6.js';
|
|
24
|
+
import 'marked';
|
|
25
|
+
import 'marked-terminal';
|
|
26
|
+
import 'qrcode';
|
|
22
27
|
import 'string-length';
|
|
23
28
|
import 'strip-ansi';
|
|
29
|
+
import { C as CommandGame } from '../../../CommandGame-D9wl8hfX.js';
|
|
30
|
+
import { T as Table } from '../../../Table-CvM6pccN.js';
|
|
31
|
+
import 'path';
|
|
32
|
+
import '@expo/apple-utils/build/index.js';
|
|
24
33
|
import 'ini';
|
|
25
34
|
import 'deepmerge';
|
|
26
|
-
import '
|
|
27
|
-
import '../../../index-
|
|
28
|
-
import '../../../
|
|
35
|
+
import 'open';
|
|
36
|
+
import '../../../index-Df8uXQ4s.js';
|
|
37
|
+
import '../../../useAndroidServiceAccountTestResult-BnxNuoG3.js';
|
|
38
|
+
import '../../../git-DREGq-jc.js';
|
|
39
|
+
import '../../../index-CFHmtzfq.js';
|
|
29
40
|
|
|
30
41
|
const BuildsTable = ({ queryProps, ...boxProps }) => {
|
|
31
42
|
const { isLoading, data } = useBuilds(queryProps);
|
|
@@ -75,7 +86,7 @@ class GameBuildList extends BaseGameCommand {
|
|
|
75
86
|
...params
|
|
76
87
|
};
|
|
77
88
|
render(
|
|
78
|
-
/* @__PURE__ */ jsx(
|
|
89
|
+
/* @__PURE__ */ jsx(CommandGame, { command: this, children: /* @__PURE__ */ jsx(BuildsTable, { queryProps }) })
|
|
79
90
|
);
|
|
80
91
|
}
|
|
81
92
|
}
|
|
@@ -1,19 +1,25 @@
|
|
|
1
1
|
import { Flags } from '@oclif/core';
|
|
2
|
-
import { B as BaseAuthenticatedCommand,
|
|
2
|
+
import { B as BaseAuthenticatedCommand, D as DetailsFlags, j as isCWDGodotGame, t as GameEngine, u as getGodotVersion, v as createProject, w as DEFAULT_IGNORED_FILES_GLOBS, x as DEFAULT_SHIPPED_FILES_GLOBS, y as getGodotProjectName } from '../../index-CF0fIsx2.js';
|
|
3
|
+
import { a as getInput } from '../../index-Df8uXQ4s.js';
|
|
3
4
|
import 'path';
|
|
4
5
|
import 'fs';
|
|
5
6
|
import '@expo/apple-utils/build/index.js';
|
|
6
|
-
import { a as getInput } from '../../index-ZHJdUrwJ.js';
|
|
7
7
|
import 'axios';
|
|
8
|
+
import 'crypto-js';
|
|
9
|
+
import 'uuid';
|
|
8
10
|
import 'luxon';
|
|
9
11
|
import 'crypto';
|
|
10
12
|
import 'readline-sync';
|
|
11
13
|
import 'node:readline';
|
|
14
|
+
import 'node:path';
|
|
15
|
+
import 'node:url';
|
|
12
16
|
import 'react';
|
|
13
17
|
import '@tanstack/react-query';
|
|
14
|
-
import 'socket.io-client';
|
|
15
18
|
import 'ini';
|
|
16
19
|
import 'deepmerge';
|
|
20
|
+
import 'fast-glob';
|
|
21
|
+
import 'yazl';
|
|
22
|
+
import 'socket.io-client';
|
|
17
23
|
import 'isomorphic-git';
|
|
18
24
|
|
|
19
25
|
class GameCreate extends BaseAuthenticatedCommand {
|
|
@@ -23,30 +29,32 @@ class GameCreate extends BaseAuthenticatedCommand {
|
|
|
23
29
|
static flags = {
|
|
24
30
|
quiet: Flags.boolean({ char: "q", description: "Avoid output except for interactions and errors" }),
|
|
25
31
|
force: Flags.boolean({ char: "f" }),
|
|
26
|
-
|
|
32
|
+
...DetailsFlags
|
|
27
33
|
};
|
|
28
34
|
async run() {
|
|
29
35
|
const { flags } = this;
|
|
30
|
-
|
|
36
|
+
const { quiet, force, name: flagName, ...details } = flags;
|
|
37
|
+
if (this.hasProjectConfig() && !force) {
|
|
31
38
|
throw new Error("This directory already has a ShipThis project. Use --force to overwrite.");
|
|
32
39
|
}
|
|
33
40
|
if (!isCWDGodotGame()) {
|
|
34
41
|
this.error("No Godot project detected. Please run this from a godot project directory.", { exit: 1 });
|
|
35
42
|
}
|
|
36
43
|
const getName = async () => {
|
|
37
|
-
if (
|
|
44
|
+
if (flagName) return flagName;
|
|
38
45
|
const suggested = getGodotProjectName() || "My Awesome Game";
|
|
39
|
-
const
|
|
40
|
-
return
|
|
46
|
+
const entered = await getInput(`Please enter the name of the game, or press enter to use ${suggested}: `);
|
|
47
|
+
return entered || suggested;
|
|
41
48
|
};
|
|
42
49
|
const name = await getName();
|
|
43
50
|
const gameEngine = GameEngine.GODOT;
|
|
44
51
|
const gameEngineVersion = getGodotVersion();
|
|
45
|
-
const
|
|
52
|
+
const projectDetails = {
|
|
53
|
+
...details,
|
|
46
54
|
gameEngine,
|
|
47
55
|
gameEngineVersion
|
|
48
56
|
};
|
|
49
|
-
const project = await createProject({ name, details });
|
|
57
|
+
const project = await createProject({ name, details: projectDetails });
|
|
50
58
|
await this.setProjectConfig({
|
|
51
59
|
project,
|
|
52
60
|
shippedFilesGlobs: DEFAULT_SHIPPED_FILES_GLOBS,
|