xcodebuild-axi 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/CHANGELOG.md +35 -0
- package/LICENSE +21 -0
- package/README.md +304 -0
- package/dist/bin/xcodebuild-axi.d.ts +2 -0
- package/dist/bin/xcodebuild-axi.js +8 -0
- package/dist/bin/xcodebuild-axi.js.map +1 -0
- package/dist/src/action.d.ts +68 -0
- package/dist/src/action.js +373 -0
- package/dist/src/action.js.map +1 -0
- package/dist/src/archive.d.ts +33 -0
- package/dist/src/archive.js +77 -0
- package/dist/src/archive.js.map +1 -0
- package/dist/src/args.d.ts +23 -0
- package/dist/src/args.js +123 -0
- package/dist/src/args.js.map +1 -0
- package/dist/src/auth.d.ts +11 -0
- package/dist/src/auth.js +51 -0
- package/dist/src/auth.js.map +1 -0
- package/dist/src/cli.d.ts +20 -0
- package/dist/src/cli.js +132 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/commands/analyze.d.ts +2 -0
- package/dist/src/commands/analyze.js +32 -0
- package/dist/src/commands/analyze.js.map +1 -0
- package/dist/src/commands/archive.d.ts +2 -0
- package/dist/src/commands/archive.js +63 -0
- package/dist/src/commands/archive.js.map +1 -0
- package/dist/src/commands/build.d.ts +2 -0
- package/dist/src/commands/build.js +60 -0
- package/dist/src/commands/build.js.map +1 -0
- package/dist/src/commands/clean.d.ts +2 -0
- package/dist/src/commands/clean.js +39 -0
- package/dist/src/commands/clean.js.map +1 -0
- package/dist/src/commands/coverage.d.ts +2 -0
- package/dist/src/commands/coverage.js +111 -0
- package/dist/src/commands/coverage.js.map +1 -0
- package/dist/src/commands/destinations.d.ts +2 -0
- package/dist/src/commands/destinations.js +56 -0
- package/dist/src/commands/destinations.js.map +1 -0
- package/dist/src/commands/export.d.ts +2 -0
- package/dist/src/commands/export.js +170 -0
- package/dist/src/commands/export.js.map +1 -0
- package/dist/src/commands/find.d.ts +2 -0
- package/dist/src/commands/find.js +70 -0
- package/dist/src/commands/find.js.map +1 -0
- package/dist/src/commands/home.d.ts +9 -0
- package/dist/src/commands/home.js +97 -0
- package/dist/src/commands/home.js.map +1 -0
- package/dist/src/commands/info.d.ts +2 -0
- package/dist/src/commands/info.js +95 -0
- package/dist/src/commands/info.js.map +1 -0
- package/dist/src/commands/localize.d.ts +2 -0
- package/dist/src/commands/localize.js +121 -0
- package/dist/src/commands/localize.js.map +1 -0
- package/dist/src/commands/migrate.d.ts +8 -0
- package/dist/src/commands/migrate.js +177 -0
- package/dist/src/commands/migrate.js.map +1 -0
- package/dist/src/commands/packages.d.ts +2 -0
- package/dist/src/commands/packages.js +108 -0
- package/dist/src/commands/packages.js.map +1 -0
- package/dist/src/commands/platforms.d.ts +2 -0
- package/dist/src/commands/platforms.js +379 -0
- package/dist/src/commands/platforms.js.map +1 -0
- package/dist/src/commands/result.d.ts +2 -0
- package/dist/src/commands/result.js +100 -0
- package/dist/src/commands/result.js.map +1 -0
- package/dist/src/commands/schemes.d.ts +2 -0
- package/dist/src/commands/schemes.js +39 -0
- package/dist/src/commands/schemes.js.map +1 -0
- package/dist/src/commands/settings.d.ts +2 -0
- package/dist/src/commands/settings.js +191 -0
- package/dist/src/commands/settings.js.map +1 -0
- package/dist/src/commands/setup.d.ts +2 -0
- package/dist/src/commands/setup.js +84 -0
- package/dist/src/commands/setup.js.map +1 -0
- package/dist/src/commands/sim.d.ts +2 -0
- package/dist/src/commands/sim.js +187 -0
- package/dist/src/commands/sim.js.map +1 -0
- package/dist/src/commands/test.d.ts +2 -0
- package/dist/src/commands/test.js +317 -0
- package/dist/src/commands/test.js.map +1 -0
- package/dist/src/commands/testplans.d.ts +8 -0
- package/dist/src/commands/testplans.js +75 -0
- package/dist/src/commands/testplans.js.map +1 -0
- package/dist/src/commands/tests.d.ts +13 -0
- package/dist/src/commands/tests.js +154 -0
- package/dist/src/commands/tests.js.map +1 -0
- package/dist/src/commands/xcframework.d.ts +2 -0
- package/dist/src/commands/xcframework.js +77 -0
- package/dist/src/commands/xcframework.js.map +1 -0
- package/dist/src/context.d.ts +23 -0
- package/dist/src/context.js +72 -0
- package/dist/src/context.js.map +1 -0
- package/dist/src/destination.d.ts +50 -0
- package/dist/src/destination.js +174 -0
- package/dist/src/destination.js.map +1 -0
- package/dist/src/errors.d.ts +6 -0
- package/dist/src/errors.js +55 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/packages.d.ts +31 -0
- package/dist/src/packages.js +117 -0
- package/dist/src/packages.js.map +1 -0
- package/dist/src/report.d.ts +20 -0
- package/dist/src/report.js +39 -0
- package/dist/src/report.js.map +1 -0
- package/dist/src/scheme.d.ts +22 -0
- package/dist/src/scheme.js +66 -0
- package/dist/src/scheme.js.map +1 -0
- package/dist/src/simctl.d.ts +33 -0
- package/dist/src/simctl.js +85 -0
- package/dist/src/simctl.js.map +1 -0
- package/dist/src/surface.d.ts +55 -0
- package/dist/src/surface.js +350 -0
- package/dist/src/surface.js.map +1 -0
- package/dist/src/toon.d.ts +34 -0
- package/dist/src/toon.js +79 -0
- package/dist/src/toon.js.map +1 -0
- package/dist/src/version.d.ts +1 -0
- package/dist/src/version.js +24 -0
- package/dist/src/version.js.map +1 -0
- package/dist/src/xccov.d.ts +25 -0
- package/dist/src/xccov.js +78 -0
- package/dist/src/xccov.js.map +1 -0
- package/dist/src/xcodebuild.d.ts +65 -0
- package/dist/src/xcodebuild.js +163 -0
- package/dist/src/xcodebuild.js.map +1 -0
- package/dist/src/xcresult.d.ts +96 -0
- package/dist/src/xcresult.js +156 -0
- package/dist/src/xcresult.js.map +1 -0
- package/package.json +75 -0
- package/skills/xcodebuild-axi/SKILL.md +64 -0
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { resolve } from "node:path";
|
|
3
|
+
import { AxiError } from "../errors.js";
|
|
4
|
+
import { simctl } from "../simctl.js";
|
|
5
|
+
import { globalArtifactDir, runBuild, runMetadata, stripPreamble, } from "../xcodebuild.js";
|
|
6
|
+
import { duration, renderFields, renderHelp, renderList, renderOutput, tildePath, } from "../toon.js";
|
|
7
|
+
import { getFlag, hasFlag, positionals, rejectUnknownFlags } from "../args.js";
|
|
8
|
+
export const PLATFORMS_HELP = `usage: xcodebuild-axi platforms [subcommand] [flags]
|
|
9
|
+
Installed simulator runtimes, and the toolchain downloads that add more.
|
|
10
|
+
subcommands[7]:
|
|
11
|
+
(none) list the installed runtimes
|
|
12
|
+
download <platform> iOS, watchOS, tvOS, visionOS, or --all
|
|
13
|
+
import <path.dmg> install a runtime from a downloaded disk image
|
|
14
|
+
component <op> <name> show, download, import, or delete a component
|
|
15
|
+
device-support prepare symbols for a physical device
|
|
16
|
+
first-launch install bundled packages and accept the license
|
|
17
|
+
license report whether the Xcode license has been accepted
|
|
18
|
+
flags[11]:
|
|
19
|
+
--all with download: every platform Xcode offers
|
|
20
|
+
--export-path <path> download to this directory instead of installing
|
|
21
|
+
--build-version <v> a specific OS or asset build to fetch
|
|
22
|
+
--arch-variant <v> universal or arm64
|
|
23
|
+
--import-path <path> with \`component import\`: the bundle to install
|
|
24
|
+
--platform <name> with device-support: iOS, macOS, and so on
|
|
25
|
+
--os-version <v> with device-support: e.g. 26.0
|
|
26
|
+
--model-code <code> with device-support: e.g. iPhone16,1
|
|
27
|
+
--architecture <arch> with device-support: e.g. arm64e
|
|
28
|
+
--status with first-launch: report whether it is needed, and stop
|
|
29
|
+
--check-updates with first-launch: also check for newer components
|
|
30
|
+
note:
|
|
31
|
+
Downloads are multi-gigabyte and stream to a log rather than to stdout; the
|
|
32
|
+
log path is printed either way. Known component: MetalToolchain.
|
|
33
|
+
exit:
|
|
34
|
+
0 succeeded, 1 the download or install failed, 2 usage error
|
|
35
|
+
examples:
|
|
36
|
+
xcodebuild-axi platforms
|
|
37
|
+
xcodebuild-axi platforms download iOS
|
|
38
|
+
xcodebuild-axi platforms component show MetalToolchain
|
|
39
|
+
xcodebuild-axi platforms device-support --platform iOS --os-version 26.0
|
|
40
|
+
xcodebuild-axi platforms license
|
|
41
|
+
`;
|
|
42
|
+
const FLAGS = [
|
|
43
|
+
"--all",
|
|
44
|
+
"--export-path",
|
|
45
|
+
"--build-version",
|
|
46
|
+
"--arch-variant",
|
|
47
|
+
"--import-path",
|
|
48
|
+
"--platform",
|
|
49
|
+
"--os-version",
|
|
50
|
+
"--model-code",
|
|
51
|
+
"--architecture",
|
|
52
|
+
"--check-updates",
|
|
53
|
+
"--status",
|
|
54
|
+
];
|
|
55
|
+
const VALUE_FLAGS = [
|
|
56
|
+
"--export-path",
|
|
57
|
+
"--build-version",
|
|
58
|
+
"--arch-variant",
|
|
59
|
+
"--import-path",
|
|
60
|
+
"--platform",
|
|
61
|
+
"--os-version",
|
|
62
|
+
"--model-code",
|
|
63
|
+
"--architecture",
|
|
64
|
+
];
|
|
65
|
+
const PLATFORMS = ["iOS", "watchOS", "tvOS", "visionOS"];
|
|
66
|
+
const COMPONENT_OPS = ["show", "download", "import", "delete"];
|
|
67
|
+
export async function platformsCommand(args) {
|
|
68
|
+
rejectUnknownFlags(args, "platforms", FLAGS, VALUE_FLAGS);
|
|
69
|
+
const [subcommand, ...rest] = positionals(args, VALUE_FLAGS);
|
|
70
|
+
switch (subcommand) {
|
|
71
|
+
case undefined:
|
|
72
|
+
return listInstalled();
|
|
73
|
+
case "download":
|
|
74
|
+
return download(args, rest[0]);
|
|
75
|
+
case "import":
|
|
76
|
+
return importPlatform(args, rest[0]);
|
|
77
|
+
case "component":
|
|
78
|
+
return component(args, rest[0], rest[1]);
|
|
79
|
+
case "device-support":
|
|
80
|
+
return deviceSupport(args);
|
|
81
|
+
case "first-launch":
|
|
82
|
+
return firstLaunch(args);
|
|
83
|
+
case "license":
|
|
84
|
+
return license();
|
|
85
|
+
default:
|
|
86
|
+
throw new AxiError(`Unknown platforms subcommand '${subcommand}'`, "VALIDATION_ERROR", [
|
|
87
|
+
"subcommands: download, import, component, device-support, first-launch",
|
|
88
|
+
]);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
async function listInstalled() {
|
|
92
|
+
const { stdout, exitCode } = await simctl(["list", "runtimes", "-j"]);
|
|
93
|
+
if (exitCode !== 0) {
|
|
94
|
+
throw new AxiError("Could not read the installed runtimes", "UNKNOWN", [
|
|
95
|
+
"Run `xcodebuild-axi platforms first-launch` if Xcode has never been opened",
|
|
96
|
+
]);
|
|
97
|
+
}
|
|
98
|
+
// Each runtime carries a `supportedDeviceTypes` array of ~100 entries; the
|
|
99
|
+
// whole payload is ~200 KB and none of it answers "what is installed".
|
|
100
|
+
const runtimes = (JSON.parse(stdout).runtimes ?? []);
|
|
101
|
+
if (runtimes.length === 0) {
|
|
102
|
+
return renderOutput([
|
|
103
|
+
renderFields({ runtimes: "0 installed" }),
|
|
104
|
+
renderHelp([`Run \`xcodebuild-axi platforms download iOS\``]),
|
|
105
|
+
]);
|
|
106
|
+
}
|
|
107
|
+
const missing = PLATFORMS.filter((platform) => !runtimes.some((runtime) => runtime.platform === platform));
|
|
108
|
+
return renderOutput([
|
|
109
|
+
renderFields({ count: runtimes.length }),
|
|
110
|
+
renderList("runtimes", runtimes.map((runtime) => ({
|
|
111
|
+
runtime: runtime.name ?? `${runtime.platform} ${runtime.version}`,
|
|
112
|
+
build: runtime.buildversion ?? "unknown",
|
|
113
|
+
available: runtime.isAvailable === false ? "no" : "yes",
|
|
114
|
+
}))),
|
|
115
|
+
...(missing.length > 0
|
|
116
|
+
? [renderFields({ not_installed: [...missing] })]
|
|
117
|
+
: []),
|
|
118
|
+
renderHelp([
|
|
119
|
+
...(missing.length > 0
|
|
120
|
+
? [`Run \`xcodebuild-axi platforms download ${missing[0]}\` to add one`]
|
|
121
|
+
: []),
|
|
122
|
+
"Run `xcodebuild-axi destinations` to see the devices these runtimes provide",
|
|
123
|
+
]),
|
|
124
|
+
]);
|
|
125
|
+
}
|
|
126
|
+
async function download(args, platform) {
|
|
127
|
+
const all = hasFlag(args, "--all");
|
|
128
|
+
if (!all && platform === undefined) {
|
|
129
|
+
throw new AxiError("platforms download needs a platform or --all", "VALIDATION_ERROR", [
|
|
130
|
+
`platforms: ${PLATFORMS.join(", ")}`,
|
|
131
|
+
"xcodebuild-axi platforms download iOS",
|
|
132
|
+
]);
|
|
133
|
+
}
|
|
134
|
+
if (platform !== undefined &&
|
|
135
|
+
!PLATFORMS.includes(platform)) {
|
|
136
|
+
throw new AxiError(`Unknown platform '${platform}'`, "VALIDATION_ERROR", [
|
|
137
|
+
`platforms: ${PLATFORMS.join(", ")}`,
|
|
138
|
+
]);
|
|
139
|
+
}
|
|
140
|
+
const buildVersion = getFlag(args, "--build-version");
|
|
141
|
+
return longRun({
|
|
142
|
+
args: [
|
|
143
|
+
...(all
|
|
144
|
+
? ["-downloadAllPlatforms"]
|
|
145
|
+
: ["-downloadPlatform", platform]),
|
|
146
|
+
...exportPathArgs(args),
|
|
147
|
+
...(buildVersion ? ["-buildVersion", buildVersion] : []),
|
|
148
|
+
...archVariantArgs(args),
|
|
149
|
+
],
|
|
150
|
+
label: `download-${all ? "all" : platform}`,
|
|
151
|
+
key: "download",
|
|
152
|
+
subject: all ? "all platforms" : platform,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
async function importPlatform(args, path) {
|
|
156
|
+
if (path === undefined) {
|
|
157
|
+
throw new AxiError("platforms import needs a path to a .dmg", "VALIDATION_ERROR", ["xcodebuild-axi platforms import ~/Downloads/iOS_26.dmg"]);
|
|
158
|
+
}
|
|
159
|
+
const full = resolve(path);
|
|
160
|
+
if (!existsSync(full)) {
|
|
161
|
+
throw new AxiError(`No disk image at ${path}`, "NOT_FOUND", [
|
|
162
|
+
"Download one first with `xcodebuild-axi platforms download iOS --export-path <dir>`",
|
|
163
|
+
]);
|
|
164
|
+
}
|
|
165
|
+
return longRun({
|
|
166
|
+
args: ["-importPlatform", full],
|
|
167
|
+
label: "import-platform",
|
|
168
|
+
key: "import",
|
|
169
|
+
subject: tildePath(full),
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
async function component(args, op, name) {
|
|
173
|
+
if (op === undefined ||
|
|
174
|
+
!COMPONENT_OPS.includes(op)) {
|
|
175
|
+
throw new AxiError(op === undefined
|
|
176
|
+
? "platforms component needs an operation"
|
|
177
|
+
: `Unknown component operation '${op}'`, "VALIDATION_ERROR", [
|
|
178
|
+
`operations: ${COMPONENT_OPS.join(", ")}`,
|
|
179
|
+
"xcodebuild-axi platforms component show MetalToolchain",
|
|
180
|
+
]);
|
|
181
|
+
}
|
|
182
|
+
if (name === undefined) {
|
|
183
|
+
throw new AxiError("platforms component needs a component name", "VALIDATION_ERROR", ["known component: MetalToolchain"]);
|
|
184
|
+
}
|
|
185
|
+
if (op === "show") {
|
|
186
|
+
// -showComponent is fast and its JSON is two fields, so it can buffer.
|
|
187
|
+
const { stdout, stderr, exitCode } = await runMetadata([
|
|
188
|
+
"-showComponent",
|
|
189
|
+
name,
|
|
190
|
+
"-json",
|
|
191
|
+
]);
|
|
192
|
+
if (exitCode !== 0) {
|
|
193
|
+
throw new AxiError(firstLine(stderr) || `Could not read component '${name}'`, "NOT_FOUND", ["known component: MetalToolchain"]);
|
|
194
|
+
}
|
|
195
|
+
const parsed = parseJson(stdout);
|
|
196
|
+
return renderOutput([
|
|
197
|
+
renderFields({
|
|
198
|
+
component: name,
|
|
199
|
+
status: parsed["status"] ?? "unknown",
|
|
200
|
+
...(parsed["buildVersion"]
|
|
201
|
+
? { build: parsed["buildVersion"] }
|
|
202
|
+
: {}),
|
|
203
|
+
}),
|
|
204
|
+
renderHelp(parsed["status"] === "uninstalled"
|
|
205
|
+
? [`Run \`xcodebuild-axi platforms component download ${name}\``]
|
|
206
|
+
: []),
|
|
207
|
+
]);
|
|
208
|
+
}
|
|
209
|
+
if (op === "import") {
|
|
210
|
+
const importPath = getFlag(args, "--import-path");
|
|
211
|
+
if (importPath === undefined) {
|
|
212
|
+
throw new AxiError("component import needs --import-path", "VALIDATION_ERROR", [
|
|
213
|
+
`xcodebuild-axi platforms component import ${name} --import-path <bundle>`,
|
|
214
|
+
]);
|
|
215
|
+
}
|
|
216
|
+
return longRun({
|
|
217
|
+
args: ["-importComponent", name, "-importPath", resolve(importPath)],
|
|
218
|
+
label: `component-import-${name}`,
|
|
219
|
+
key: "component",
|
|
220
|
+
subject: `${name} imported`,
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
if (op === "delete") {
|
|
224
|
+
return longRun({
|
|
225
|
+
args: ["-deleteComponent", name],
|
|
226
|
+
label: `component-delete-${name}`,
|
|
227
|
+
key: "component",
|
|
228
|
+
subject: `${name} deleted`,
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
const buildVersion = getFlag(args, "--build-version");
|
|
232
|
+
return longRun({
|
|
233
|
+
args: [
|
|
234
|
+
"-downloadComponent",
|
|
235
|
+
name,
|
|
236
|
+
...exportPathArgs(args),
|
|
237
|
+
...(buildVersion ? ["-buildVersion", buildVersion] : []),
|
|
238
|
+
],
|
|
239
|
+
label: `component-download-${name}`,
|
|
240
|
+
key: "component",
|
|
241
|
+
subject: `${name} downloaded`,
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
async function deviceSupport(args) {
|
|
245
|
+
const platform = getFlag(args, "--platform");
|
|
246
|
+
const osVersion = getFlag(args, "--os-version");
|
|
247
|
+
if (platform === undefined || osVersion === undefined) {
|
|
248
|
+
throw new AxiError("device-support needs both --platform and --os-version", "VALIDATION_ERROR", [
|
|
249
|
+
"xcodebuild-axi platforms device-support --platform iOS --os-version 26.0",
|
|
250
|
+
]);
|
|
251
|
+
}
|
|
252
|
+
const modelCode = getFlag(args, "--model-code");
|
|
253
|
+
const architecture = getFlag(args, "--architecture");
|
|
254
|
+
return longRun({
|
|
255
|
+
args: [
|
|
256
|
+
"-prepareDeviceSupport",
|
|
257
|
+
"-platform",
|
|
258
|
+
platform,
|
|
259
|
+
"-osVersion",
|
|
260
|
+
osVersion,
|
|
261
|
+
...(modelCode ? ["-modelCode", modelCode] : []),
|
|
262
|
+
...(architecture ? ["-architecture", architecture] : []),
|
|
263
|
+
],
|
|
264
|
+
label: `device-support-${platform}-${osVersion}`,
|
|
265
|
+
key: "device_support",
|
|
266
|
+
subject: `${platform} ${osVersion}`,
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
async function firstLaunch(args) {
|
|
270
|
+
if (hasFlag(args, "--status")) {
|
|
271
|
+
// A question, not a mutation — and it needs no sudo, unlike the install.
|
|
272
|
+
const { exitCode } = await runMetadata(["-checkFirstLaunchStatus"]);
|
|
273
|
+
return renderOutput([
|
|
274
|
+
renderFields({
|
|
275
|
+
first_launch: exitCode === 0 ? "complete" : "required",
|
|
276
|
+
}),
|
|
277
|
+
renderHelp(exitCode === 0
|
|
278
|
+
? []
|
|
279
|
+
: [
|
|
280
|
+
"Run `sudo xcodebuild -runFirstLaunch` to install the bundled packages",
|
|
281
|
+
]),
|
|
282
|
+
]);
|
|
283
|
+
}
|
|
284
|
+
return longRun({
|
|
285
|
+
args: [
|
|
286
|
+
"-runFirstLaunch",
|
|
287
|
+
...(hasFlag(args, "--check-updates") ? ["-checkForNewerComponents"] : []),
|
|
288
|
+
],
|
|
289
|
+
label: "first-launch",
|
|
290
|
+
key: "first_launch",
|
|
291
|
+
subject: "bundled packages installed",
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* `-license` on its own opens the agreement in a pager and then asks for sudo.
|
|
296
|
+
* `-license check` answers the only part of that an agent can act on — whether
|
|
297
|
+
* the license is already accepted — and exits without printing or prompting.
|
|
298
|
+
*/
|
|
299
|
+
async function license() {
|
|
300
|
+
const { exitCode } = await runMetadata(["-license", "check"]);
|
|
301
|
+
const accepted = exitCode === 0;
|
|
302
|
+
if (!accepted)
|
|
303
|
+
process.exitCode = 1;
|
|
304
|
+
return renderOutput([
|
|
305
|
+
renderFields({ license: accepted ? "accepted" : "not accepted" }),
|
|
306
|
+
renderHelp(accepted
|
|
307
|
+
? []
|
|
308
|
+
: [
|
|
309
|
+
"Run `sudo xcodebuild -license accept` yourself — it needs a terminal this tool does not have",
|
|
310
|
+
]),
|
|
311
|
+
]);
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* These invocations download gigabytes and need sudo for some components, so
|
|
315
|
+
* they stream to a log like a build does rather than buffering.
|
|
316
|
+
*/
|
|
317
|
+
async function longRun(options) {
|
|
318
|
+
const run = await runBuild({
|
|
319
|
+
args: options.args,
|
|
320
|
+
label: options.label,
|
|
321
|
+
outDir: globalArtifactDir(),
|
|
322
|
+
});
|
|
323
|
+
if (run.exitCode !== 0) {
|
|
324
|
+
process.exitCode = 1;
|
|
325
|
+
return renderOutput([
|
|
326
|
+
renderFields({
|
|
327
|
+
[options.key]: "failed",
|
|
328
|
+
error: firstError(run.tail),
|
|
329
|
+
duration: duration(run.seconds),
|
|
330
|
+
log: tildePath(run.logPath),
|
|
331
|
+
}),
|
|
332
|
+
renderHelp([
|
|
333
|
+
"Some platform operations need `sudo`; rerun the printed xcodebuild command directly if so",
|
|
334
|
+
]),
|
|
335
|
+
]);
|
|
336
|
+
}
|
|
337
|
+
return renderOutput([
|
|
338
|
+
renderFields({
|
|
339
|
+
[options.key]: "succeeded",
|
|
340
|
+
detail: options.subject,
|
|
341
|
+
duration: duration(run.seconds),
|
|
342
|
+
log: tildePath(run.logPath),
|
|
343
|
+
}),
|
|
344
|
+
renderHelp(["Run `xcodebuild-axi platforms` to confirm what is installed"]),
|
|
345
|
+
]);
|
|
346
|
+
}
|
|
347
|
+
function exportPathArgs(args) {
|
|
348
|
+
const path = getFlag(args, "--export-path");
|
|
349
|
+
return path ? ["-exportPath", resolve(path)] : [];
|
|
350
|
+
}
|
|
351
|
+
function archVariantArgs(args) {
|
|
352
|
+
const variant = getFlag(args, "--arch-variant");
|
|
353
|
+
return variant ? ["-architectureVariant", variant] : [];
|
|
354
|
+
}
|
|
355
|
+
function parseJson(text) {
|
|
356
|
+
const start = text.indexOf("{");
|
|
357
|
+
if (start < 0)
|
|
358
|
+
return {};
|
|
359
|
+
try {
|
|
360
|
+
return JSON.parse(text.slice(start));
|
|
361
|
+
}
|
|
362
|
+
catch {
|
|
363
|
+
return {};
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
function firstLine(text) {
|
|
367
|
+
return (stripPreamble(text)
|
|
368
|
+
.split("\n")
|
|
369
|
+
.map((line) => line.trim())
|
|
370
|
+
.find((line) => line.length > 0) ?? "");
|
|
371
|
+
}
|
|
372
|
+
function firstError(tail) {
|
|
373
|
+
return (stripPreamble(tail)
|
|
374
|
+
.split("\n")
|
|
375
|
+
.map((line) => line.trim())
|
|
376
|
+
.filter((line) => /error|failed|denied/i.test(line))
|
|
377
|
+
.pop() ?? "xcodebuild reported no detail");
|
|
378
|
+
}
|
|
379
|
+
//# sourceMappingURL=platforms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platforms.js","sourceRoot":"","sources":["../../../src/commands/platforms.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const RESULT_HELP = "usage: xcodebuild-axi result <path.xcresult> [flags]\nRe-reads a result bundle that a previous run wrote, without rebuilding.\nflags[4]:\n --failures failures and errors only\n --warnings include the full warning list\n --max <n> rows to list before summarizing the rest (default: 20)\n --full untruncated messages\nexamples:\n xcodebuild-axi result ~/Library/Caches/xcodebuild-axi/MyApps-1a2b3c4d/MyApp-iPhone-17-Pro-test.xcresult\n xcodebuild-axi result build/MyApp.xcresult --failures --full\n";
|
|
2
|
+
export declare function resultCommand(args: string[]): Promise<string>;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { AxiError } from "../errors.js";
|
|
2
|
+
import { resolve } from "node:path";
|
|
3
|
+
import { describeDevice, readBuildResults, readTestSummary, toDiagnostics, } from "../xcresult.js";
|
|
4
|
+
import { diagnosticsBlock } from "../report.js";
|
|
5
|
+
import { duration, renderFields, renderHelp, renderList, renderOutput, tildePath, truncate, } from "../toon.js";
|
|
6
|
+
import { getIntFlag, hasFlag, positionals, rejectUnknownFlags, } from "../args.js";
|
|
7
|
+
export const RESULT_HELP = `usage: xcodebuild-axi result <path.xcresult> [flags]
|
|
8
|
+
Re-reads a result bundle that a previous run wrote, without rebuilding.
|
|
9
|
+
flags[4]:
|
|
10
|
+
--failures failures and errors only
|
|
11
|
+
--warnings include the full warning list
|
|
12
|
+
--max <n> rows to list before summarizing the rest (default: 20)
|
|
13
|
+
--full untruncated messages
|
|
14
|
+
examples:
|
|
15
|
+
xcodebuild-axi result ~/Library/Caches/xcodebuild-axi/MyApps-1a2b3c4d/MyApp-iPhone-17-Pro-test.xcresult
|
|
16
|
+
xcodebuild-axi result build/MyApp.xcresult --failures --full
|
|
17
|
+
`;
|
|
18
|
+
const FLAGS = ["--failures", "--warnings", "--max", "--full"];
|
|
19
|
+
export async function resultCommand(args) {
|
|
20
|
+
rejectUnknownFlags(args, "result", FLAGS, ["--max"]);
|
|
21
|
+
const [rawPath] = positionals(args, ["--max"]);
|
|
22
|
+
if (rawPath === undefined) {
|
|
23
|
+
throw new AxiError("result needs a path to an .xcresult bundle", "VALIDATION_ERROR", [
|
|
24
|
+
"xcodebuild-axi result <path.xcresult>",
|
|
25
|
+
"`xcodebuild-axi build` and `test` each print the path they wrote",
|
|
26
|
+
]);
|
|
27
|
+
}
|
|
28
|
+
const path = resolve(expandTilde(rawPath));
|
|
29
|
+
const max = getIntFlag(args, "--max") ?? 20;
|
|
30
|
+
const full = hasFlag(args, "--full");
|
|
31
|
+
const failuresOnly = hasFlag(args, "--failures");
|
|
32
|
+
const [summary, build] = await Promise.all([
|
|
33
|
+
readTestSummary(path).catch(() => undefined),
|
|
34
|
+
readBuildResults(path).catch(() => undefined),
|
|
35
|
+
]);
|
|
36
|
+
if (!summary && !build) {
|
|
37
|
+
throw new AxiError(`Nothing readable in the bundle at ${rawPath}`, "RESULT_NOT_FOUND");
|
|
38
|
+
}
|
|
39
|
+
const blocks = [];
|
|
40
|
+
if (summary?.totalTestCount !== undefined) {
|
|
41
|
+
const device = summary.devicesAndConfigurations?.[0]?.device;
|
|
42
|
+
blocks.push(renderFields({
|
|
43
|
+
result: summary.result?.toLowerCase() ?? "unknown",
|
|
44
|
+
title: summary.title ?? "",
|
|
45
|
+
destination: describeDevice(device),
|
|
46
|
+
tests: `${summary.passedTests ?? 0} passed / ${summary.failedTests ?? 0} failed / ${summary.skippedTests ?? 0} skipped`,
|
|
47
|
+
duration: summary.startTime !== undefined && summary.finishTime !== undefined
|
|
48
|
+
? duration(summary.finishTime - summary.startTime)
|
|
49
|
+
: "unknown",
|
|
50
|
+
}));
|
|
51
|
+
const failures = summary.testFailures ?? [];
|
|
52
|
+
if (failures.length > 0) {
|
|
53
|
+
const shown = failures.slice(0, max).map((failure) => ({
|
|
54
|
+
test: failure.testIdentifierString ?? failure.testName ?? "unknown",
|
|
55
|
+
target: failure.targetName ?? "",
|
|
56
|
+
message: full
|
|
57
|
+
? (failure.failureText ?? "").replace(/\s+/g, " ").trim()
|
|
58
|
+
: truncate((failure.failureText ?? "").replace(/\s+/g, " ").trim(), 300).text,
|
|
59
|
+
}));
|
|
60
|
+
blocks.push(renderList(failures.length > shown.length
|
|
61
|
+
? `failures (${shown.length} of ${failures.length})`
|
|
62
|
+
: "failures", shown));
|
|
63
|
+
}
|
|
64
|
+
else if (failuresOnly) {
|
|
65
|
+
blocks.push(renderFields({ failures: "0 test failures in this bundle" }));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (build) {
|
|
69
|
+
const errors = toDiagnostics(build.errors);
|
|
70
|
+
const warnings = toDiagnostics([
|
|
71
|
+
...(build.warnings ?? []),
|
|
72
|
+
...(build.analyzerWarnings ?? []),
|
|
73
|
+
]);
|
|
74
|
+
if (errors.length > 0) {
|
|
75
|
+
blocks.push(diagnosticsBlock("errors", errors, max, full ? 4000 : 300).block);
|
|
76
|
+
}
|
|
77
|
+
if (!failuresOnly) {
|
|
78
|
+
if (warnings.length > 0 && hasFlag(args, "--warnings")) {
|
|
79
|
+
blocks.push(diagnosticsBlock("warnings", warnings, max, full ? 4000 : 300).block);
|
|
80
|
+
}
|
|
81
|
+
else if (warnings.length > 0) {
|
|
82
|
+
blocks.push(renderFields({ warnings: warnings.length }));
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
blocks.push(renderFields({ bundle: tildePath(path) }));
|
|
87
|
+
const hints = [];
|
|
88
|
+
if (!hasFlag(args, "--warnings") &&
|
|
89
|
+
(build?.warningCount ?? 0) > 0 &&
|
|
90
|
+
!failuresOnly) {
|
|
91
|
+
hints.push(`Run \`xcodebuild-axi result ${rawPath} --warnings\` to list them`);
|
|
92
|
+
}
|
|
93
|
+
blocks.push(renderHelp(hints));
|
|
94
|
+
return renderOutput(blocks);
|
|
95
|
+
}
|
|
96
|
+
function expandTilde(path) {
|
|
97
|
+
const home = process.env["HOME"];
|
|
98
|
+
return home && path.startsWith("~/") ? `${home}${path.slice(1)}` : path;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=result.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../../src/commands/result.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const SCHEMES_HELP = "usage: xcodebuild-axi schemes\nLists the buildable schemes in the workspace or project in the current directory.\nflags[0]: (none)\nexamples:\n xcodebuild-axi schemes\n";
|
|
2
|
+
export declare function schemesCommand(args: string[]): Promise<string>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { requireProject } from "../context.js";
|
|
2
|
+
import { listSchemes } from "../scheme.js";
|
|
3
|
+
import { renderFields, renderHelp, renderOutput } from "../toon.js";
|
|
4
|
+
import { rejectUnknownFlags } from "../args.js";
|
|
5
|
+
export const SCHEMES_HELP = `usage: xcodebuild-axi schemes
|
|
6
|
+
Lists the buildable schemes in the workspace or project in the current directory.
|
|
7
|
+
flags[0]: (none)
|
|
8
|
+
examples:
|
|
9
|
+
xcodebuild-axi schemes
|
|
10
|
+
`;
|
|
11
|
+
export async function schemesCommand(args) {
|
|
12
|
+
rejectUnknownFlags(args, "schemes", []);
|
|
13
|
+
const project = requireProject();
|
|
14
|
+
const info = await listSchemes(project);
|
|
15
|
+
if (info.schemes.length === 0) {
|
|
16
|
+
return renderOutput([
|
|
17
|
+
renderFields({ schemes: `0 shared schemes in ${info.name}` }),
|
|
18
|
+
renderHelp([
|
|
19
|
+
"Open the project in Xcode and mark a scheme as Shared so xcodebuild can see it",
|
|
20
|
+
]),
|
|
21
|
+
]);
|
|
22
|
+
}
|
|
23
|
+
const blocks = [
|
|
24
|
+
renderFields({ [project.kind]: info.name }),
|
|
25
|
+
// A TOON array of primitives renders inline and unquoted
|
|
26
|
+
// (`schemes[12]: A,B,C`); the same names in one comma-joined string would
|
|
27
|
+
// be quoted for containing commas, and pay for the quotes.
|
|
28
|
+
renderFields({ schemes: info.schemes }),
|
|
29
|
+
];
|
|
30
|
+
if (info.configurations.length > 0) {
|
|
31
|
+
blocks.push(renderFields({ configurations: info.configurations }));
|
|
32
|
+
}
|
|
33
|
+
blocks.push(renderHelp([
|
|
34
|
+
"Run `xcodebuild-axi build --scheme <name>` to build one",
|
|
35
|
+
"Run `xcodebuild-axi destinations --scheme <name>` to see where it can run",
|
|
36
|
+
]));
|
|
37
|
+
return renderOutput(blocks);
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=schemes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemes.js","sourceRoot":"","sources":["../../../src/commands/schemes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;CAK3B,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAc;IACjD,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IAExC,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;IAExC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,YAAY,CAAC;YAClB,YAAY,CAAC,EAAE,OAAO,EAAE,uBAAuB,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7D,UAAU,CAAC;gBACT,gFAAgF;aACjF,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG;QACb,YAAY,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3C,yDAAyD;QACzD,0EAA0E;QAC1E,2DAA2D;QAC3D,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;KACxC,CAAC;IAEF,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,CAAC,IAAI,CACT,UAAU,CAAC;QACT,yDAAyD;QACzD,2EAA2E;KAC5E,CAAC,CACH,CAAC;IAEF,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const SETTINGS_HELP = "usage: xcodebuild-axi settings [flags]\nReads resolved build settings. Asking for the keys you want turns a 40 KB dump\ninto a few lines.\nflags[7]:\n --scheme <name> scheme to resolve against (required only when the project has more than one)\n --key <NAME> setting to read; repeatable or comma-separated\n --configuration <name> build configuration to resolve against\n --all dump every setting (large \u2014 hundreds of keys)\n --for-index the per-source-file settings an indexer sees\n --file <path> with --for-index: the one source file to report on\n --full with --for-index --file: list the long argument arrays\nnote:\n --for-index answers a different question from the rest of this command: it\n reports the compiler invocation the indexer builds per source file. The raw\n payload measured 216 KB on a 12-scheme workspace, so without --file it\n reports only which targets have index settings and how many files each has.\nexamples:\n xcodebuild-axi settings --key PRODUCT_BUNDLE_IDENTIFIER,MARKETING_VERSION\n xcodebuild-axi settings --scheme MyApp --key SWIFT_VERSION\n xcodebuild-axi settings --scheme MyApp --for-index --file MyApp/AppFeature.swift\n";
|
|
2
|
+
export declare function settingsCommand(args: string[]): Promise<string>;
|