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
|
@@ -1,28 +1,41 @@
|
|
|
1
1
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import { Box, Text, render } from 'ink';
|
|
3
3
|
import { Flags } from '@oclif/core';
|
|
4
|
-
import {
|
|
4
|
+
import { u as useProjectCredentials, T as Title, C as Command } from '../../../../Command-BrfJSeOC.js';
|
|
5
|
+
import 'react';
|
|
5
6
|
import Spinner from 'ink-spinner';
|
|
6
|
-
import
|
|
7
|
-
import 'crypto';
|
|
7
|
+
import 'axios';
|
|
8
|
+
import 'crypto-js';
|
|
9
|
+
import 'uuid';
|
|
10
|
+
import { b as getShortDate, n as Profile, o as ProfileType, C as CredentialsType, P as Platform, c as BaseGameCommand } from '../../../../index-CF0fIsx2.js';
|
|
11
|
+
import { DateTime } from 'luxon';
|
|
8
12
|
import 'fs';
|
|
13
|
+
import '@inkjs/ui';
|
|
14
|
+
import 'crypto';
|
|
9
15
|
import 'readline-sync';
|
|
10
16
|
import 'node:readline';
|
|
11
|
-
import '
|
|
12
|
-
import
|
|
17
|
+
import 'node:path';
|
|
18
|
+
import 'node:url';
|
|
13
19
|
import { useQuery } from '@tanstack/react-query';
|
|
14
|
-
import
|
|
20
|
+
import 'fast-glob';
|
|
21
|
+
import 'yazl';
|
|
15
22
|
import 'socket.io-client';
|
|
16
|
-
import '@expo/apple-utils/build/index.js';
|
|
17
23
|
import 'isomorphic-git';
|
|
18
|
-
import
|
|
19
|
-
import
|
|
20
|
-
import
|
|
21
|
-
import { T as Table } from '../../../../Table-CvM6pccN.js';
|
|
22
|
-
import { N as NextSteps } from '../../../../NextSteps-CK9zHOCt.js';
|
|
24
|
+
import 'marked';
|
|
25
|
+
import 'marked-terminal';
|
|
26
|
+
import 'qrcode';
|
|
23
27
|
import 'string-length';
|
|
24
28
|
import 'strip-ansi';
|
|
29
|
+
import { N as NextSteps } from '../../../../NextSteps-DKcjSHZ3.js';
|
|
30
|
+
import { T as Table } from '../../../../Table-CvM6pccN.js';
|
|
31
|
+
import { P as ProjectCredentialsTable } from '../../../../ProjectCredentialsTable-BVvkIPjN.js';
|
|
32
|
+
import 'open';
|
|
33
|
+
import '../../../../index-Df8uXQ4s.js';
|
|
34
|
+
import '../../../../useAndroidServiceAccountTestResult-BnxNuoG3.js';
|
|
35
|
+
import '../../../../git-DREGq-jc.js';
|
|
36
|
+
import '../../../../index-CFHmtzfq.js';
|
|
25
37
|
import 'path';
|
|
38
|
+
import '@expo/apple-utils/build/index.js';
|
|
26
39
|
import 'ini';
|
|
27
40
|
import 'deepmerge';
|
|
28
41
|
|
|
@@ -67,53 +80,6 @@ const useAppleProfiles = (props) => {
|
|
|
67
80
|
return queryResult;
|
|
68
81
|
};
|
|
69
82
|
|
|
70
|
-
async function queryProjectCredentials({
|
|
71
|
-
projectId,
|
|
72
|
-
...pageAndSortParams
|
|
73
|
-
}) {
|
|
74
|
-
try {
|
|
75
|
-
const headers = getAuthedHeaders();
|
|
76
|
-
const url = `${API_URL}/projects/${projectId}/credentials`;
|
|
77
|
-
const response = await axios.get(url, { headers, params: pageAndSortParams });
|
|
78
|
-
return {
|
|
79
|
-
...response.data,
|
|
80
|
-
data: castArrayObjectDates(response.data.data)
|
|
81
|
-
};
|
|
82
|
-
} catch (error) {
|
|
83
|
-
console.warn("queryProjectCredentials Error", error);
|
|
84
|
-
throw error;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
function getProjectCredentialSummary(credential) {
|
|
88
|
-
return {
|
|
89
|
-
id: getShortUUID(credential.id),
|
|
90
|
-
type: credential.type,
|
|
91
|
-
serial: credential.serialNumber,
|
|
92
|
-
isActive: credential.isActive,
|
|
93
|
-
createdAt: getShortDate(credential.createdAt)
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
const useProjectCredentials = ({
|
|
97
|
-
platform,
|
|
98
|
-
type,
|
|
99
|
-
...fetchProps
|
|
100
|
-
}) => {
|
|
101
|
-
const queryResult = useQuery({
|
|
102
|
-
queryKey: cacheKeys.projectCredentials(fetchProps),
|
|
103
|
-
queryFn: async () => queryProjectCredentials(fetchProps),
|
|
104
|
-
select: (data) => {
|
|
105
|
-
if (!(platform || type)) return data;
|
|
106
|
-
return {
|
|
107
|
-
...data,
|
|
108
|
-
data: data.data.filter((credential) => {
|
|
109
|
-
return (!platform || credential.platform === platform) && (!type || credential.type === type);
|
|
110
|
-
})
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
return queryResult;
|
|
115
|
-
};
|
|
116
|
-
|
|
117
83
|
const AppleProfilesTable = ({ ctx, project, ...boxProps }) => {
|
|
118
84
|
const { data: credentialsResponse } = useProjectCredentials({
|
|
119
85
|
projectId: project.id,
|
|
@@ -137,17 +103,6 @@ const AppleProfilesTable = ({ ctx, project, ...boxProps }) => {
|
|
|
137
103
|
] });
|
|
138
104
|
};
|
|
139
105
|
|
|
140
|
-
const ProjectCredentialsTable = ({ credentialTypeName, queryProps, ...boxProps }) => {
|
|
141
|
-
const { isLoading, data } = useProjectCredentials(queryProps);
|
|
142
|
-
const hasActive = data?.data.some((credential) => credential.isActive);
|
|
143
|
-
return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", marginBottom: 1, ...boxProps, children: [
|
|
144
|
-
/* @__PURE__ */ jsx(Title, { children: `${credentialTypeName}s in your ShipThis account` }),
|
|
145
|
-
/* @__PURE__ */ jsx(Box, { marginLeft: 2, marginBottom: 1, flexDirection: "column", children: /* @__PURE__ */ jsx(Text, { children: hasActive ? `You have an active ${credentialTypeName} in your ShipThis account.` : `You DO NOT have an active ${credentialTypeName} which ShipThis can use.` }) }),
|
|
146
|
-
isLoading && /* @__PURE__ */ jsx(Spinner, { type: "dots" }),
|
|
147
|
-
data && data.data.length > 0 && /* @__PURE__ */ jsx(Table, { data: data.data.map(getProjectCredentialSummary) })
|
|
148
|
-
] });
|
|
149
|
-
};
|
|
150
|
-
|
|
151
106
|
class GameIosProfileStatus extends BaseGameCommand {
|
|
152
107
|
static args = {};
|
|
153
108
|
static description = "Shows the Game iOS Mobile Provisioning Profile Status.";
|
|
@@ -166,7 +121,7 @@ class GameIosProfileStatus extends BaseGameCommand {
|
|
|
166
121
|
ctx = authState.context;
|
|
167
122
|
}
|
|
168
123
|
render(
|
|
169
|
-
/* @__PURE__ */ jsxs(
|
|
124
|
+
/* @__PURE__ */ jsxs(Command, { command: this, children: [
|
|
170
125
|
/* @__PURE__ */ jsx(
|
|
171
126
|
ProjectCredentialsTable,
|
|
172
127
|
{
|
|
@@ -1,33 +1,46 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { render } from 'ink';
|
|
3
3
|
import { Flags } from '@oclif/core';
|
|
4
|
-
import {
|
|
5
|
-
import 'ink-spinner';
|
|
6
|
-
import { d as BaseGameCommand, e as getProjectPlatformProgress, P as Platform, f as getShortDate } from '../../../baseGameCommand-B3NbuvDu.js';
|
|
7
|
-
import { g as getShortUUID, m as makeHumanReadable } from '../../../index-ZHJdUrwJ.js';
|
|
4
|
+
import { C as Command } from '../../../Command-BrfJSeOC.js';
|
|
8
5
|
import 'react';
|
|
9
|
-
import
|
|
10
|
-
import {
|
|
11
|
-
import
|
|
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';
|
|
12
10
|
import 'axios';
|
|
13
11
|
import '@tanstack/react-query';
|
|
14
|
-
import '
|
|
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';
|
|
15
18
|
import 'string-length';
|
|
16
19
|
import 'strip-ansi';
|
|
20
|
+
import { A as AppleAppDetails, a as AppleBundleIdDetails } from '../../../AppleBundleIdDetails-BF-Pm1Ia.js';
|
|
17
21
|
import 'luxon';
|
|
18
|
-
import '
|
|
19
|
-
import '
|
|
20
|
-
import '
|
|
22
|
+
import 'uuid';
|
|
23
|
+
import 'fast-glob';
|
|
24
|
+
import 'yazl';
|
|
25
|
+
import 'socket.io-client';
|
|
26
|
+
import 'open';
|
|
27
|
+
import 'crypto-js';
|
|
28
|
+
import '../../../useAndroidServiceAccountTestResult-BnxNuoG3.js';
|
|
21
29
|
import 'crypto';
|
|
22
30
|
import 'readline-sync';
|
|
23
31
|
import 'node:readline';
|
|
32
|
+
import 'node:path';
|
|
33
|
+
import 'node:url';
|
|
24
34
|
import 'isomorphic-git';
|
|
35
|
+
import '../../../git-DREGq-jc.js';
|
|
36
|
+
import '../../../index-CFHmtzfq.js';
|
|
37
|
+
import 'path';
|
|
38
|
+
import '@expo/apple-utils/build/index.js';
|
|
25
39
|
import 'ini';
|
|
26
40
|
import 'deepmerge';
|
|
27
|
-
import '../../../
|
|
28
|
-
import '../../../useAppleApp-Cr3VcGVs.js';
|
|
41
|
+
import '../../../useAppleApp-IXRdsK5w.js';
|
|
29
42
|
import '../../../Table-CvM6pccN.js';
|
|
30
|
-
import '../../../useAppleBundleId-
|
|
43
|
+
import '../../../useAppleBundleId-DYC5ISKT.js';
|
|
31
44
|
|
|
32
45
|
class GameIosStatus extends BaseGameCommand {
|
|
33
46
|
static args = {};
|
|
@@ -58,7 +71,7 @@ class GameIosStatus extends BaseGameCommand {
|
|
|
58
71
|
const authState = await this.refreshAppleAuthState();
|
|
59
72
|
const ctx = authState.context;
|
|
60
73
|
render(
|
|
61
|
-
/* @__PURE__ */ jsxs(
|
|
74
|
+
/* @__PURE__ */ jsxs(Command, { command: this, children: [
|
|
62
75
|
/* @__PURE__ */ jsx(StatusTable, { marginBottom: 1, title: "ShipThis game status", statuses: gameStatuses }),
|
|
63
76
|
/* @__PURE__ */ jsx(
|
|
64
77
|
StatusTable,
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { Flags } from '@oclif/core';
|
|
2
|
+
import { B as BaseAuthenticatedCommand, j as isCWDGodotGame, P as Platform, C as CredentialsType } from '../../../index-CF0fIsx2.js';
|
|
3
|
+
import 'axios';
|
|
4
|
+
import 'crypto-js';
|
|
5
|
+
import 'uuid';
|
|
6
|
+
import 'luxon';
|
|
7
|
+
import { g as getUserCredentials, a as getProjectCredentials } from '../../../index-CFHmtzfq.js';
|
|
8
|
+
import 'path';
|
|
9
|
+
import 'fs';
|
|
10
|
+
import '@expo/apple-utils/build/index.js';
|
|
11
|
+
import 'crypto';
|
|
12
|
+
import 'readline-sync';
|
|
13
|
+
import 'node:readline';
|
|
14
|
+
import 'node:path';
|
|
15
|
+
import 'node:url';
|
|
16
|
+
import 'react';
|
|
17
|
+
import '@tanstack/react-query';
|
|
18
|
+
import 'ini';
|
|
19
|
+
import 'deepmerge';
|
|
20
|
+
import 'fast-glob';
|
|
21
|
+
import 'yazl';
|
|
22
|
+
import 'socket.io-client';
|
|
23
|
+
import 'isomorphic-git';
|
|
24
|
+
|
|
25
|
+
class GameIosWizard extends BaseAuthenticatedCommand {
|
|
26
|
+
static args = {};
|
|
27
|
+
static description = "Runs all the steps for iOS";
|
|
28
|
+
static examples = ["<%= config.bin %> <%= command.id %>"];
|
|
29
|
+
static flags = {
|
|
30
|
+
forceStep: Flags.string({
|
|
31
|
+
char: "f",
|
|
32
|
+
description: "Force a specific step to run."
|
|
33
|
+
})
|
|
34
|
+
};
|
|
35
|
+
async run() {
|
|
36
|
+
const { flags } = this;
|
|
37
|
+
if (!isCWDGodotGame()) {
|
|
38
|
+
this.error(
|
|
39
|
+
"No Godot project detected. Please run this from a Godot project directory with a project.godot file.",
|
|
40
|
+
{ exit: 1 }
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
const projectConfig = await this.getProjectConfigSafe();
|
|
44
|
+
const game = projectConfig.project;
|
|
45
|
+
const isStepForced = (commandName) => flags.forceStep?.includes(commandName);
|
|
46
|
+
const iosSteps = [
|
|
47
|
+
{
|
|
48
|
+
command: "game:create",
|
|
49
|
+
args: ["--quiet"],
|
|
50
|
+
shouldRun: async () => !game
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
command: "apple:login",
|
|
54
|
+
args: ["--quiet"],
|
|
55
|
+
shouldRun: async () => {
|
|
56
|
+
const isLoggedIn = await this.hasValidAppleAuthState();
|
|
57
|
+
return !isLoggedIn;
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
command: "apple:apiKey:create",
|
|
62
|
+
args: ["--quiet"],
|
|
63
|
+
shouldRun: async () => {
|
|
64
|
+
const userCredentials = await getUserCredentials();
|
|
65
|
+
const userAppleApiKeyCredentials = userCredentials.filter(
|
|
66
|
+
(cred) => cred.platform == Platform.IOS && cred.type == CredentialsType.KEY
|
|
67
|
+
);
|
|
68
|
+
return userAppleApiKeyCredentials.length === 0;
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
command: "apple:certificate:create",
|
|
73
|
+
args: ["--quiet"],
|
|
74
|
+
shouldRun: async () => {
|
|
75
|
+
const userCredentials = await getUserCredentials();
|
|
76
|
+
const userAppleDistCredentials = userCredentials.filter(
|
|
77
|
+
(cred) => cred.platform == Platform.IOS && cred.type == CredentialsType.CERTIFICATE
|
|
78
|
+
);
|
|
79
|
+
return userAppleDistCredentials.length === 0;
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
command: "game:ios:app:create",
|
|
84
|
+
args: ["--quiet"],
|
|
85
|
+
shouldRun: async () => {
|
|
86
|
+
if (!game) return true;
|
|
87
|
+
const hasBundleIdSet = !!game.details?.iosBundleId;
|
|
88
|
+
return !hasBundleIdSet;
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
command: "game:ios:app:sync",
|
|
93
|
+
args: ["--quiet"],
|
|
94
|
+
// Can always run this
|
|
95
|
+
shouldRun: async () => true
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
command: "game:ios:profile:create",
|
|
99
|
+
args: ["--quiet"],
|
|
100
|
+
shouldRun: async () => {
|
|
101
|
+
if (!game) return true;
|
|
102
|
+
const projectCredentials = await getProjectCredentials(game.id);
|
|
103
|
+
const projectAppleProfileCredentials = projectCredentials.filter(
|
|
104
|
+
(cred) => cred.platform == Platform.IOS && cred.type == CredentialsType.CERTIFICATE
|
|
105
|
+
);
|
|
106
|
+
return projectAppleProfileCredentials.length === 0;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
];
|
|
110
|
+
for (const step of iosSteps) {
|
|
111
|
+
const command = step.command;
|
|
112
|
+
const willRun = isStepForced(command) || await step.shouldRun();
|
|
113
|
+
if (!willRun) {
|
|
114
|
+
this.debug(`Skipping step: ${command}`);
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
const args = [...step.args, ...isStepForced(command) ? ["--force"] : []];
|
|
118
|
+
this.debug(`Running step: ${command} with args: ${args.join(" ")}`);
|
|
119
|
+
await this.config.runCommand(command, args);
|
|
120
|
+
}
|
|
121
|
+
await this.config.runCommand("game:status");
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export { GameIosWizard as default };
|
|
@@ -1,29 +1,41 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { render, Box, Text } from 'ink';
|
|
3
3
|
import { Flags } from '@oclif/core';
|
|
4
|
-
import '
|
|
5
|
-
import '
|
|
6
|
-
import '
|
|
7
|
-
import { d as BaseGameCommand, J as getProjectJobs } from '../../../baseGameCommand-B3NbuvDu.js';
|
|
8
|
-
import { d as getJobStatusColor } from '../../../index-ZHJdUrwJ.js';
|
|
9
|
-
import { A as App } from '../../../App-BfoOFeZ-.js';
|
|
4
|
+
import { c as BaseGameCommand, F as getProjectJobs } from '../../../index-CF0fIsx2.js';
|
|
5
|
+
import { g as getJobSummary, C as Command } from '../../../Command-BrfJSeOC.js';
|
|
6
|
+
import 'react';
|
|
10
7
|
import 'ink-spinner';
|
|
11
|
-
import
|
|
12
|
-
import {
|
|
13
|
-
import '@tanstack/react-query';
|
|
8
|
+
import '@inkjs/ui';
|
|
9
|
+
import { d as getJobStatusColor } from '../../../index-Df8uXQ4s.js';
|
|
14
10
|
import 'axios';
|
|
15
|
-
import
|
|
16
|
-
import '
|
|
17
|
-
import '
|
|
11
|
+
import '@tanstack/react-query';
|
|
12
|
+
import 'marked';
|
|
13
|
+
import 'fs';
|
|
14
|
+
import 'marked-terminal';
|
|
15
|
+
import 'qrcode';
|
|
16
|
+
import { T as Table } from '../../../Table-CvM6pccN.js';
|
|
18
17
|
import 'string-length';
|
|
19
18
|
import 'strip-ansi';
|
|
19
|
+
import { DateTime } from 'luxon';
|
|
20
|
+
import 'uuid';
|
|
21
|
+
import 'fast-glob';
|
|
22
|
+
import 'yazl';
|
|
23
|
+
import 'socket.io-client';
|
|
24
|
+
import 'path';
|
|
25
|
+
import '@expo/apple-utils/build/index.js';
|
|
26
|
+
import 'crypto-js';
|
|
20
27
|
import 'crypto';
|
|
21
28
|
import 'readline-sync';
|
|
22
29
|
import 'node:readline';
|
|
30
|
+
import 'node:path';
|
|
31
|
+
import 'node:url';
|
|
23
32
|
import 'ini';
|
|
24
33
|
import 'deepmerge';
|
|
25
34
|
import 'isomorphic-git';
|
|
26
|
-
import '
|
|
35
|
+
import 'open';
|
|
36
|
+
import '../../../useAndroidServiceAccountTestResult-BnxNuoG3.js';
|
|
37
|
+
import '../../../git-DREGq-jc.js';
|
|
38
|
+
import '../../../index-CFHmtzfq.js';
|
|
27
39
|
|
|
28
40
|
class GameJobList extends BaseGameCommand {
|
|
29
41
|
static args = {};
|
|
@@ -57,7 +69,7 @@ class GameJobList extends BaseGameCommand {
|
|
|
57
69
|
const jobListResponse = await getProjectJobs(game.id, params);
|
|
58
70
|
const data = jobListResponse.data.map((j) => getJobSummary(j, DateTime.now()));
|
|
59
71
|
render(
|
|
60
|
-
/* @__PURE__ */ jsxs(
|
|
72
|
+
/* @__PURE__ */ jsxs(Command, { command: this, children: [
|
|
61
73
|
/* @__PURE__ */ jsx(
|
|
62
74
|
Table,
|
|
63
75
|
{
|
|
@@ -1,32 +1,42 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import { Args, Flags } from '@oclif/core';
|
|
3
3
|
import { measureElement, Box, Text, render } from 'ink';
|
|
4
|
-
import '
|
|
5
|
-
import '
|
|
6
|
-
import '
|
|
7
|
-
import
|
|
4
|
+
import { p as getAuthedHeaders, q as API_URL, J as castArrayObjectDates, Z as castObjectDates, _ as getShortTime, K as JobStatus, c as BaseGameCommand, $ as getJob } from '../../../index-CF0fIsx2.js';
|
|
5
|
+
import { h as useWebSocket, T as Title, i as useJobWatching, g as getJobSummary, f as getBuildSummary, C as Command } from '../../../Command-BrfJSeOC.js';
|
|
6
|
+
import { useState, useEffect, useRef } from 'react';
|
|
7
|
+
import Spinner from 'ink-spinner';
|
|
8
|
+
import '@inkjs/ui';
|
|
8
9
|
import 'crypto';
|
|
10
|
+
import 'fs';
|
|
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 { useInfiniteQuery } from '@tanstack/react-query';
|
|
14
|
-
import { io } from 'socket.io-client';
|
|
15
17
|
import { DateTime } from '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
|
|
19
|
-
import { N as NextSteps } from '../../../NextSteps-
|
|
20
|
-
import
|
|
21
|
-
import { c as cacheKeys } from '../../../cacheKeys-CShA-ZjE.js';
|
|
22
|
-
import { T as Title } from '../../../Title-BCQtayg6.js';
|
|
23
|
+
import 'marked';
|
|
24
|
+
import 'marked-terminal';
|
|
25
|
+
import { N as NextSteps } from '../../../NextSteps-DKcjSHZ3.js';
|
|
26
|
+
import 'qrcode';
|
|
23
27
|
import stringLength from 'string-length';
|
|
24
28
|
import stripAnsi from 'strip-ansi';
|
|
25
|
-
import {
|
|
26
|
-
import
|
|
27
|
-
import {
|
|
29
|
+
import { f as getStageColor, h as getMessageColor, d as getJobStatusColor } from '../../../index-Df8uXQ4s.js';
|
|
30
|
+
import 'crypto-js';
|
|
31
|
+
import { c as cacheKeys } from '../../../useAndroidServiceAccountTestResult-BnxNuoG3.js';
|
|
32
|
+
import { a as StatusRow, b as StatusRowLabel } from '../../../StatusTable-BzsNF75L.js';
|
|
33
|
+
import 'path';
|
|
34
|
+
import '@expo/apple-utils/build/index.js';
|
|
28
35
|
import 'ini';
|
|
29
36
|
import 'deepmerge';
|
|
37
|
+
import 'open';
|
|
38
|
+
import '../../../git-DREGq-jc.js';
|
|
39
|
+
import '../../../index-CFHmtzfq.js';
|
|
30
40
|
|
|
31
41
|
async function queryJobLogs({
|
|
32
42
|
projectId,
|
|
@@ -63,34 +73,6 @@ const useJobLogs = (props) => {
|
|
|
63
73
|
return queryResult;
|
|
64
74
|
};
|
|
65
75
|
|
|
66
|
-
function useWebSocket(listeners = []) {
|
|
67
|
-
const log = () => {
|
|
68
|
-
};
|
|
69
|
-
useEffect(() => {
|
|
70
|
-
if (listeners.length === 0) {
|
|
71
|
-
return;
|
|
72
|
-
}
|
|
73
|
-
const token = getAuthToken();
|
|
74
|
-
const socket = io(WS_URL, {
|
|
75
|
-
auth: { token },
|
|
76
|
-
forceNew: true
|
|
77
|
-
});
|
|
78
|
-
socket.on("connect", () => log());
|
|
79
|
-
for (const listener of listeners) {
|
|
80
|
-
const pattern = listener.getPattern();
|
|
81
|
-
const bindSocket = (pattern2) => {
|
|
82
|
-
const boundListener = listener.eventHandler.bind(listener, pattern2);
|
|
83
|
-
socket.on(pattern2, boundListener);
|
|
84
|
-
};
|
|
85
|
-
if (Array.isArray(pattern)) return pattern.forEach(bindSocket);
|
|
86
|
-
bindSocket(pattern);
|
|
87
|
-
}
|
|
88
|
-
return () => {
|
|
89
|
-
socket.disconnect();
|
|
90
|
-
};
|
|
91
|
-
}, []);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
76
|
function arrayToDictionary(array, key = "id") {
|
|
95
77
|
return array.reduce((a, i) => {
|
|
96
78
|
a[i[key]] = i;
|
|
@@ -135,33 +117,6 @@ function useJobLogTail(props) {
|
|
|
135
117
|
};
|
|
136
118
|
}
|
|
137
119
|
|
|
138
|
-
function useJobWatching({ projectId, jobId, isWatching, onJobUpdate }) {
|
|
139
|
-
const [websocketJob, setWebsocketJob] = useState(null);
|
|
140
|
-
const listener = {
|
|
141
|
-
getPattern: () => [`project.${projectId}:job:created`, `project.${projectId}:job:updated`],
|
|
142
|
-
eventHandler: async (pattern, rawJob) => {
|
|
143
|
-
if (rawJob.id !== jobId) return;
|
|
144
|
-
const job2 = castJobDates(rawJob);
|
|
145
|
-
setWebsocketJob(job2);
|
|
146
|
-
if (onJobUpdate) onJobUpdate(job2);
|
|
147
|
-
}
|
|
148
|
-
};
|
|
149
|
-
useWebSocket(isWatching ? [listener] : []);
|
|
150
|
-
const { isLoading, data: job } = useJob({
|
|
151
|
-
projectId,
|
|
152
|
-
jobId
|
|
153
|
-
});
|
|
154
|
-
useEffect(() => {
|
|
155
|
-
setWebsocketJob(null);
|
|
156
|
-
}, [jobId, projectId, isWatching, job]);
|
|
157
|
-
const fetchedJob = job ? job : null;
|
|
158
|
-
const data = websocketJob ? websocketJob : fetchedJob;
|
|
159
|
-
return {
|
|
160
|
-
isLoading,
|
|
161
|
-
data
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
|
|
165
120
|
const TruncatedText = ({ children, wrap, ...textPropsWithoutWrap }) => {
|
|
166
121
|
const ref = useRef();
|
|
167
122
|
const [width, setWidth] = useState(null);
|
|
@@ -285,7 +240,7 @@ class GameJobStatus extends BaseGameCommand {
|
|
|
285
240
|
}
|
|
286
241
|
};
|
|
287
242
|
render(
|
|
288
|
-
/* @__PURE__ */ jsxs(
|
|
243
|
+
/* @__PURE__ */ jsxs(Command, { command: this, children: [
|
|
289
244
|
/* @__PURE__ */ jsx(JobStatusTable, { jobId: job.id, projectId: job.project.id, isWatching: follow, onJobUpdate: handleJobUpdate }),
|
|
290
245
|
/* @__PURE__ */ jsx(JobLogTail, { jobId: job.id, projectId: job.project.id, isWatching: follow, length: lines }),
|
|
291
246
|
/* @__PURE__ */ jsx(NextSteps, { steps: [] })
|
|
@@ -1,27 +1,41 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { render, Text, Box } from 'ink';
|
|
3
3
|
import { Flags } from '@oclif/core';
|
|
4
|
-
import { B as BaseAuthenticatedCommand,
|
|
5
|
-
import '
|
|
6
|
-
import '
|
|
7
|
-
import '@expo/apple-utils/build/index.js';
|
|
8
|
-
import { g as getShortUUID } from '../../index-ZHJdUrwJ.js';
|
|
9
|
-
import { A as App } from '../../App-BfoOFeZ-.js';
|
|
4
|
+
import { B as BaseAuthenticatedCommand, g as getProjects, b as getShortDate } from '../../index-CF0fIsx2.js';
|
|
5
|
+
import { C as Command } from '../../Command-BrfJSeOC.js';
|
|
6
|
+
import 'react';
|
|
10
7
|
import 'ink-spinner';
|
|
11
|
-
import
|
|
12
|
-
import '
|
|
13
|
-
import '@tanstack/react-query';
|
|
8
|
+
import '@inkjs/ui';
|
|
9
|
+
import { g as getShortUUID } from '../../index-Df8uXQ4s.js';
|
|
14
10
|
import 'axios';
|
|
15
|
-
import 'react';
|
|
16
|
-
import '
|
|
11
|
+
import '@tanstack/react-query';
|
|
12
|
+
import 'marked';
|
|
13
|
+
import 'fs';
|
|
14
|
+
import 'marked-terminal';
|
|
15
|
+
import 'qrcode';
|
|
16
|
+
import { T as Table } from '../../Table-CvM6pccN.js';
|
|
17
17
|
import 'string-length';
|
|
18
18
|
import 'strip-ansi';
|
|
19
|
+
import 'luxon';
|
|
20
|
+
import 'uuid';
|
|
21
|
+
import 'fast-glob';
|
|
22
|
+
import 'yazl';
|
|
23
|
+
import 'socket.io-client';
|
|
24
|
+
import 'path';
|
|
25
|
+
import '@expo/apple-utils/build/index.js';
|
|
26
|
+
import 'crypto-js';
|
|
19
27
|
import 'crypto';
|
|
20
28
|
import 'readline-sync';
|
|
21
29
|
import 'node:readline';
|
|
30
|
+
import 'node:path';
|
|
31
|
+
import 'node:url';
|
|
22
32
|
import 'ini';
|
|
23
33
|
import 'deepmerge';
|
|
24
34
|
import 'isomorphic-git';
|
|
35
|
+
import 'open';
|
|
36
|
+
import '../../useAndroidServiceAccountTestResult-BnxNuoG3.js';
|
|
37
|
+
import '../../git-DREGq-jc.js';
|
|
38
|
+
import '../../index-CFHmtzfq.js';
|
|
25
39
|
|
|
26
40
|
class GameList extends BaseAuthenticatedCommand {
|
|
27
41
|
static args = {};
|
|
@@ -55,7 +69,7 @@ class GameList extends BaseAuthenticatedCommand {
|
|
|
55
69
|
};
|
|
56
70
|
});
|
|
57
71
|
render(
|
|
58
|
-
/* @__PURE__ */ jsxs(
|
|
72
|
+
/* @__PURE__ */ jsxs(Command, { command: this, children: [
|
|
59
73
|
gameListResponse.data.length === 0 && params.pageNumber == 0 && /* @__PURE__ */ jsx(Text, { children: "No games found. Create one now with $ shipthis game wizard" }),
|
|
60
74
|
gameListResponse.data.length > 0 && /* @__PURE__ */ jsx(Table, { data }),
|
|
61
75
|
gameListResponse.pageCount > 1 && /* @__PURE__ */ jsxs(Box, { marginTop: 1, flexDirection: "column", children: [
|
|
@@ -3,21 +3,24 @@ import axios from 'axios';
|
|
|
3
3
|
import fg from 'fast-glob';
|
|
4
4
|
import fs__default from 'fs';
|
|
5
5
|
import yazl from 'yazl';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { c as BaseGameCommand, x as DEFAULT_SHIPPED_FILES_GLOBS, w as DEFAULT_IGNORED_FILES_GLOBS, z as getNewUploadTicket, E as startJobsFromUpload } from '../../index-CF0fIsx2.js';
|
|
7
|
+
import { c as getFileHash } from '../../index-Df8uXQ4s.js';
|
|
8
8
|
import { g as getCWDGitInfo } from '../../git-DREGq-jc.js';
|
|
9
|
-
import '@oclif/core';
|
|
10
9
|
import 'path';
|
|
10
|
+
import '@oclif/core';
|
|
11
11
|
import '@expo/apple-utils/build/index.js';
|
|
12
|
+
import 'crypto-js';
|
|
12
13
|
import 'luxon';
|
|
13
14
|
import 'crypto';
|
|
14
15
|
import 'readline-sync';
|
|
15
16
|
import 'node:readline';
|
|
17
|
+
import 'node:path';
|
|
18
|
+
import 'node:url';
|
|
16
19
|
import 'react';
|
|
17
20
|
import '@tanstack/react-query';
|
|
18
|
-
import 'socket.io-client';
|
|
19
21
|
import 'ini';
|
|
20
22
|
import 'deepmerge';
|
|
23
|
+
import 'socket.io-client';
|
|
21
24
|
import 'isomorphic-git';
|
|
22
25
|
|
|
23
26
|
class GameShip extends BaseGameCommand {
|