shipthis 0.0.40 → 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.
Files changed (93) hide show
  1. package/README.md +17 -17
  2. package/dist/{AppleBundleIdDetails-n1_U8IqK.js → AppleBundleIdDetails-BF-Pm1Ia.js} +19 -7
  3. package/dist/Command-BrfJSeOC.js +1077 -0
  4. package/dist/CommandGame-D9wl8hfX.js +8 -0
  5. package/dist/{NextSteps-CK9zHOCt.js → NextSteps-DKcjSHZ3.js} +1 -1
  6. package/dist/ProjectCredentialsTable-BVvkIPjN.js +36 -0
  7. package/dist/{StatusTable-CxuX_R1D.js → StatusTable-BzsNF75L.js} +2 -7
  8. package/dist/{UserCredentialsTable-A_YlFeJX.js → UserCredentialsTable-DUFQqHVt.js} +11 -5
  9. package/dist/{baseAppleCommand-DK5-Cvg4.js → baseAppleCommand-BSJhK8GA.js} +1 -1
  10. package/dist/baseGameAndroidCommand-CPAtReqy.js +43 -0
  11. package/dist/commands/apple/apiKey/create.js +24 -10
  12. package/dist/commands/apple/apiKey/export.js +23 -9
  13. package/dist/commands/apple/apiKey/import.js +23 -9
  14. package/dist/commands/apple/apiKey/status.js +25 -13
  15. package/dist/commands/apple/certificate/create.js +25 -11
  16. package/dist/commands/apple/certificate/export.js +23 -9
  17. package/dist/commands/apple/certificate/import.js +23 -9
  18. package/dist/commands/apple/certificate/status.js +26 -14
  19. package/dist/commands/apple/login.js +9 -3
  20. package/dist/commands/apple/status.js +27 -13
  21. package/dist/commands/dashboard.js +11 -5
  22. package/dist/commands/game/android/apiKey/connect.js +73 -0
  23. package/dist/commands/game/android/apiKey/create.js +70 -0
  24. package/dist/commands/game/android/apiKey/export.js +83 -0
  25. package/dist/commands/game/android/apiKey/import.js +92 -0
  26. package/dist/commands/game/android/apiKey/invite.js +81 -0
  27. package/dist/commands/game/android/apiKey/status.js +86 -0
  28. package/dist/commands/game/android/keyStore/create.js +67 -0
  29. package/dist/commands/game/android/keyStore/export.js +82 -0
  30. package/dist/commands/game/android/keyStore/import.js +91 -0
  31. package/dist/commands/game/android/keyStore/status.js +69 -0
  32. package/dist/commands/game/android/status.js +84 -0
  33. package/dist/commands/game/android/wizard.js +53 -0
  34. package/dist/commands/game/build/download.js +23 -9
  35. package/dist/commands/game/build/list.js +25 -14
  36. package/dist/commands/game/create.js +18 -10
  37. package/dist/commands/game/details.js +28 -19
  38. package/dist/commands/game/export.js +11 -5
  39. package/dist/commands/game/ios/app/addTester.js +25 -12
  40. package/dist/commands/game/ios/app/create.js +26 -13
  41. package/dist/commands/game/ios/app/status.js +27 -13
  42. package/dist/commands/game/ios/app/sync.js +23 -9
  43. package/dist/commands/game/ios/profile/create.js +22 -8
  44. package/dist/commands/game/ios/profile/export.js +23 -9
  45. package/dist/commands/game/ios/profile/import.js +23 -9
  46. package/dist/commands/game/ios/profile/status.js +26 -71
  47. package/dist/commands/game/ios/status.js +28 -15
  48. package/dist/commands/game/ios/wizard.js +125 -0
  49. package/dist/commands/game/job/list.js +26 -14
  50. package/dist/commands/game/job/status.js +26 -71
  51. package/dist/commands/game/list.js +26 -12
  52. package/dist/commands/game/ship.js +7 -4
  53. package/dist/commands/game/status.js +63 -25
  54. package/dist/commands/game/wizard.js +41 -99
  55. package/dist/commands/internal/fastlane.js +74 -0
  56. package/dist/commands/internal/readme.js +1452 -0
  57. package/dist/commands/login.js +11 -4
  58. package/dist/commands/status.js +23 -10
  59. package/dist/{export-C16psune.js → export-B0FJT0EU.js} +1 -1
  60. package/dist/{import-hte2Jy0K.js → import-CLDJ2iPu.js} +1 -1
  61. package/dist/{baseGameCommand-B3NbuvDu.js → index-CF0fIsx2.js} +112 -37
  62. package/dist/index-CFHmtzfq.js +24 -0
  63. package/dist/{index-ZHJdUrwJ.js → index-Df8uXQ4s.js} +14 -3
  64. package/dist/{upload-DADrkIUB.js → upload-C5L82Yq0.js} +1 -1
  65. package/dist/useAndroidServiceAccountTestResult-BnxNuoG3.js +52 -0
  66. package/dist/{useAppleApp-Cr3VcGVs.js → useAppleApp-IXRdsK5w.js} +1 -1
  67. package/dist/{useAppleBundleId-BxtyGpHy.js → useAppleBundleId-DYC5ISKT.js} +1 -1
  68. package/docs/game/android/apiKey/connect.md +27 -0
  69. package/docs/game/android/apiKey/create.md +25 -0
  70. package/docs/game/android/apiKey/export.md +25 -0
  71. package/docs/game/android/apiKey/import.md +25 -0
  72. package/docs/game/android/apiKey/invite.md +27 -0
  73. package/docs/game/android/apiKey/status.md +23 -0
  74. package/docs/game/android/apiKey.md +165 -0
  75. package/docs/game/android/keyStore/create.md +24 -0
  76. package/docs/game/android/keyStore/export.md +25 -0
  77. package/docs/game/android/keyStore/import.md +25 -0
  78. package/docs/game/android/keyStore/status.md +23 -0
  79. package/docs/game/android/keyStore.md +108 -0
  80. package/docs/game/android/status.md +23 -0
  81. package/docs/game/android/wizard.md +28 -0
  82. package/docs/game/android.md +339 -0
  83. package/docs/game/create.md +12 -7
  84. package/docs/game/ios/wizard.md +21 -0
  85. package/docs/game/wizard.md +12 -18
  86. package/oclif.manifest.json +821 -68
  87. package/package.json +53 -18
  88. package/dist/App-BfoOFeZ-.js +0 -21
  89. package/dist/RunWithSpinner-BVXNWGD3.js +0 -27
  90. package/dist/Title-BCQtayg6.js +0 -6
  91. package/dist/cacheKeys-CShA-ZjE.js +0 -9
  92. package/dist/useBuilds-JHqMwpWS.js +0 -41
  93. package/dist/useJob-Bc9fdiyP.js +0 -34
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "shipthis",
3
- "description": "A command line tool which manages releasing your Godot games to the iOS App Store.",
4
- "version": "0.0.40",
3
+ "description": "ShipThis manages building and uploading your Godot games to the App Store and Google Play.",
4
+ "version": "0.1.0",
5
5
  "author": "Hello Invent Ltd",
6
6
  "bin": {
7
7
  "shipthis": "./bin/run.js"
@@ -10,11 +10,14 @@
10
10
  "dependencies": {
11
11
  "@expo/apple-utils": "2.0.3",
12
12
  "@expo/json-file": "^8.3.3",
13
+ "@inkjs/ui": "^2.0.0",
13
14
  "@oclif/core": "^4",
14
15
  "@oclif/plugin-help": "^6",
15
16
  "@tanstack/react-query": "^5.56.2",
17
+ "@types/marked-terminal": "^6.1.1",
16
18
  "@types/uuid": "^10.0.0",
17
19
  "axios": "^1.7.7",
20
+ "crypto-js": "^4.2.0",
18
21
  "deepmerge": "^4.3.1",
19
22
  "fast-glob": "^3.3.2",
20
23
  "fs-extra": "^11.2.0",
@@ -24,9 +27,12 @@
24
27
  "isomorphic-git": "^1.27.1",
25
28
  "jsonwebtoken": "^9.0.2",
26
29
  "luxon": "^3.5.0",
30
+ "marked": "^9.1.6",
31
+ "marked-terminal": "^6.2.0",
27
32
  "node-forge": "^1.3.1",
28
33
  "open": "^10.1.0",
29
34
  "prompts": "^2.4.2",
35
+ "qrcode": "^1.5.4",
30
36
  "react": "^18.3.1",
31
37
  "readline-sync": "^1.4.10",
32
38
  "socket.io-client": "^4.7.5",
@@ -41,6 +47,7 @@
41
47
  "@oclif/prettier-config": "^0.2.1",
42
48
  "@oclif/test": "^4",
43
49
  "@types/chai": "^4",
50
+ "@types/crypto-js": "^4.2.2",
44
51
  "@types/ejs": "^3.1.5",
45
52
  "@types/fs-extra": "^11.0.4",
46
53
  "@types/ini": "^4.1.1",
@@ -50,6 +57,7 @@
50
57
  "@types/node": "^18",
51
58
  "@types/node-forge": "^1.3.11",
52
59
  "@types/prompts": "^2.4.9",
60
+ "@types/qrcode": "^1.5.5",
53
61
  "@types/react": "^18.3.5",
54
62
  "@types/readline-sync": "^1.4.8",
55
63
  "@types/tough-cookie": "^4.0.5",
@@ -78,7 +86,7 @@
78
86
  "/docs",
79
87
  "/oclif.manifest.json"
80
88
  ],
81
- "homepage": "https://shipthis.cc",
89
+ "homepage": "https://shipth.is",
82
90
  "keywords": [
83
91
  "cli",
84
92
  "godot",
@@ -93,35 +101,50 @@
93
101
  "exports": [
94
102
  "./dist/utils/help.js",
95
103
  "./dist/commands/apple/apiKey/export.js",
96
- "./dist/commands/apple/apiKey/status.js",
97
104
  "./dist/commands/apple/apiKey/create.js",
105
+ "./dist/commands/apple/apiKey/status.js",
98
106
  "./dist/commands/apple/apiKey/import.js",
99
107
  "./dist/commands/apple/status.js",
100
- "./dist/commands/apple/login.js",
101
108
  "./dist/commands/apple/certificate/export.js",
102
- "./dist/commands/apple/certificate/status.js",
103
109
  "./dist/commands/apple/certificate/create.js",
110
+ "./dist/commands/apple/certificate/status.js",
104
111
  "./dist/commands/apple/certificate/import.js",
105
- "./dist/commands/game/export.js",
106
- "./dist/commands/game/ios/status.js",
112
+ "./dist/commands/apple/login.js",
113
+ "./dist/commands/game/list.js",
114
+ "./dist/commands/game/ios/app/create.js",
115
+ "./dist/commands/game/ios/app/status.js",
107
116
  "./dist/commands/game/ios/app/sync.js",
108
117
  "./dist/commands/game/ios/app/addTester.js",
109
- "./dist/commands/game/ios/app/status.js",
110
- "./dist/commands/game/ios/app/create.js",
118
+ "./dist/commands/game/ios/wizard.js",
119
+ "./dist/commands/game/ios/status.js",
111
120
  "./dist/commands/game/ios/profile/export.js",
112
- "./dist/commands/game/ios/profile/status.js",
113
121
  "./dist/commands/game/ios/profile/create.js",
122
+ "./dist/commands/game/ios/profile/status.js",
114
123
  "./dist/commands/game/ios/profile/import.js",
115
- "./dist/commands/game/status.js",
124
+ "./dist/commands/game/create.js",
125
+ "./dist/commands/game/ship.js",
116
126
  "./dist/commands/game/wizard.js",
117
- "./dist/commands/game/list.js",
127
+ "./dist/commands/game/job/list.js",
128
+ "./dist/commands/game/job/status.js",
129
+ "./dist/commands/game/status.js",
118
130
  "./dist/commands/game/details.js",
119
- "./dist/commands/game/create.js",
120
131
  "./dist/commands/game/build/list.js",
121
132
  "./dist/commands/game/build/download.js",
122
- "./dist/commands/game/job/status.js",
123
- "./dist/commands/game/job/list.js",
124
- "./dist/commands/game/ship.js",
133
+ "./dist/commands/game/android/keyStore/export.js",
134
+ "./dist/commands/game/android/keyStore/create.js",
135
+ "./dist/commands/game/android/keyStore/status.js",
136
+ "./dist/commands/game/android/keyStore/import.js",
137
+ "./dist/commands/game/android/apiKey/export.js",
138
+ "./dist/commands/game/android/apiKey/create.js",
139
+ "./dist/commands/game/android/apiKey/status.js",
140
+ "./dist/commands/game/android/apiKey/import.js",
141
+ "./dist/commands/game/android/apiKey/invite.js",
142
+ "./dist/commands/game/android/apiKey/connect.js",
143
+ "./dist/commands/game/android/status.js",
144
+ "./dist/commands/game/android/wizard.js",
145
+ "./dist/commands/game/export.js",
146
+ "./dist/commands/internal/readme.js",
147
+ "./dist/commands/internal/fastlane.js",
125
148
  "./dist/commands/status.js",
126
149
  "./dist/commands/dashboard.js",
127
150
  "./dist/commands/login.js"
@@ -152,6 +175,15 @@
152
175
  "game": {
153
176
  "description": "Commands related to configuring a specific game"
154
177
  },
178
+ "game:android": {
179
+ "description": "Commands related to the Android platform for a specific game"
180
+ },
181
+ "game:android:apiKey": {
182
+ "description": "Commands related to they Android Service Account API Key for a specific game"
183
+ },
184
+ "game:android:keyStore": {
185
+ "description": "Commands related to the Android KeyStore for a specific game"
186
+ },
155
187
  "game:build": {
156
188
  "description": "Commands related to builds for a specific game"
157
189
  },
@@ -181,5 +213,8 @@
181
213
  "test": "mocha --forbid-only \"test/**/*.test.ts\"",
182
214
  "readme": "bin/dev.js internal readme docs/ -d 2 --notDryRun # does not overwrite existing files"
183
215
  },
184
- "types": "dist/index.d.ts"
216
+ "types": "dist/index.d.ts",
217
+ "overrides": {
218
+ "cli-spinners": "2.9.2"
219
+ }
185
220
  }
@@ -1,21 +0,0 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import { Box } from 'ink';
3
- import { QueryClientProvider } from '@tanstack/react-query';
4
- import { Q as queryClient } from './baseGameCommand-B3NbuvDu.js';
5
- import 'luxon';
6
- import '@expo/apple-utils/build/index.js';
7
- import 'crypto';
8
- import 'fs';
9
- import 'readline-sync';
10
- import 'node:readline';
11
- import 'react';
12
- import 'axios';
13
- import 'socket.io-client';
14
- import 'isomorphic-git';
15
-
16
- const App = ({ children }) => {
17
- const width = Math.min(160, process.stdout.columns || 80);
18
- return /* @__PURE__ */ jsx(QueryClientProvider, { client: queryClient, children: /* @__PURE__ */ jsx(Box, { width, flexDirection: "column", children }) });
19
- };
20
-
21
- export { App as A };
@@ -1,27 +0,0 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
2
- import React from 'react';
3
- import { Box, Text } from 'ink';
4
- import Spinner from 'ink-spinner';
5
-
6
- const RunWithSpinner = ({
7
- executeMethod,
8
- msgInProgress,
9
- msgComplete,
10
- onComplete,
11
- spinnerType
12
- }) => {
13
- const [isInProgress, setIsInProgress] = React.useState(true);
14
- React.useEffect(() => {
15
- setIsInProgress(true);
16
- executeMethod().then(() => {
17
- setIsInProgress(false);
18
- return onComplete();
19
- });
20
- }, []);
21
- return /* @__PURE__ */ jsxs(Box, { children: [
22
- /* @__PURE__ */ jsx(Text, { children: isInProgress ? msgInProgress : msgComplete }),
23
- isInProgress && /* @__PURE__ */ jsx(Spinner, { type: spinnerType })
24
- ] });
25
- };
26
-
27
- export { RunWithSpinner as R };
@@ -1,6 +0,0 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import { Text } from 'ink';
3
-
4
- const Title = ({ children, ...rest }) => /* @__PURE__ */ jsx(Text, { bold: true, ...rest, children: children.toUpperCase() });
5
-
6
- export { Title as T };
@@ -1,9 +0,0 @@
1
- const cacheKeys = {
2
- job: (props) => ["job", ...Object.values(props)],
3
- jobLogs: (props) => ["jobLogs", ...Object.values(props)],
4
- userCredentials: (props) => ["userCredentials", ...Object.values(props)],
5
- projectCredentials: (props) => ["projectCredentials", ...Object.values(props)],
6
- builds: (props) => ["builds", ...Object.values(props)]
7
- };
8
-
9
- export { cacheKeys as c };
@@ -1,41 +0,0 @@
1
- import axios from 'axios';
2
- import { useQuery } from '@tanstack/react-query';
3
- import { P as Platform, H as getShortDateTime, o as getAuthedHeaders, p as API_URL, I as castArrayObjectDates } from './baseGameCommand-B3NbuvDu.js';
4
- import { c as cacheKeys } from './cacheKeys-CShA-ZjE.js';
5
- import { g as getShortUUID, c as getPlatformName } from './index-ZHJdUrwJ.js';
6
- import { g as getJobDetailsSummary } from './useJob-Bc9fdiyP.js';
7
-
8
- async function queryBuilds({ projectId, ...pageAndSortParams }) {
9
- try {
10
- const headers = getAuthedHeaders();
11
- const url = `${API_URL}/projects/${projectId}/builds`;
12
- const response = await axios.get(url, { headers, params: pageAndSortParams });
13
- return {
14
- ...response.data,
15
- data: castArrayObjectDates(response.data.data)
16
- };
17
- } catch (error) {
18
- console.warn("queryBuilds Error", error);
19
- throw error;
20
- }
21
- }
22
- function getBuildSummary(build) {
23
- const filename = build.platform == Platform.IOS ? "output.ipa" : "output.apk";
24
- return {
25
- id: getShortUUID(build.id),
26
- ...getJobDetailsSummary(build.jobDetails),
27
- platform: getPlatformName(build.platform),
28
- jobId: getShortUUID(build.jobId),
29
- createdAt: getShortDateTime(build.createdAt),
30
- cmd: `$ shipthis game build download ${getShortUUID(build.id)} ${filename}`
31
- };
32
- }
33
- const useBuilds = (props) => {
34
- const queryResult = useQuery({
35
- queryKey: cacheKeys.builds(props),
36
- queryFn: async () => queryBuilds(props)
37
- });
38
- return queryResult;
39
- };
40
-
41
- export { getBuildSummary as g, useBuilds as u };
@@ -1,34 +0,0 @@
1
- import { useQuery } from '@tanstack/react-query';
2
- import { c as cacheKeys } from './cacheKeys-CShA-ZjE.js';
3
- import { K as JobStatus, H as getShortDateTime, L as getShortTimeDelta, M as getJob } from './baseGameCommand-B3NbuvDu.js';
4
- import { g as getShortUUID, c as getPlatformName } from './index-ZHJdUrwJ.js';
5
-
6
- function getJobDetailsSummary(jobDetails) {
7
- const semanticVersion = jobDetails?.semanticVersion || "N/A";
8
- const buildNumber = jobDetails?.buildNumber || "N/A";
9
- const gitCommit = jobDetails?.gitCommitHash ? getShortUUID(jobDetails?.gitCommitHash) : "N/A";
10
- const gitBranch = jobDetails?.gitBranch || "N/A";
11
- return {
12
- version: `${semanticVersion} (${buildNumber})`,
13
- gitInfo: `${gitCommit} (${gitBranch})`
14
- };
15
- }
16
- function getJobSummary(job, timeNow) {
17
- const inProgress = ![JobStatus.COMPLETED, JobStatus.FAILED].includes(job.status);
18
- return {
19
- id: getShortUUID(job.id),
20
- ...getJobDetailsSummary(job.details),
21
- platform: getPlatformName(job.type),
22
- status: job.status,
23
- createdAt: getShortDateTime(job.createdAt),
24
- runtime: getShortTimeDelta(job.createdAt, inProgress ? timeNow : job.updatedAt)
25
- };
26
- }
27
- const useJob = (props) => {
28
- return useQuery({
29
- queryKey: cacheKeys.job(props),
30
- queryFn: () => getJob(props.jobId, props.projectId)
31
- });
32
- };
33
-
34
- export { getJobSummary as a, getJobDetailsSummary as g, useJob as u };