shipthis 0.1.39 → 0.1.41
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 +57 -0
- package/dist/{AppleBundleIdDetails-Ck7iAjMb.js → AppleBundleIdDetails-BJC7GCx_.js} +4 -3
- package/dist/{Command-C84QiOWP.js → Command-Cj6F5B5a.js} +2 -1
- package/dist/{CommandGame-CsM9GE5Q.js → CommandGame-CuvuH-z6.js} +2 -2
- package/dist/{Create-Dx1nEKmS.js → Create-pfGYcKu4.js} +2 -1
- package/dist/{GameStatus-B4WBgoLs.js → GameStatus-ZSe-qG3y.js} +2 -1
- package/dist/{Import-BC5XgwRT.js → Import-D046HBaF.js} +3 -2
- package/dist/{JobLogTail-mBXpeWMu.js → JobLogTail-Da8GuReK.js} +3 -2
- package/dist/{JobProgress-KZ6EkMFi.js → JobProgress-DltCQpzA.js} +3 -2
- package/dist/{JobStatusTable-BYIxTt0d.js → JobStatusTable-DVJjHw97.js} +3 -2
- package/dist/{ProjectCredentialsTable-DSy1YIWX.js → ProjectCredentialsTable-BJJz7W1P.js} +2 -2
- package/dist/{UserCredentialsTable-qNByRE84.js → UserCredentialsTable-CSynIVHU.js} +2 -1
- package/dist/{baseAppleCommand-CdROzhyU.js → baseAppleCommand-Aq-Eaw_K.js} +1 -1
- package/dist/baseCommand-CTn3KGH3.js +787 -0
- package/dist/{baseGameAndroidCommand-B21zS0MN.js → baseGameAndroidCommand-DRzVMKuG.js} +2 -1
- package/dist/{index-Cv-92xRd.js → baseGameCommand-8VL7xe-O.js} +18 -755
- package/dist/commands/apiKey/create.js +6 -5
- package/dist/commands/apiKey/list.js +6 -5
- package/dist/commands/apiKey/revoke.js +6 -5
- package/dist/commands/apple/apiKey/create.js +13 -12
- package/dist/commands/apple/apiKey/delete.js +7 -6
- package/dist/commands/apple/apiKey/export.js +14 -13
- package/dist/commands/apple/apiKey/import.js +14 -13
- package/dist/commands/apple/apiKey/status.js +13 -12
- package/dist/commands/apple/certificate/create.js +13 -12
- package/dist/commands/apple/certificate/delete.js +7 -6
- package/dist/commands/apple/certificate/export.js +14 -13
- package/dist/commands/apple/certificate/import.js +14 -13
- package/dist/commands/apple/certificate/status.js +13 -12
- package/dist/commands/apple/login.js +4 -3
- package/dist/commands/apple/status.js +13 -12
- package/dist/commands/dashboard.js +9 -8
- package/dist/commands/game/android/apiKey/connect.js +11 -10
- package/dist/commands/game/android/apiKey/create.js +13 -12
- package/dist/commands/game/android/apiKey/delete.js +6 -5
- package/dist/commands/game/android/apiKey/export.js +13 -12
- package/dist/commands/game/android/apiKey/import.js +13 -12
- package/dist/commands/game/android/apiKey/invite.js +21 -20
- package/dist/commands/game/android/apiKey/policy.js +8 -7
- package/dist/commands/game/android/apiKey/status.js +13 -12
- package/dist/commands/game/android/keyStore/create.js +10 -9
- package/dist/commands/game/android/keyStore/delete.js +6 -5
- package/dist/commands/game/android/keyStore/export.js +12 -11
- package/dist/commands/game/android/keyStore/import.js +15 -14
- package/dist/commands/game/android/keyStore/status.js +15 -14
- package/dist/commands/game/android/status.js +7 -6
- package/dist/commands/game/build/download.js +6 -5
- package/dist/commands/game/build/list.js +11 -10
- package/dist/commands/game/create.js +4 -3
- package/dist/commands/game/details.js +15 -11
- package/dist/commands/game/export.js +4 -3
- package/dist/commands/game/ios/app/addTester.js +8 -7
- package/dist/commands/game/ios/app/create.js +7 -6
- package/dist/commands/game/ios/app/status.js +13 -12
- package/dist/commands/game/ios/app/sync.js +11 -10
- package/dist/commands/game/ios/profile/create.js +9 -8
- package/dist/commands/game/ios/profile/delete.js +9 -8
- package/dist/commands/game/ios/profile/export.js +12 -11
- package/dist/commands/game/ios/profile/import.js +12 -11
- package/dist/commands/game/ios/profile/status.js +13 -12
- package/dist/commands/game/ios/status.js +17 -16
- package/dist/commands/game/ios/wizard.js +7 -6
- package/dist/commands/game/job/list.js +6 -5
- package/dist/commands/game/job/status.js +11 -10
- package/dist/commands/game/list.js +6 -5
- package/dist/commands/game/ship.js +8 -7
- package/dist/commands/game/status.js +14 -13
- package/dist/commands/game/wizard.js +24 -23
- package/dist/commands/internal/fastlane.js +14 -13
- package/dist/commands/internal/readme.js +18 -17
- package/dist/commands/login.js +20 -19
- package/dist/commands/status.js +9 -8
- package/dist/commands/util/glass.js +119 -0
- package/dist/{export-BtUjg3Tl.js → export-DtATljiz.js} +1 -1
- package/dist/{import-BYSkF-tX.js → import-Dk2ywOVU.js} +1 -1
- package/dist/{index-Du6l7ZyV.js → index-BW7z-5sB.js} +1 -1
- package/dist/{index-CgGLBt2v.js → index-CuyVBHWc.js} +4 -3
- package/dist/{index-CcGRePRU.js → index-cRnjcGxV.js} +5 -4
- package/dist/{upload-LoVBuJbT.js → upload-CHaDSvvi.js} +1 -1
- package/dist/{useAppleApp-Bg0x6s97.js → useAppleApp-CR847GWc.js} +1 -1
- package/dist/{useAppleBundleId-CEOssLqN.js → useAppleBundleId-BnwPmVEu.js} +1 -1
- package/dist/{useAppleProfiles-CHf_gHdZ.js → useAppleProfiles-DY-H0420.js} +1 -1
- package/dist/{useGoogleStatus-Ch36GbVo.js → useGoogleStatus-WqPgHteE.js} +2 -1
- package/dist/{useProjectCredentials-CsQWPdyo.js → useProjectCredentials-TvlolkId.js} +2 -1
- package/dist/{useWebSocket-CWeaaLqi.js → useWebSocket-MXDbQHcu.js} +1 -1
- package/docs/README.md +1 -0
- package/docs/util/glass.md +47 -0
- package/docs/util.md +11 -0
- package/package.json +3 -1
|
@@ -1,39 +1,40 @@
|
|
|
1
1
|
import fs__default from 'node:fs';
|
|
2
|
-
import
|
|
2
|
+
import path__default from 'node:path';
|
|
3
3
|
import { Args, Flags } from '@oclif/core';
|
|
4
|
-
import {
|
|
5
|
-
import CustomHelp from '../../utils/help.js';
|
|
4
|
+
import { q as ejs } from '../../baseGameCommand-8VL7xe-O.js';
|
|
6
5
|
import 'axios';
|
|
7
6
|
import 'crypto-js';
|
|
8
7
|
import 'uuid';
|
|
8
|
+
import { B as BaseCommand } from '../../baseCommand-CTn3KGH3.js';
|
|
9
9
|
import 'luxon';
|
|
10
|
-
import '
|
|
11
|
-
import '
|
|
10
|
+
import 'react/jsx-runtime';
|
|
11
|
+
import 'ink';
|
|
12
|
+
import 'ink-spinner';
|
|
12
13
|
import 'node:crypto';
|
|
13
14
|
import 'node:readline';
|
|
14
15
|
import 'node:url';
|
|
15
16
|
import 'readline-sync';
|
|
16
17
|
import 'isomorphic-git';
|
|
17
|
-
import '
|
|
18
|
-
import 'ini';
|
|
18
|
+
import CustomHelp from '../../utils/help.js';
|
|
19
19
|
import '@tanstack/react-query';
|
|
20
20
|
import 'react';
|
|
21
21
|
import 'fast-glob';
|
|
22
22
|
import 'yazl';
|
|
23
23
|
import 'socket.io-client';
|
|
24
24
|
import 'fullscreen-ink';
|
|
25
|
-
import 'ink';
|
|
26
|
-
import 'react/jsx-runtime';
|
|
27
|
-
import 'ink-spinner';
|
|
28
25
|
import 'string-length';
|
|
29
26
|
import 'strip-ansi';
|
|
30
27
|
import 'open';
|
|
31
28
|
import '@inkjs/ui';
|
|
32
|
-
import 'fs';
|
|
33
|
-
import 'path';
|
|
34
29
|
import 'marked';
|
|
35
30
|
import 'marked-terminal';
|
|
36
31
|
import 'qrcode';
|
|
32
|
+
import 'fs';
|
|
33
|
+
import 'path';
|
|
34
|
+
import 'chalk';
|
|
35
|
+
import '@expo/apple-utils/build/index.js';
|
|
36
|
+
import 'deepmerge';
|
|
37
|
+
import 'ini';
|
|
37
38
|
|
|
38
39
|
const ROOT_TOPIC_NAME = "shipthis";
|
|
39
40
|
const ROOT_TOPIC_DESCRIPTION = "Root topic";
|
|
@@ -133,7 +134,7 @@ function getTopicTree(topics, commands, separateFileDepth) {
|
|
|
133
134
|
const includeTopicsAndCommands = currentParent.includeTopicsAndCommands || currentDepth >= separateFileDepth;
|
|
134
135
|
const newSubTopic = {
|
|
135
136
|
commands: [],
|
|
136
|
-
filePath: `${
|
|
137
|
+
filePath: `${path__default.join(...name.split(":"))}.md`,
|
|
137
138
|
includeTopicsAndCommands,
|
|
138
139
|
subTopics: [],
|
|
139
140
|
topic: topicsByName[name]
|
|
@@ -153,7 +154,7 @@ function getTopicTree(topics, commands, separateFileDepth) {
|
|
|
153
154
|
if (!subTopic) throw new Error("Could not find topic for command: " + command.id);
|
|
154
155
|
currentParent = subTopic;
|
|
155
156
|
}
|
|
156
|
-
currentParent.commands.push({ command, filePath: `${
|
|
157
|
+
currentParent.commands.push({ command, filePath: `${path__default.join(...command.id.split(":"))}.md` });
|
|
157
158
|
}
|
|
158
159
|
return topicTree;
|
|
159
160
|
}
|
|
@@ -184,13 +185,13 @@ function writeTopic(topic, outputDir, dryRun, overWrite, only) {
|
|
|
184
185
|
outputList.push(filePath2);
|
|
185
186
|
const doWrite = !exists || overWrite;
|
|
186
187
|
if (!doWrite || dryRun) return;
|
|
187
|
-
const folder =
|
|
188
|
+
const folder = path__default.dirname(filePath2);
|
|
188
189
|
fs__default.mkdirSync(folder, { recursive: true });
|
|
189
190
|
fs__default.writeFileSync(filePath2, rendered);
|
|
190
191
|
};
|
|
191
192
|
const skipFile = (filePath2) => only && !filePath2.match(only);
|
|
192
193
|
const writeOutput = { created: [], overwritten: [] };
|
|
193
|
-
const filePath =
|
|
194
|
+
const filePath = path__default.join(outputDir, topic.filePath);
|
|
194
195
|
if (!skipFile(filePath)) makeFolderAndSave(filePath, topic.rendered);
|
|
195
196
|
for (const subTopic of topic.subTopics) {
|
|
196
197
|
const subWriteOutput = writeTopic(subTopic, outputDir, dryRun, overWrite, only);
|
|
@@ -199,7 +200,7 @@ function writeTopic(topic, outputDir, dryRun, overWrite, only) {
|
|
|
199
200
|
}
|
|
200
201
|
for (const command of topic.commands) {
|
|
201
202
|
if (!command.renderedForFile) throw new Error(`Command ${command.command.id} has not been rendered`);
|
|
202
|
-
const filePath2 =
|
|
203
|
+
const filePath2 = path__default.join(outputDir, command.filePath);
|
|
203
204
|
if (!skipFile(filePath2)) makeFolderAndSave(filePath2, command.renderedForFile);
|
|
204
205
|
}
|
|
205
206
|
return writeOutput;
|
package/dist/commands/login.js
CHANGED
|
@@ -1,12 +1,29 @@
|
|
|
1
1
|
import { Flags } from '@oclif/core';
|
|
2
2
|
import axios from 'axios';
|
|
3
|
-
import { W as WEB_URL,
|
|
3
|
+
import { W as WEB_URL, B as BaseCommand, Z as acceptTerms, o as API_URL, _ as setAuthToken } from '../baseCommand-CTn3KGH3.js';
|
|
4
|
+
import 'react/jsx-runtime';
|
|
5
|
+
import 'ink';
|
|
6
|
+
import 'ink-spinner';
|
|
7
|
+
import { b as getInput } from '../baseGameCommand-8VL7xe-O.js';
|
|
8
|
+
import 'react';
|
|
9
|
+
import '@tanstack/react-query';
|
|
10
|
+
import 'luxon';
|
|
4
11
|
import 'node:fs';
|
|
5
|
-
import '
|
|
12
|
+
import 'fast-glob';
|
|
6
13
|
import 'uuid';
|
|
7
|
-
import '
|
|
14
|
+
import 'yazl';
|
|
15
|
+
import 'socket.io-client';
|
|
16
|
+
import 'fullscreen-ink';
|
|
17
|
+
import 'string-length';
|
|
18
|
+
import 'strip-ansi';
|
|
19
|
+
import 'open';
|
|
20
|
+
import '@inkjs/ui';
|
|
8
21
|
import 'node:path';
|
|
22
|
+
import 'marked';
|
|
23
|
+
import 'marked-terminal';
|
|
24
|
+
import 'qrcode';
|
|
9
25
|
import 'chalk';
|
|
26
|
+
import 'crypto-js';
|
|
10
27
|
import '@expo/apple-utils/build/index.js';
|
|
11
28
|
import 'node:crypto';
|
|
12
29
|
import 'node:readline';
|
|
@@ -15,24 +32,8 @@ import 'readline-sync';
|
|
|
15
32
|
import 'isomorphic-git';
|
|
16
33
|
import 'deepmerge';
|
|
17
34
|
import 'ini';
|
|
18
|
-
import '@tanstack/react-query';
|
|
19
|
-
import 'react';
|
|
20
|
-
import 'fast-glob';
|
|
21
|
-
import 'yazl';
|
|
22
|
-
import 'socket.io-client';
|
|
23
|
-
import 'fullscreen-ink';
|
|
24
|
-
import 'ink';
|
|
25
|
-
import 'react/jsx-runtime';
|
|
26
|
-
import 'ink-spinner';
|
|
27
|
-
import 'string-length';
|
|
28
|
-
import 'strip-ansi';
|
|
29
|
-
import 'open';
|
|
30
|
-
import '@inkjs/ui';
|
|
31
35
|
import 'fs';
|
|
32
36
|
import 'path';
|
|
33
|
-
import 'marked';
|
|
34
|
-
import 'marked-terminal';
|
|
35
|
-
import 'qrcode';
|
|
36
37
|
|
|
37
38
|
const TERMS_URL = new URL("/terms", WEB_URL).href;
|
|
38
39
|
const PRIVACY_URL = new URL("/privacy", WEB_URL).href;
|
package/dist/commands/status.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
2
|
import { render } from 'ink';
|
|
3
|
-
import
|
|
3
|
+
import 'node:fs';
|
|
4
|
+
import 'axios';
|
|
5
|
+
import 'crypto-js';
|
|
6
|
+
import 'uuid';
|
|
7
|
+
import { B as BaseCommand, j as isCWDGodotGame } from '../baseCommand-CTn3KGH3.js';
|
|
8
|
+
import 'luxon';
|
|
4
9
|
import 'ink-spinner';
|
|
5
10
|
import 'node:crypto';
|
|
6
|
-
import 'node:fs';
|
|
7
11
|
import 'node:path';
|
|
8
12
|
import 'node:readline';
|
|
9
13
|
import 'node:url';
|
|
10
14
|
import 'readline-sync';
|
|
11
|
-
import 'luxon';
|
|
12
|
-
import 'axios';
|
|
13
15
|
import { i as isCWDGitRepo } from '../git-BpsfNFZ_.js';
|
|
14
16
|
import '@oclif/core';
|
|
15
17
|
import '@tanstack/react-query';
|
|
16
18
|
import 'react';
|
|
17
|
-
import 'crypto-js';
|
|
18
|
-
import 'uuid';
|
|
19
19
|
import 'fast-glob';
|
|
20
20
|
import 'yazl';
|
|
21
21
|
import 'socket.io-client';
|
|
@@ -25,19 +25,20 @@ import 'strip-ansi';
|
|
|
25
25
|
import { S as StatusTable } from '../StatusTable-DzRWcMr4.js';
|
|
26
26
|
import 'open';
|
|
27
27
|
import '@inkjs/ui';
|
|
28
|
+
import '../baseGameCommand-8VL7xe-O.js';
|
|
28
29
|
import 'marked';
|
|
29
30
|
import 'marked-terminal';
|
|
30
31
|
import { N as NextSteps } from '../NextSteps-DbJHmscQ.js';
|
|
31
32
|
import 'qrcode';
|
|
32
|
-
import { C as Command } from '../Command-
|
|
33
|
+
import { C as Command } from '../Command-Cj6F5B5a.js';
|
|
33
34
|
import chalk from 'chalk';
|
|
34
35
|
import '@expo/apple-utils/build/index.js';
|
|
35
36
|
import 'isomorphic-git';
|
|
36
37
|
import 'deepmerge';
|
|
37
38
|
import 'ini';
|
|
39
|
+
import '../Title-BCQtayg6.js';
|
|
38
40
|
import 'fs';
|
|
39
41
|
import 'path';
|
|
40
|
-
import '../Title-BCQtayg6.js';
|
|
41
42
|
|
|
42
43
|
class Status extends BaseCommand {
|
|
43
44
|
static args = {};
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { B as BaseCommand } from '../../baseCommand-CTn3KGH3.js';
|
|
2
|
+
import { Flags, Args } from '@oclif/core';
|
|
3
|
+
import * as fs from 'node:fs';
|
|
4
|
+
import * as path from 'node:path';
|
|
5
|
+
import xcode from 'xcode';
|
|
6
|
+
import 'chalk';
|
|
7
|
+
import 'axios';
|
|
8
|
+
import 'crypto-js';
|
|
9
|
+
import 'uuid';
|
|
10
|
+
import 'luxon';
|
|
11
|
+
import '@expo/apple-utils/build/index.js';
|
|
12
|
+
import 'node:crypto';
|
|
13
|
+
import 'node:readline';
|
|
14
|
+
import 'node:url';
|
|
15
|
+
import 'readline-sync';
|
|
16
|
+
import 'isomorphic-git';
|
|
17
|
+
import 'deepmerge';
|
|
18
|
+
import 'ini';
|
|
19
|
+
import '@tanstack/react-query';
|
|
20
|
+
import 'react';
|
|
21
|
+
import 'fast-glob';
|
|
22
|
+
import 'yazl';
|
|
23
|
+
import 'socket.io-client';
|
|
24
|
+
import 'fullscreen-ink';
|
|
25
|
+
import 'ink';
|
|
26
|
+
|
|
27
|
+
async function applyLiquidGlassIcon(opts) {
|
|
28
|
+
const { projectDir, iconDir, verbose } = opts;
|
|
29
|
+
const info = (msg) => {
|
|
30
|
+
if (!verbose) return;
|
|
31
|
+
console.log(msg);
|
|
32
|
+
};
|
|
33
|
+
const warn = (msg) => console.warn(`Warning: ${msg}`);
|
|
34
|
+
info(`Applying Liquid Glass icon from: ${iconDir}`);
|
|
35
|
+
if (!fs.existsSync(projectDir)) {
|
|
36
|
+
throw new Error(`projectDir not found: ${projectDir}`);
|
|
37
|
+
}
|
|
38
|
+
const pbxprojPath = path.join(projectDir, "project.pbxproj");
|
|
39
|
+
if (!fs.existsSync(pbxprojPath)) {
|
|
40
|
+
throw new Error(`project.pbxproj not found at: ${pbxprojPath}`);
|
|
41
|
+
}
|
|
42
|
+
if (!fs.existsSync(iconDir)) {
|
|
43
|
+
throw new Error(`Icon directory not found: ${iconDir}`);
|
|
44
|
+
}
|
|
45
|
+
const iconFolderName = path.basename(iconDir);
|
|
46
|
+
const appIconName = iconFolderName.replace(/\.icon$/i, "");
|
|
47
|
+
info(`Detected .icon folder: ${iconFolderName}`);
|
|
48
|
+
info(`Derived app icon name: ${appIconName}`);
|
|
49
|
+
const projectRoot = path.dirname(projectDir);
|
|
50
|
+
const destIconDir = path.join(projectRoot, iconFolderName);
|
|
51
|
+
if (!fs.existsSync(destIconDir)) {
|
|
52
|
+
info(`Copying .icon folder into project root: ${destIconDir}`);
|
|
53
|
+
await fs.promises.cp(iconDir, destIconDir, {
|
|
54
|
+
recursive: true
|
|
55
|
+
});
|
|
56
|
+
} else {
|
|
57
|
+
info(`Icon folder already exists in project root, skipping copy.`);
|
|
58
|
+
}
|
|
59
|
+
const project = xcode.project(pbxprojPath);
|
|
60
|
+
project.parseSync();
|
|
61
|
+
info(`Adding folder reference to Copy Bundle Resources: ${iconFolderName}`);
|
|
62
|
+
const firstProject = project.getFirstProject();
|
|
63
|
+
const mainGroupId = firstProject.firstProject.mainGroup;
|
|
64
|
+
const mainGroup = project.getPBXGroupByKey(mainGroupId);
|
|
65
|
+
const fileRef = project.addResourceFile(
|
|
66
|
+
iconFolderName,
|
|
67
|
+
{ lastKnownFileType: "folder.iconcomposer.icon" },
|
|
68
|
+
mainGroup.name
|
|
69
|
+
);
|
|
70
|
+
if (fileRef) {
|
|
71
|
+
project.addToPbxResourcesBuildPhase(fileRef);
|
|
72
|
+
} else {
|
|
73
|
+
warn(`Folder reference may already exist in project: ${iconFolderName}`);
|
|
74
|
+
}
|
|
75
|
+
const configs = project.pbxXCBuildConfigurationSection();
|
|
76
|
+
let modified = 0;
|
|
77
|
+
info(`Updating build settings for app icon: ${appIconName}`);
|
|
78
|
+
for (const key in configs) {
|
|
79
|
+
const cfg = configs[key];
|
|
80
|
+
if (!cfg || typeof cfg !== "object" || !cfg.buildSettings) continue;
|
|
81
|
+
cfg.buildSettings["ASSETCATALOG_COMPILER_APPICON_NAME"] = appIconName;
|
|
82
|
+
cfg.buildSettings["ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS"] = "YES";
|
|
83
|
+
modified++;
|
|
84
|
+
}
|
|
85
|
+
info(`Modified ${modified} build configurations`);
|
|
86
|
+
info(`Writing updated project to ${pbxprojPath}`);
|
|
87
|
+
fs.writeFileSync(pbxprojPath, project.writeSync());
|
|
88
|
+
info(`Liquid Glass icon successfully applied.`);
|
|
89
|
+
}
|
|
90
|
+
class InternalGlass extends BaseCommand {
|
|
91
|
+
static description = "Apply a Liquid Glass .icon folder to a local Xcode project";
|
|
92
|
+
static flags = {
|
|
93
|
+
verbose: Flags.boolean({
|
|
94
|
+
default: false,
|
|
95
|
+
description: "Enable verbose logging"
|
|
96
|
+
})
|
|
97
|
+
};
|
|
98
|
+
static args = {
|
|
99
|
+
project: Args.string({
|
|
100
|
+
description: "Path to the .xcodeproj directory",
|
|
101
|
+
required: true
|
|
102
|
+
}),
|
|
103
|
+
icon: Args.string({
|
|
104
|
+
description: "Path to the .icon folder",
|
|
105
|
+
required: true
|
|
106
|
+
})
|
|
107
|
+
};
|
|
108
|
+
async run() {
|
|
109
|
+
const { args, flags } = await this.parse(InternalGlass);
|
|
110
|
+
await applyLiquidGlassIcon({
|
|
111
|
+
projectDir: args.project,
|
|
112
|
+
iconDir: args.icon,
|
|
113
|
+
verbose: flags.verbose
|
|
114
|
+
});
|
|
115
|
+
this.log("Liquid Glass icon applied.");
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export { applyLiquidGlassIcon, InternalGlass as default };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as fs from 'node:fs';
|
|
2
2
|
import axios from 'axios';
|
|
3
|
-
import {
|
|
3
|
+
import { o as API_URL, p as getAuthedHeaders } from './baseCommand-CTn3KGH3.js';
|
|
4
4
|
|
|
5
5
|
async function exportCredential({ credentialId, projectId, zipPath }) {
|
|
6
6
|
const headers = getAuthedHeaders();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { promises } from 'node:fs';
|
|
2
2
|
import axios from 'axios';
|
|
3
|
-
import {
|
|
3
|
+
import { o as API_URL, p as getAuthedHeaders } from './baseCommand-CTn3KGH3.js';
|
|
4
4
|
|
|
5
5
|
async function getNewImportTicket(projectId) {
|
|
6
6
|
const url = projectId ? `${API_URL}/projects/${projectId}/credentials/import/url` : `${API_URL}/credentials/import/url`;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
|
-
import {
|
|
2
|
+
import { o as API_URL, p as getAuthedHeaders, F as castArrayObjectDates } from './baseCommand-CTn3KGH3.js';
|
|
3
3
|
import 'node:fs';
|
|
4
4
|
|
|
5
5
|
async function getUserCredentials(pageSize = 100) {
|
|
@@ -12,7 +12,7 @@ import 'readline-sync';
|
|
|
12
12
|
import 'luxon';
|
|
13
13
|
import 'axios';
|
|
14
14
|
import 'isomorphic-git';
|
|
15
|
-
import {
|
|
15
|
+
import { a3 as getShortAuthRequiredUrl, a5 as getGoogleAuthUrl, W as WEB_URL } from './baseCommand-CTn3KGH3.js';
|
|
16
16
|
import '@oclif/core';
|
|
17
17
|
import '@tanstack/react-query';
|
|
18
18
|
import 'crypto-js';
|
|
@@ -20,9 +20,10 @@ import 'uuid';
|
|
|
20
20
|
import 'fast-glob';
|
|
21
21
|
import 'yazl';
|
|
22
22
|
import 'socket.io-client';
|
|
23
|
-
import { u as useGoogleStatus } from './useGoogleStatus-
|
|
24
|
-
import { u as useWebSocket } from './useWebSocket-
|
|
23
|
+
import { u as useGoogleStatus } from './useGoogleStatus-WqPgHteE.js';
|
|
24
|
+
import { u as useWebSocket } from './useWebSocket-MXDbQHcu.js';
|
|
25
25
|
import 'fullscreen-ink';
|
|
26
|
+
import { G as GameContext, w as useSafeInput, M as Markdown } from './baseGameCommand-8VL7xe-O.js';
|
|
26
27
|
import 'string-length';
|
|
27
28
|
import 'strip-ansi';
|
|
28
29
|
import '@inkjs/ui';
|
|
@@ -8,20 +8,21 @@ import 'node:path';
|
|
|
8
8
|
import 'node:readline';
|
|
9
9
|
import 'node:url';
|
|
10
10
|
import 'readline-sync';
|
|
11
|
-
import {
|
|
11
|
+
import { p as getAuthedHeaders, o as API_URL, a4 as castObjectDates, H as queryClient, Q as revokePolicy, O as enforcePolicy, P as Platform, C as CredentialsType, M as getGoogleStatus, c as getShortDate } from './baseCommand-CTn3KGH3.js';
|
|
12
12
|
import axios from 'axios';
|
|
13
13
|
import 'isomorphic-git';
|
|
14
14
|
import '@oclif/core';
|
|
15
15
|
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query';
|
|
16
16
|
import 'luxon';
|
|
17
|
+
import { k as cacheKeys, G as GameContext, w as useSafeInput, M as Markdown } from './baseGameCommand-8VL7xe-O.js';
|
|
17
18
|
import 'fast-glob';
|
|
18
19
|
import 'uuid';
|
|
19
20
|
import 'yazl';
|
|
20
21
|
import 'socket.io-client';
|
|
21
22
|
import 'fullscreen-ink';
|
|
22
|
-
import { u as useWebSocket } from './useWebSocket-
|
|
23
|
-
import { u as useProjectCredentials } from './useProjectCredentials-
|
|
24
|
-
import { u as useGoogleStatus } from './useGoogleStatus-
|
|
23
|
+
import { u as useWebSocket } from './useWebSocket-MXDbQHcu.js';
|
|
24
|
+
import { u as useProjectCredentials } from './useProjectCredentials-TvlolkId.js';
|
|
25
|
+
import { u as useGoogleStatus } from './useGoogleStatus-WqPgHteE.js';
|
|
25
26
|
import 'crypto-js';
|
|
26
27
|
import 'string-length';
|
|
27
28
|
import 'strip-ansi';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
|
-
import {
|
|
2
|
+
import { o as API_URL, p as getAuthedHeaders } from './baseCommand-CTn3KGH3.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 { e as BundleId, q as getGodotProjectCapabilities, P as Platform, G as GODOT_CAPABILITIES, r as CapabilityType } from './baseCommand-CTn3KGH3.js';
|
|
3
3
|
|
|
4
4
|
async function getBundleIdCapabilities(bundleId) {
|
|
5
5
|
const current = await bundleId.getBundleIdCapabilitiesAsync();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useQuery } from '@tanstack/react-query';
|
|
2
2
|
import { DateTime } from 'luxon';
|
|
3
|
-
import {
|
|
3
|
+
import { c as getShortDate, m as Profile, n as ProfileType } from './baseCommand-CTn3KGH3.js';
|
|
4
4
|
import 'node:crypto';
|
|
5
5
|
import 'node:fs';
|
|
6
6
|
import 'node:path';
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { useQuery } from '@tanstack/react-query';
|
|
2
|
-
import {
|
|
2
|
+
import { M as getGoogleStatus } from './baseCommand-CTn3KGH3.js';
|
|
3
|
+
import { k as cacheKeys } from './baseGameCommand-8VL7xe-O.js';
|
|
3
4
|
|
|
4
5
|
const useGoogleStatus = () => useQuery({
|
|
5
6
|
queryFn: getGoogleStatus,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { useQuery } from '@tanstack/react-query';
|
|
2
2
|
import axios from 'axios';
|
|
3
|
-
import {
|
|
3
|
+
import { c as getShortDate, p as getAuthedHeaders, o as API_URL, F as castArrayObjectDates } from './baseCommand-CTn3KGH3.js';
|
|
4
|
+
import { k as cacheKeys, g as getShortUUID } from './baseGameCommand-8VL7xe-O.js';
|
|
4
5
|
|
|
5
6
|
async function queryProjectCredentials({
|
|
6
7
|
projectId,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useEffect } from 'react';
|
|
2
2
|
import { io } from 'socket.io-client';
|
|
3
|
-
import {
|
|
3
|
+
import { I as WS_URL, K as getAuthToken } from './baseCommand-CTn3KGH3.js';
|
|
4
4
|
|
|
5
5
|
function useWebSocket(listeners = []) {
|
|
6
6
|
const log = () => {
|
package/docs/README.md
CHANGED
|
@@ -11,6 +11,7 @@ Begin with our [Quickstart Guide](https://shipth.is/docs/guides/quick-start).
|
|
|
11
11
|
- [apiKey](https://shipth.is/docs/reference/apiKey) - Commands that relate to ShipThis API keys
|
|
12
12
|
- [apple](https://shipth.is/docs/reference/apple) - Commands that relate to linking your ShipThis account with your Apple Developer Account
|
|
13
13
|
- [game](https://shipth.is/docs/reference/game) - Commands that relate to configuring the specific game in the current working directory
|
|
14
|
+
- [util](https://shipth.is/docs/reference/util) - Utility commands that do not require login
|
|
14
15
|
|
|
15
16
|
## Commands
|
|
16
17
|
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Command: `util glass`
|
|
2
|
+
|
|
3
|
+
## Description
|
|
4
|
+
|
|
5
|
+
Applies a Liquid Glass `.icon` folder to a local Xcode project.
|
|
6
|
+
|
|
7
|
+
This updates the project's resources to include the specified `.icon` which Xcode will use as the app icon at build time.
|
|
8
|
+
Useful when preparing an iOS export created by Godot, when you want to apply a Liquid Glass icon locally before building.
|
|
9
|
+
|
|
10
|
+
:::note
|
|
11
|
+
Liquid Glass icons are bundles in the `.icon` format.
|
|
12
|
+
They look like a single file in Finder, but are actually directories containing all icon variants.
|
|
13
|
+
:::
|
|
14
|
+
|
|
15
|
+
This command works locally and does **not** require authentication.
|
|
16
|
+
|
|
17
|
+
## Arguments
|
|
18
|
+
|
|
19
|
+
- **`PROJECT`** - Path to the `.xcodeproj` directory you want to modify.
|
|
20
|
+
- **`ICON`** - Path to the `.icon` folder (e.g. `AppIcon.icon`).
|
|
21
|
+
|
|
22
|
+
## Example
|
|
23
|
+
|
|
24
|
+
Apply `MyIcon.icon` to an exported Xcode project:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
shipthis util glass ios/output.xcodeproj MyIcon.icon
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
This will update the project configuration so that Xcode will use `MyIcon.icon` as the icon.
|
|
31
|
+
|
|
32
|
+
## Help Output
|
|
33
|
+
|
|
34
|
+
```help
|
|
35
|
+
USAGE
|
|
36
|
+
$ shipthis util glass PROJECT ICON [--verbose]
|
|
37
|
+
|
|
38
|
+
ARGUMENTS
|
|
39
|
+
PROJECT Path to the .xcodeproj directory
|
|
40
|
+
ICON Path to the .icon folder
|
|
41
|
+
|
|
42
|
+
FLAGS
|
|
43
|
+
--verbose Enable verbose logging
|
|
44
|
+
|
|
45
|
+
DESCRIPTION
|
|
46
|
+
Apply a Liquid Glass .icon folder to a local Xcode project
|
|
47
|
+
```
|
package/docs/util.md
ADDED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "shipthis",
|
|
3
3
|
"description": "ShipThis manages building and uploading your Godot games to the App Store and Google Play.",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.41",
|
|
5
5
|
"author": "Hello Invent Ltd",
|
|
6
6
|
"bin": {
|
|
7
7
|
"shipthis": "./bin/run.js"
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
"tough-cookie": "^5.0.0",
|
|
45
45
|
"tsc-alias": "^1.8.10",
|
|
46
46
|
"uuid": "^10.0.0",
|
|
47
|
+
"xcode": "^3.0.2-nightly.20251120002524064.sha.c491d3a2",
|
|
47
48
|
"yazl": "^2.5.1"
|
|
48
49
|
},
|
|
49
50
|
"devDependencies": {
|
|
@@ -106,6 +107,7 @@
|
|
|
106
107
|
"type": "module",
|
|
107
108
|
"exports": [
|
|
108
109
|
"./dist/utils/help.js",
|
|
110
|
+
"./dist/commands/util/glass.js",
|
|
109
111
|
"./dist/commands/apple/apiKey/export.js",
|
|
110
112
|
"./dist/commands/apple/apiKey/create.js",
|
|
111
113
|
"./dist/commands/apple/apiKey/status.js",
|