shipthis 0.1.34 → 0.1.36
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 +223 -80
- package/assets/markdown/agreement-update.md.ejs +12 -0
- package/assets/markdown/{android-success.md → android-success.md.ejs} +2 -2
- package/assets/markdown/{apikey-create.md → apikey-create.md.ejs} +4 -4
- package/assets/markdown/{create-google-play-game.md → create-google-play-game.md.ejs} +2 -2
- package/assets/markdown/{invite-service-account.md → invite-service-account.md.ejs} +1 -1
- package/assets/markdown/{ios-success.md → ios-success.md.ejs} +2 -2
- package/assets/markdown/{privacy-notification.md → privacy-notification.md.ejs} +1 -1
- package/assets/markdown/service-account-policy-wizard.md.ejs +26 -0
- package/assets/markdown/service-account-policy.md.ejs +30 -0
- package/assets/markdown/{ship-failure.md → ship-failure.md.ejs} +1 -1
- package/assets/markdown/{ship-success.md → ship-success.md.ejs} +2 -2
- package/dist/{AppleBundleIdDetails-By-sSGNl.js → AppleBundleIdDetails-pEVOUXTQ.js} +3 -4
- package/dist/{Command-VWMnGslo.js → Command-DhAVAdiI.js} +1 -2
- package/dist/{CommandGame-BSVPZzNl.js → CommandGame-C-oV-hb4.js} +2 -2
- package/dist/{Create-SR1Mq7BY.js → Create-Dg9ZlwEd.js} +1 -3
- package/dist/{GameStatus-1ntFyxEx.js → GameStatus-Dm9TqFfW.js} +9 -17
- package/dist/{Import-cedOWPDz.js → Import-BFNNkN-I.js} +2 -4
- package/dist/{JobLogTail-C_W8UAMg.js → JobLogTail-RTNIiAUk.js} +2 -5
- package/dist/{JobProgress-CI385G53.js → JobProgress-dFWcT0CQ.js} +16 -17
- package/dist/{JobStatusTable-CdbKtwJE.js → JobStatusTable-BlvMuWF7.js} +2 -4
- package/dist/{ProjectCredentialsTable-ZnuIfcDB.js → ProjectCredentialsTable-CMBnYLou.js} +2 -2
- package/dist/{UserCredentialsTable-DRkAYgEA.js → UserCredentialsTable-oxE3mDmE.js} +8 -10
- package/dist/{baseAppleCommand-CsO-_Yzn.js → baseAppleCommand-cnLvBz95.js} +1 -1
- package/dist/{baseGameAndroidCommand-CdjaAbNX.js → baseGameAndroidCommand-DUDYisYm.js} +1 -2
- package/dist/commands/apiKey/create.js +15 -16
- package/dist/commands/apiKey/list.js +6 -7
- package/dist/commands/apiKey/revoke.js +7 -8
- package/dist/commands/apple/apiKey/create.js +7 -8
- package/dist/commands/apple/apiKey/export.js +6 -7
- package/dist/commands/apple/apiKey/import.js +6 -7
- package/dist/commands/apple/apiKey/status.js +12 -13
- package/dist/commands/apple/certificate/create.js +7 -8
- package/dist/commands/apple/certificate/export.js +6 -7
- package/dist/commands/apple/certificate/import.js +6 -7
- package/dist/commands/apple/certificate/status.js +12 -13
- package/dist/commands/apple/login.js +12 -2
- package/dist/commands/apple/status.js +4 -5
- package/dist/commands/dashboard.js +11 -1
- package/dist/commands/game/android/apiKey/connect.js +9 -9
- package/dist/commands/game/android/apiKey/create.js +11 -11
- package/dist/commands/game/android/apiKey/export.js +7 -8
- package/dist/commands/game/android/apiKey/import.js +7 -8
- package/dist/commands/game/android/apiKey/invite.js +13 -4
- package/dist/commands/game/android/apiKey/policy.js +83 -0
- package/dist/commands/game/android/apiKey/status.js +7 -8
- package/dist/commands/game/android/keyStore/create.js +8 -9
- package/dist/commands/game/android/keyStore/export.js +6 -7
- package/dist/commands/game/android/keyStore/import.js +9 -10
- package/dist/commands/game/android/keyStore/status.js +6 -7
- package/dist/commands/game/android/status.js +12 -1
- package/dist/commands/game/build/download.js +4 -5
- package/dist/commands/game/build/list.js +5 -6
- package/dist/commands/game/create.js +12 -2
- package/dist/commands/game/details.js +4 -5
- package/dist/commands/game/export.js +12 -1
- package/dist/commands/game/ios/app/addTester.js +11 -12
- package/dist/commands/game/ios/app/create.js +4 -5
- package/dist/commands/game/ios/app/status.js +7 -8
- package/dist/commands/game/ios/app/sync.js +5 -6
- package/dist/commands/game/ios/profile/create.js +7 -8
- package/dist/commands/game/ios/profile/export.js +6 -7
- package/dist/commands/game/ios/profile/import.js +6 -7
- package/dist/commands/game/ios/profile/status.js +6 -7
- package/dist/commands/game/ios/status.js +9 -10
- package/dist/commands/game/ios/wizard.js +5 -6
- package/dist/commands/game/job/list.js +4 -5
- package/dist/commands/game/job/status.js +7 -8
- package/dist/commands/game/list.js +11 -10
- package/dist/commands/game/ship.js +18 -13
- package/dist/commands/game/status.js +6 -7
- package/dist/commands/game/wizard.js +19 -19
- package/dist/commands/internal/fastlane.js +12 -1
- package/dist/commands/internal/readme.js +12 -715
- package/dist/commands/login.js +26 -4
- package/dist/commands/status.js +12 -14
- package/dist/{export-B5Yfd9vw.js → export-Bd552LBe.js} +1 -1
- package/dist/{import-A2WcStHl.js → import-D-EL9sQJ.js} +1 -1
- package/dist/{index-CgzANgJt.js → index-1H48f5j2.js} +1 -1
- package/dist/index-BtPf4vzY.js +1903 -0
- package/dist/{index-Bz1qt_8T.js → index-DCN43FhY.js} +5 -11
- package/dist/{index-BBLtvl1Y.js → index-DwATmUTQ.js} +57 -16
- package/dist/{upload-BIsFZzBO.js → upload-Dm38PqhN.js} +1 -1
- package/dist/{useAppleApp-BZR94exU.js → useAppleApp-BKPntZPm.js} +1 -1
- package/dist/{useAppleBundleId-Dg5DsItN.js → useAppleBundleId-DvQKEEy4.js} +1 -1
- package/dist/useGoogleStatus-D9jjGa--.js +9 -0
- package/dist/{useProjectCredentials-jQYGcDhT.js → useProjectCredentials-BjsS28hP.js} +12 -11
- package/dist/{useWebSocket-CIxkPaYi.js → useWebSocket-CIeyHqxG.js} +1 -1
- package/docs/README.md +3 -2
- package/docs/apiKey.md +12 -2
- package/docs/assets/st.png +0 -0
- package/docs/game/android/apiKey/policy.md +28 -0
- package/docs/game/android/keyStore.md +14 -4
- package/docs/game/android/status.md +4 -0
- package/docs/game/android.md +9 -305
- package/docs/game/ship.md +43 -11
- package/docs/game.md +7 -1
- package/docs/login.md +6 -2
- package/docs/status.md +1 -1
- package/package.json +10 -2
- package/dist/index-CA6-uLMn.js +0 -221
- package/dist/index-CO_ssVFA.js +0 -772
- package/dist/index-CYjZ26If.js +0 -153
- package/dist/useAndroidServiceAccountTestResult-DueKynFy.js +0 -50
- /package/assets/markdown/{create-or-import-keystore.md → create-or-import-keystore.md.ejs} +0 -0
|
@@ -12,18 +12,17 @@ import 'readline-sync';
|
|
|
12
12
|
import 'luxon';
|
|
13
13
|
import 'axios';
|
|
14
14
|
import 'isomorphic-git';
|
|
15
|
-
import {
|
|
15
|
+
import { av as getShortAuthRequiredUrl, ax as getGoogleAuthUrl, R as GameContext, at as useSafeInput, W as WEB_URL, au as Markdown } from './index-BtPf4vzY.js';
|
|
16
16
|
import '@oclif/core';
|
|
17
|
-
import
|
|
17
|
+
import '@tanstack/react-query';
|
|
18
18
|
import 'crypto-js';
|
|
19
19
|
import 'uuid';
|
|
20
20
|
import 'fast-glob';
|
|
21
21
|
import 'yazl';
|
|
22
22
|
import 'socket.io-client';
|
|
23
|
-
import {
|
|
24
|
-
import { u as useWebSocket } from './useWebSocket-
|
|
23
|
+
import { u as useGoogleStatus } from './useGoogleStatus-D9jjGa--.js';
|
|
24
|
+
import { u as useWebSocket } from './useWebSocket-CIeyHqxG.js';
|
|
25
25
|
import 'fullscreen-ink';
|
|
26
|
-
import { G as GameContext, e as useSafeInput, M as Markdown } from './index-CA6-uLMn.js';
|
|
27
26
|
import 'string-length';
|
|
28
27
|
import 'strip-ansi';
|
|
29
28
|
import '@inkjs/ui';
|
|
@@ -31,11 +30,6 @@ import 'marked';
|
|
|
31
30
|
import 'marked-terminal';
|
|
32
31
|
import qrcode from 'qrcode';
|
|
33
32
|
|
|
34
|
-
const useGoogleStatus = () => useQuery({
|
|
35
|
-
queryFn: getGoogleStatus,
|
|
36
|
-
queryKey: cacheKeys.googleStatus()
|
|
37
|
-
});
|
|
38
|
-
|
|
39
33
|
function useGoogleStatusWatching({
|
|
40
34
|
isWatching,
|
|
41
35
|
onGoogleStatusUpdate,
|
|
@@ -134,7 +128,7 @@ const ConnectForGame = ({ gameId, helpPage, onComplete, onError, ...boxProps })
|
|
|
134
128
|
};
|
|
135
129
|
return /* @__PURE__ */ jsxs(Box, { flexDirection: "column", gap: 1, ...boxProps, children: [
|
|
136
130
|
!showQRCode && /* @__PURE__ */ jsxs(Box, { flexDirection: "column", gap: 1, children: [
|
|
137
|
-
/* @__PURE__ */ jsx(Markdown, { filename: "privacy-notification.md", templateVars }),
|
|
131
|
+
/* @__PURE__ */ jsx(Markdown, { filename: "privacy-notification.md.ejs", templateVars }),
|
|
138
132
|
connectUrl && /* @__PURE__ */ jsx(Text, { bold: true, color: "#4CE64C", children: `Press B to open ${connectUrl} in your browser and connect your Google account to ShipThis` }),
|
|
139
133
|
/* @__PURE__ */ jsx(Text, { bold: true, color: "#4CE64C", children: "Press Q to show a QR-code to connect using your mobile phone" })
|
|
140
134
|
] }),
|
|
@@ -8,30 +8,27 @@ import 'node:path';
|
|
|
8
8
|
import 'node:readline';
|
|
9
9
|
import 'node:url';
|
|
10
10
|
import 'readline-sync';
|
|
11
|
-
import '
|
|
11
|
+
import { a1 as cacheKeys, t as getAuthedHeaders, s as API_URL, aw as castObjectDates, Y as queryClient, a5 as revokePolicy, a4 as enforcePolicy, P as Platform, C as CredentialsType, a2 as getGoogleStatus, R as GameContext, at as useSafeInput, au as Markdown, c as getShortDate } from './index-BtPf4vzY.js';
|
|
12
12
|
import axios from 'axios';
|
|
13
13
|
import 'isomorphic-git';
|
|
14
|
-
import { p as getAuthedHeaders, o as API_URL, a4 as castObjectDates, P as Platform, C as CredentialsType, Q as getGoogleStatus } from './index-CO_ssVFA.js';
|
|
15
14
|
import '@oclif/core';
|
|
16
|
-
import { useQuery, useQueryClient } from '@tanstack/react-query';
|
|
17
|
-
import
|
|
15
|
+
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
|
|
16
|
+
import 'luxon';
|
|
18
17
|
import 'fast-glob';
|
|
19
18
|
import 'uuid';
|
|
20
19
|
import 'yazl';
|
|
21
20
|
import 'socket.io-client';
|
|
22
21
|
import 'fullscreen-ink';
|
|
23
|
-
import { u as useWebSocket } from './useWebSocket-
|
|
24
|
-
import { u as useProjectCredentials } from './useProjectCredentials-
|
|
22
|
+
import { u as useWebSocket } from './useWebSocket-CIeyHqxG.js';
|
|
23
|
+
import { u as useProjectCredentials } from './useProjectCredentials-BjsS28hP.js';
|
|
24
|
+
import { u as useGoogleStatus } from './useGoogleStatus-D9jjGa--.js';
|
|
25
25
|
import 'crypto-js';
|
|
26
26
|
import 'string-length';
|
|
27
27
|
import 'strip-ansi';
|
|
28
28
|
import 'open';
|
|
29
29
|
import '@inkjs/ui';
|
|
30
|
-
import 'marked';
|
|
31
|
-
import 'marked-terminal';
|
|
32
30
|
import { P as ProgressSpinner } from './ProgressSpinner-Um6ARKlk.js';
|
|
33
31
|
import 'qrcode';
|
|
34
|
-
import { G as GameContext } from './index-CA6-uLMn.js';
|
|
35
32
|
|
|
36
33
|
async function fetchStatus({ projectId }) {
|
|
37
34
|
try {
|
|
@@ -53,6 +50,20 @@ const useAndroidServiceAccountSetupStatus = (props) => useQuery({
|
|
|
53
50
|
staleTime: 1e3 * 5
|
|
54
51
|
});
|
|
55
52
|
|
|
53
|
+
const useUpdateGoogleOrgPolicy = () => useMutation({
|
|
54
|
+
async mutationFn(props) {
|
|
55
|
+
if (props.action === "revoke") {
|
|
56
|
+
return await revokePolicy();
|
|
57
|
+
}
|
|
58
|
+
return await enforcePolicy();
|
|
59
|
+
},
|
|
60
|
+
async onSuccess(data) {
|
|
61
|
+
queryClient.invalidateQueries({
|
|
62
|
+
queryKey: cacheKeys.googleStatus()
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
|
|
56
67
|
const ERR_NOT_AUTHENTICATED = "You must be connected to Google to create a Service Account Key";
|
|
57
68
|
const useHasServiceAccountKey = (projectId) => {
|
|
58
69
|
const { data, isSuccess } = useProjectCredentials({ platform: Platform.ANDROID, projectId });
|
|
@@ -116,20 +127,50 @@ const CreateServiceAccountKey = (props) => {
|
|
|
116
127
|
};
|
|
117
128
|
const CreateForGame = ({ gameId, onComplete, onError, ...boxProps }) => {
|
|
118
129
|
const [didStart, setDidStart] = useState(false);
|
|
130
|
+
const startedRef = useRef(false);
|
|
131
|
+
const { data: googleStatus } = useGoogleStatus();
|
|
132
|
+
const updatePolicyMutation = useUpdateGoogleOrgPolicy();
|
|
119
133
|
const { handleStart, isCreating, setupStatus } = useAndroidServiceAccount({
|
|
120
134
|
onComplete,
|
|
121
135
|
onError,
|
|
122
136
|
projectId: gameId
|
|
123
137
|
});
|
|
124
138
|
useEffect(() => {
|
|
125
|
-
|
|
126
|
-
|
|
139
|
+
if (startedRef.current) return;
|
|
140
|
+
if (!googleStatus) return;
|
|
141
|
+
if (!googleStatus.needsPolicyChange) {
|
|
142
|
+
startedRef.current = true;
|
|
143
|
+
handleStart().then(() => setDidStart(true)).catch((error) => onError(error));
|
|
144
|
+
}
|
|
145
|
+
}, [googleStatus]);
|
|
146
|
+
useSafeInput((input) => {
|
|
147
|
+
if (input === "p" && googleStatus?.needsPolicyChange && !updatePolicyMutation.isPending) {
|
|
148
|
+
updatePolicyMutation.mutate({ action: "revoke" });
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
const needsPolicy = Boolean(googleStatus?.needsPolicyChange);
|
|
152
|
+
const policyChanging = updatePolicyMutation.isPending || updatePolicyMutation.isSuccess && needsPolicy;
|
|
153
|
+
const Header = () => /* @__PURE__ */ jsxs(Box, { flexDirection: "row", gap: 1, children: [
|
|
154
|
+
/* @__PURE__ */ jsx(Text, { children: "Creating a Service Account and API Key..." }),
|
|
155
|
+
isCreating && /* @__PURE__ */ jsx(Spinner, { type: "dots" })
|
|
156
|
+
] });
|
|
127
157
|
return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsxs(Box, { flexDirection: "column", gap: 1, ...boxProps, children: [
|
|
128
|
-
/* @__PURE__ */ jsxs(Box, { flexDirection: "row", gap: 1, children: [
|
|
129
|
-
/* @__PURE__ */ jsx(Text, { children: "
|
|
130
|
-
|
|
131
|
-
] })
|
|
132
|
-
|
|
158
|
+
needsPolicy ? policyChanging ? /* @__PURE__ */ jsxs(Box, { flexDirection: "row", gap: 1, children: [
|
|
159
|
+
/* @__PURE__ */ jsx(Text, { children: "Updating organization policy..." }),
|
|
160
|
+
/* @__PURE__ */ jsx(Spinner, { type: "dots" })
|
|
161
|
+
] }) : googleStatus && /* @__PURE__ */ jsx(
|
|
162
|
+
Markdown,
|
|
163
|
+
{
|
|
164
|
+
filename: "service-account-policy-wizard.md.ejs",
|
|
165
|
+
templateVars: {
|
|
166
|
+
needsPolicyChange: Boolean(googleStatus.needsPolicyChange),
|
|
167
|
+
orgCreatedAt: googleStatus.orgCreatedAt ? getShortDate(googleStatus.orgCreatedAt) : "Unknown",
|
|
168
|
+
orgName: `${googleStatus.orgName}`,
|
|
169
|
+
orgResourceName: `${googleStatus.orgResourceName}`
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
) : /* @__PURE__ */ jsx(Header, {}),
|
|
173
|
+
didStart && /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(ProgressSpinner, { progress: (setupStatus?.progress || 0) * 100, spinnerType: "dots" }) })
|
|
133
174
|
] }) });
|
|
134
175
|
};
|
|
135
176
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
|
-
import {
|
|
2
|
+
import { s as API_URL, t as getAuthedHeaders } from './index-BtPf4vzY.js';
|
|
3
3
|
|
|
4
4
|
async function getNewUploadTicket(projectId = null) {
|
|
5
5
|
const url = projectId ? `${API_URL}/projects/${projectId}/credentials/url` : `${API_URL}/credentials/url`;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useQuery } from '@tanstack/react-query';
|
|
2
|
-
import {
|
|
2
|
+
import { i as BundleId, u as getGodotProjectCapabilities, P as Platform, G as GODOT_CAPABILITIES, v as CapabilityType } from './index-BtPf4vzY.js';
|
|
3
3
|
|
|
4
4
|
async function getBundleIdCapabilities(bundleId) {
|
|
5
5
|
const current = await bundleId.getBundleIdCapabilitiesAsync();
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { useQuery } from '@tanstack/react-query';
|
|
2
|
+
import { a1 as cacheKeys, a2 as getGoogleStatus } from './index-BtPf4vzY.js';
|
|
3
|
+
|
|
4
|
+
const useGoogleStatus = () => useQuery({
|
|
5
|
+
queryFn: getGoogleStatus,
|
|
6
|
+
queryKey: cacheKeys.googleStatus()
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
export { useGoogleStatus as u };
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { useQuery } from '@tanstack/react-query';
|
|
2
2
|
import axios from 'axios';
|
|
3
|
-
import { b as getShortDate,
|
|
4
|
-
import { c as cacheKeys } from './useAndroidServiceAccountTestResult-DueKynFy.js';
|
|
5
|
-
import { g as getShortUUID } from './index-CYjZ26If.js';
|
|
3
|
+
import { a1 as cacheKeys, b as getShortUUID, c as getShortDate, t as getAuthedHeaders, s as API_URL, X as castArrayObjectDates } from './index-BtPf4vzY.js';
|
|
6
4
|
|
|
7
5
|
async function queryProjectCredentials({
|
|
8
6
|
projectId,
|
|
@@ -22,13 +20,14 @@ async function queryProjectCredentials({
|
|
|
22
20
|
}
|
|
23
21
|
}
|
|
24
22
|
function getProjectCredentialSummary(credential) {
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
23
|
+
const trimLength = 25;
|
|
24
|
+
const summary = {};
|
|
25
|
+
summary.id = getShortUUID(credential.id);
|
|
26
|
+
summary.type = credential.type;
|
|
27
|
+
summary.serial = credential.serialNumber.slice(0, trimLength) + (credential.serialNumber.length > trimLength ? "\u2026" : "");
|
|
28
|
+
summary.isActive = credential.isActive;
|
|
29
|
+
summary.createdAt = getShortDate(credential.createdAt);
|
|
30
|
+
return summary;
|
|
32
31
|
}
|
|
33
32
|
const useProjectCredentials = ({
|
|
34
33
|
platform,
|
|
@@ -42,7 +41,9 @@ const useProjectCredentials = ({
|
|
|
42
41
|
if (!(platform || type)) return data;
|
|
43
42
|
return {
|
|
44
43
|
...data,
|
|
45
|
-
data: data.data.filter(
|
|
44
|
+
data: data.data.filter(
|
|
45
|
+
(credential) => (!platform || credential.platform === platform) && (!type || credential.type === type)
|
|
46
|
+
)
|
|
46
47
|
};
|
|
47
48
|
}
|
|
48
49
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useEffect } from 'react';
|
|
2
2
|
import { io } from 'socket.io-client';
|
|
3
|
-
import {
|
|
3
|
+
import { $ as WS_URL, a0 as getAuthToken } from './index-BtPf4vzY.js';
|
|
4
4
|
|
|
5
5
|
function useWebSocket(listeners = []) {
|
|
6
6
|
const log = () => {
|
package/docs/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ShipThis CLI Reference
|
|
2
2
|
|
|
3
|
-
**ShipThis** is a **command-line tool** which manages releasing your [Godot](https://godotengine.org/) games to the **iOS App Store**.
|
|
3
|
+
**ShipThis** is a **command-line tool** which manages releasing your [Godot](https://godotengine.org/) games to the **iOS App Store** and **Google Play**.
|
|
4
4
|
|
|
5
5
|
:::tip New to ShipThis?
|
|
6
6
|
Begin with our [Quickstart Guide](https://shipth.is/docs/guides/quick-start).
|
|
@@ -8,8 +8,9 @@ Begin with our [Quickstart Guide](https://shipth.is/docs/guides/quick-start).
|
|
|
8
8
|
|
|
9
9
|
## Topics
|
|
10
10
|
|
|
11
|
+
- [apiKey](https://shipth.is/docs/reference/apiKey) - Commands that relate to ShipThis API keys
|
|
11
12
|
- [apple](https://shipth.is/docs/reference/apple) - Commands that relate to linking your ShipThis account with your Apple Developer Account
|
|
12
|
-
- [game](https://shipth.is/docs/reference/game) - Commands that relate to configuring the specific game in the current working directory
|
|
13
|
+
- [game](https://shipth.is/docs/reference/game) - Commands that relate to configuring the specific game in the current working directory
|
|
13
14
|
|
|
14
15
|
## Commands
|
|
15
16
|
|
package/docs/apiKey.md
CHANGED
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
# Topic: `apiKey`
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
## Description
|
|
4
4
|
|
|
5
|
+
Commands in the **apiKey** topic are prefixed with `shipthis apiKey`. These commands let you create new keys, list existing ones, and revoke keys you no longer need.
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
:::info
|
|
8
|
+
ShipThis API keys are securely generated, random tokens used to authenticate requests to the ShipThis API. They are intended for automated environments, like CI pipelines, where manual login is not practical.
|
|
9
|
+
The raw key is only shown once when created, so make sure to copy and store it securely.
|
|
10
|
+
:::
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
## Example
|
|
7
14
|
|
|
15
|
+
[](https://asciinema.org/a/bfCPQIvDNt5zlgcEQhcs7o6Fr#shipthis-col80row24)
|
|
16
|
+
|
|
17
|
+
## Commands
|
|
8
18
|
|
|
9
19
|
### `apiKey create`
|
|
10
20
|
|
|
Binary file
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Command: `game android apiKey policy`
|
|
2
|
+
|
|
3
|
+
## Description
|
|
4
|
+
|
|
5
|
+
Gets and sets the iam.disableServiceAccountKeyCreation policy for your Google Organization
|
|
6
|
+
|
|
7
|
+
## Help Output
|
|
8
|
+
|
|
9
|
+
```help
|
|
10
|
+
USAGE
|
|
11
|
+
$ shipthis game android apiKey policy [-g <value>] [-e | -r] [-w]
|
|
12
|
+
|
|
13
|
+
FLAGS
|
|
14
|
+
-e, --enforce Enforces the policy
|
|
15
|
+
-g, --gameId=<value> The ID of the game
|
|
16
|
+
-r, --revoke Revokes the policy
|
|
17
|
+
-w, --waitForAuth Wait for Google Authentication (10 mins).
|
|
18
|
+
|
|
19
|
+
DESCRIPTION
|
|
20
|
+
Gets and sets the iam.disableServiceAccountKeyCreation policy for your Google Organization
|
|
21
|
+
|
|
22
|
+
EXAMPLES
|
|
23
|
+
$ shipthis game android apiKey policy
|
|
24
|
+
|
|
25
|
+
$ shipthis game android apiKey policy --enforce
|
|
26
|
+
|
|
27
|
+
$ shipthis game android apiKey policy --revoke
|
|
28
|
+
```
|
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
# Topic: `game android keyStore`
|
|
2
2
|
|
|
3
|
+
## Description
|
|
4
|
+
|
|
3
5
|
Commands related to the Android KeyStore for a specific game
|
|
4
6
|
|
|
7
|
+
:::info
|
|
8
|
+
An Android **keystore** is a secure file where you keep the private key that signs your app. When you build and publish an APK or AAB, this key proves to Google Play (and your users) that the app really comes from you.
|
|
5
9
|
|
|
6
|
-
|
|
10
|
+
If you have already published your game on Google Play, you will need to [import](#game-android-keystore-import) the same keystore you used before.
|
|
11
|
+
:::
|
|
12
|
+
|
|
13
|
+
## Example
|
|
7
14
|
|
|
15
|
+
[](https://asciinema.org/a/S3R73FuaGMCwu2C0dHSC0BrJB#shipthis-col80row24)
|
|
16
|
+
|
|
17
|
+
## Commands
|
|
8
18
|
|
|
9
19
|
### `game android keyStore create`
|
|
10
20
|
|
|
@@ -61,14 +71,14 @@ EXAMPLES
|
|
|
61
71
|
|
|
62
72
|
#### Description
|
|
63
73
|
|
|
64
|
-
Imports an Android Keystore to your ShipThis account for the specified game.
|
|
74
|
+
Imports an Android Keystore to your ShipThis account for the specified game. You can import as JKS and password parameters or as a ZIP file.
|
|
65
75
|
|
|
66
76
|
#### Help Output
|
|
67
77
|
|
|
68
78
|
```help
|
|
69
79
|
USAGE
|
|
70
|
-
$ shipthis game android keyStore import [FILE] [-g <value>] [--jksFile <value>] [--
|
|
71
|
-
|
|
80
|
+
$ shipthis game android keyStore import [FILE] [-g <value>] [-f] [--jksFile <value>] [--keyPassword <value>] [--keystorePassword <value>]
|
|
81
|
+
|
|
72
82
|
|
|
73
83
|
ARGUMENTS
|
|
74
84
|
FILE Path to the ZIP file to import (must be in the same format as the export)
|
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
|
|
5
5
|
Shows the status of the setup for the Android platform for a specific game.
|
|
6
6
|
|
|
7
|
+
## Example
|
|
8
|
+
|
|
9
|
+
[](https://asciinema.org/a/SiTSwpQgQtPIcd56v8hYA7zo8#shipthis-col80row24)
|
|
10
|
+
|
|
7
11
|
## Help Output
|
|
8
12
|
|
|
9
13
|
```help
|