xcodebuild-axi 0.1.9 → 0.1.10

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.
@@ -2,17 +2,46 @@ import { existsSync, mkdtempSync, readdirSync, readFileSync, writeFileSync, } fr
2
2
  import { tmpdir } from "node:os";
3
3
  import { join, resolve } from "node:path";
4
4
  import { AxiError, mapXcodebuildError } from "../errors.js";
5
- import { EXPORT_METHODS, exportOptionsPlist, readArchiveInfo, } from "../archive.js";
5
+ import { EXPORT_METHODS, EXPORT_METHOD_ALIASES, exportOptionsPlist, readArchiveInfo, } from "../archive.js";
6
6
  import { authArgs, AUTH_FLAGS, AUTH_FLAG_HELP, AUTH_VALUE_FLAGS, } from "../auth.js";
7
7
  import { artifactsDirFrom } from "../action.js";
8
8
  import { requireProject } from "../context.js";
9
9
  import { artifactDir, runBuild } from "../xcodebuild.js";
10
10
  import { transcriptTail } from "../report.js";
11
11
  import { duration, renderFields, renderHelp, renderOutput, tildePath, } from "../toon.js";
12
- import { getFlag, hasFlag, positionals, rejectUnknownFlags } from "../args.js";
12
+ import { getFlag, getListFlag, hasFlag, positionals, rejectUnknownFlags, } from "../args.js";
13
+ /**
14
+ * The flags that exist only to fill in a key of the generated options plist.
15
+ * Named as a group because `--options` supplies the whole plist itself, and
16
+ * silently ignoring these alongside it is how a release ships unsigned.
17
+ */
18
+ const PLIST_FLAGS = [
19
+ "--profile",
20
+ "--certificate",
21
+ "--installer-certificate",
22
+ "--distribution-bundle-id",
23
+ "--keep-swift-symbols",
24
+ "--internal-only",
25
+ "--app-store-info",
26
+ "--icloud-env",
27
+ "--thinning",
28
+ "--manifest",
29
+ "--odr-base-url",
30
+ "--no-embed-odr",
31
+ ];
32
+ const PLIST_VALUE_FLAGS = [
33
+ "--profile",
34
+ "--certificate",
35
+ "--installer-certificate",
36
+ "--distribution-bundle-id",
37
+ "--icloud-env",
38
+ "--thinning",
39
+ "--manifest",
40
+ "--odr-base-url",
41
+ ];
13
42
  export const EXPORT_HELP = `usage: xcodebuild-axi export <path.xcarchive> [flags]
14
43
  Exports a built archive into a distributable product.
15
- flags[15]:
44
+ flags[27]:
16
45
  --method <name> ${EXPORT_METHODS.join(", ")}
17
46
  --team <id> Developer team ID to sign with
18
47
  --options <path> a hand-written export options plist, instead of --method
@@ -24,14 +53,35 @@ flags[15]:
24
53
  --notarized export an archive Apple has already notarized
25
54
  --allow-provisioning let xcodebuild fetch profiles from the developer portal
26
55
  --signing-style <name> manual or automatic
56
+ --profile <id>=<name> provisioning profile per bundle id; repeatable (implies manual signing)
57
+ --certificate <name> signing certificate name or SHA-1 (implies manual signing)
58
+ --installer-certificate <name> installer certificate for a macOS package
59
+ --distribution-bundle-id <id> which app to export, when the archive holds several
60
+ --keep-swift-symbols do not strip Swift symbols from the export
61
+ --internal-only mark a TestFlight build as internal testing only
62
+ --app-store-info generate App Store information alongside the upload
63
+ --icloud-env <name> Development or Production CloudKit containers
64
+ --thinning <variant> none, thin-for-all-variants, or a device model id
65
+ --manifest <key>=<url> appURL, displayImageURL, fullSizeImageURL; repeatable
66
+ --odr-base-url <url> host the on-demand resource asset packs are served from
67
+ --no-embed-odr do not embed on-demand resource asset packs in the bundle
27
68
  ${AUTH_FLAG_HELP}
28
69
  note:
29
70
  --method writes the export options plist for you, which is otherwise an XML
30
- file you have to author by hand. Pass --options to supply your own instead.
71
+ file you have to author by hand. Pass --options to supply your own instead --
72
+ the flags that shape the plist are refused alongside it, rather than being
73
+ silently dropped.
31
74
  --upload is the difference between an .ipa on disk and a build in App Store
32
75
  Connect; with it there are no products to list, which is success, not an
33
76
  empty export. --no-manage-version matters whenever the build number is set
34
77
  at archive time, because Xcode otherwise picks its own at upload.
78
+ --profile and --certificate are manual signing, so they set --signing-style
79
+ manual when it was not asked for -- naming a profile and then letting Xcode
80
+ pick one is not a thing anyone means.
81
+ --manifest needs all three of appURL, displayImageURL and fullSizeImageURL;
82
+ a partial manifest exports without error and cannot be installed.
83
+ The Xcode 26 method names -- app-store, ad-hoc, development -- still work and
84
+ are reported as the current name they mean.
35
85
  examples:
36
86
  xcodebuild-axi export build/MyApp.xcarchive --method release-testing
37
87
  xcodebuild-axi export build/MyApp.xcarchive --method app-store-connect --team ABCDE12345
@@ -50,6 +100,7 @@ export const EXPORT_FLAGS = [
50
100
  "--notarized",
51
101
  "--allow-provisioning",
52
102
  "--signing-style",
103
+ ...PLIST_FLAGS,
53
104
  ...AUTH_FLAGS,
54
105
  ];
55
106
  export const EXPORT_VALUE_FLAGS = [
@@ -59,6 +110,7 @@ export const EXPORT_VALUE_FLAGS = [
59
110
  "--output",
60
111
  "--artifacts-dir",
61
112
  "--signing-style",
113
+ ...PLIST_VALUE_FLAGS,
62
114
  ...AUTH_VALUE_FLAGS,
63
115
  ];
64
116
  export async function exportCommand(args) {
@@ -77,7 +129,10 @@ export async function exportCommand(args) {
77
129
  ]);
78
130
  }
79
131
  const notarized = hasFlag(args, "--notarized");
80
- const method = getFlag(args, "--method");
132
+ const requested = getFlag(args, "--method");
133
+ const method = requested === undefined
134
+ ? undefined
135
+ : (EXPORT_METHOD_ALIASES[requested] ?? requested);
81
136
  const optionsPath = getFlag(args, "--options");
82
137
  if (!notarized && method === undefined && optionsPath === undefined) {
83
138
  throw new AxiError("export needs --method or --options", "VALIDATION_ERROR", [
@@ -90,11 +145,21 @@ export async function exportCommand(args) {
90
145
  throw new AxiError(`Unknown export method '${method}'`, "VALIDATION_ERROR", [`valid methods: ${EXPORT_METHODS.join(", ")}`]);
91
146
  }
92
147
  const uploading = hasFlag(args, "--upload");
93
- if (uploading && optionsPath !== undefined) {
94
- throw new AxiError("--upload has nothing to write to when --options supplies the plist", "VALIDATION_ERROR", [
95
- "add `<key>destination</key><string>upload</string>` to your own plist",
96
- "or drop --options and let --method write one",
97
- ]);
148
+ if (optionsPath !== undefined) {
149
+ const ignored = [
150
+ "--upload",
151
+ "--no-manage-version",
152
+ "--no-upload-symbols",
153
+ "--team",
154
+ "--signing-style",
155
+ ...PLIST_FLAGS,
156
+ ].filter((flag) => args.includes(flag));
157
+ if (ignored.length > 0) {
158
+ throw new AxiError(`${ignored.join(", ")} ${ignored.length === 1 ? "has" : "have"} nothing to write to when --options supplies the plist`, "VALIDATION_ERROR", [
159
+ "put the key in your own plist, or drop --options and let --method write one",
160
+ "a flag that shapes the plist is refused here rather than silently dropped",
161
+ ]);
162
+ }
98
163
  }
99
164
  const project = requireProject();
100
165
  const artifactsDir = artifactsDirFrom(args);
@@ -177,18 +242,136 @@ export async function exportCommand(args) {
177
242
  }
178
243
  export function generatedPlistOptions(args, method) {
179
244
  const team = getFlag(args, "--team");
180
- const signingStyle = getFlag(args, "--signing-style");
245
+ const certificate = getFlag(args, "--certificate");
246
+ const profiles = keyValues(args, "--profile", "<bundle-id>=<profile>");
247
+ const manifest = manifestOf(args);
248
+ const installerCertificate = getFlag(args, "--installer-certificate");
249
+ const distributionBundleId = getFlag(args, "--distribution-bundle-id");
250
+ const icloud = icloudEnvironment(args);
251
+ const thinning = thinningOf(args);
252
+ const odrBaseURL = getFlag(args, "--odr-base-url");
253
+ // Naming a profile or a certificate *is* manual signing; letting Xcode pick
254
+ // one anyway is not a thing anyone means by it, and the export that results
255
+ // is signed with something other than what was asked for.
256
+ const signingStyle = getFlag(args, "--signing-style") ??
257
+ (certificate !== undefined || Object.keys(profiles).length > 0
258
+ ? "manual"
259
+ : undefined);
181
260
  return {
182
261
  method,
183
262
  ...(hasFlag(args, "--upload") ? { destination: "upload" } : {}),
184
263
  ...(team !== undefined ? { teamID: team } : {}),
185
264
  ...(signingStyle !== undefined ? { signingStyle } : {}),
265
+ ...(certificate !== undefined ? { signingCertificate: certificate } : {}),
266
+ ...(installerCertificate !== undefined
267
+ ? { installerSigningCertificate: installerCertificate }
268
+ : {}),
269
+ ...(Object.keys(profiles).length > 0
270
+ ? { provisioningProfiles: profiles }
271
+ : {}),
272
+ ...(distributionBundleId !== undefined
273
+ ? { distributionBundleIdentifier: distributionBundleId }
274
+ : {}),
186
275
  ...(hasFlag(args, "--no-upload-symbols") ? { uploadSymbols: false } : {}),
276
+ ...(hasFlag(args, "--keep-swift-symbols")
277
+ ? { stripSwiftSymbols: false }
278
+ : {}),
187
279
  ...(hasFlag(args, "--no-manage-version")
188
280
  ? { manageAppVersionAndBuildNumber: false }
189
281
  : {}),
282
+ ...(hasFlag(args, "--internal-only")
283
+ ? { testFlightInternalTestingOnly: true }
284
+ : {}),
285
+ ...(hasFlag(args, "--app-store-info")
286
+ ? { generateAppStoreInformation: true }
287
+ : {}),
288
+ ...(icloud !== undefined ? { iCloudContainerEnvironment: icloud } : {}),
289
+ ...(thinning !== undefined ? { thinning } : {}),
290
+ ...(manifest !== undefined ? { manifest } : {}),
291
+ ...(hasFlag(args, "--no-embed-odr")
292
+ ? { embedOnDemandResourcesAssetPacksInBundle: false }
293
+ : {}),
294
+ ...(odrBaseURL !== undefined
295
+ ? { onDemandResourcesAssetPacksBaseURL: odrBaseURL }
296
+ : {}),
190
297
  };
191
298
  }
299
+ /** `--flag KEY=VALUE`, repeatable, into the dict the plist wants. */
300
+ function keyValues(args, flag, shape) {
301
+ const out = {};
302
+ for (const entry of getListFlag(args, flag)) {
303
+ const split = entry.indexOf("=");
304
+ if (split <= 0) {
305
+ throw new AxiError(`${flag} expects ${shape}, got '${entry}'`, "VALIDATION_ERROR", [`xcodebuild-axi export <path.xcarchive> ${flag} ${shape}`]);
306
+ }
307
+ out[entry.slice(0, split)] = entry.slice(split + 1);
308
+ }
309
+ return out;
310
+ }
311
+ /** The three URLs an over-the-web install needs, and Xcode's optional fourth. */
312
+ const MANIFEST_KEYS = [
313
+ "appURL",
314
+ "displayImageURL",
315
+ "fullSizeImageURL",
316
+ "assetPackManifestURL",
317
+ ];
318
+ /**
319
+ * A manifest missing one of its three required URLs exports without an error
320
+ * and produces a link that cannot install, which is the worst shape a failure
321
+ * can take: it fails on someone's device, later, silently.
322
+ */
323
+ function manifestOf(args) {
324
+ const manifest = keyValues(args, "--manifest", "<key>=<url>");
325
+ if (Object.keys(manifest).length === 0)
326
+ return undefined;
327
+ const unknown = Object.keys(manifest).filter((key) => !MANIFEST_KEYS.includes(key));
328
+ if (unknown.length > 0) {
329
+ throw new AxiError(`Unknown manifest key '${unknown[0]}'`, "VALIDATION_ERROR", [`valid keys: ${MANIFEST_KEYS.join(", ")}`]);
330
+ }
331
+ if (getFlag(args, "--odr-base-url") !== undefined &&
332
+ !("assetPackManifestURL" in manifest)) {
333
+ throw new AxiError("--manifest needs assetPackManifestURL when asset packs are hosted", "VALIDATION_ERROR", [
334
+ "xcodebuild requires that sub-key alongside --odr-base-url",
335
+ "--manifest assetPackManifestURL=https://example.com/AssetPackManifest.plist",
336
+ ]);
337
+ }
338
+ const missing = MANIFEST_KEYS.slice(0, 3).filter((key) => !(key in manifest));
339
+ if (missing.length > 0) {
340
+ throw new AxiError(`--manifest needs ${missing.join(", ")} as well`, "VALIDATION_ERROR", [
341
+ "all three of appURL, displayImageURL and fullSizeImageURL are required",
342
+ "a partial manifest exports without error and cannot be installed",
343
+ ]);
344
+ }
345
+ return manifest;
346
+ }
347
+ const ICLOUD_ENVIRONMENTS = ["Development", "Production"];
348
+ /**
349
+ * The entitlement value is case-sensitive and the options "vary depending on
350
+ * the type of provisioning profile used", per xcodebuild's own help -- so fix
351
+ * the case of the two everybody means and pass anything else through rather
352
+ * than rejecting a value this tool cannot know is invalid.
353
+ */
354
+ function icloudEnvironment(args) {
355
+ const value = getFlag(args, "--icloud-env");
356
+ if (value === undefined)
357
+ return undefined;
358
+ return (ICLOUD_ENVIRONMENTS.find((name) => name.toLowerCase() === value.toLowerCase()) ?? value);
359
+ }
360
+ /**
361
+ * Xcode spells its two named thinning options with angle brackets around them
362
+ * -- `<none>` and `<thin-for-all-variants>` -- which is not a thing anyone
363
+ * types on purpose, and a device model identifier without. Accept both
364
+ * spellings of the named ones and pass a model through untouched.
365
+ */
366
+ function thinningOf(args) {
367
+ const value = getFlag(args, "--thinning");
368
+ if (value === undefined)
369
+ return undefined;
370
+ const bare = value.replace(/^<|>$/g, "");
371
+ return bare === "none" || bare === "thin-for-all-variants"
372
+ ? `<${bare}>`
373
+ : value;
374
+ }
192
375
  function writeGeneratedPlist(args, method) {
193
376
  const dir = mkdtempSync(join(tmpdir(), "xcodebuild-axi-export-"));
194
377
  const path = join(dir, "ExportOptions.plist");
@@ -1 +1 @@
1
- {"version":3,"file":"export.js","sourceRoot":"","sources":["../../../src/commands/export.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,QAAQ,EACR,UAAU,EACV,cAAc,EACd,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,SAAS,GACV,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE/E,MAAM,CAAC,MAAM,WAAW,GAAG;;;4BAGC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;EAWnD,cAAc;;;;;;;;;;;;;CAaf,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,UAAU;IACV,QAAQ;IACR,WAAW;IACX,UAAU;IACV,iBAAiB;IACjB,UAAU;IACV,qBAAqB;IACrB,qBAAqB;IACrB,aAAa;IACb,sBAAsB;IACtB,iBAAiB;IACjB,GAAG,UAAU;CACL,CAAC;AAEX,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,UAAU;IACV,QAAQ;IACR,WAAW;IACX,UAAU;IACV,iBAAiB;IACjB,iBAAiB;IACjB,GAAG,gBAAgB;CACX,CAAC;AAEX,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAc;IAChD,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;IAErE,MAAM,CAAC,UAAU,CAAC,GAAG,WAAW,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;IAC3D,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,QAAQ,CAChB,sCAAsC,EACtC,kBAAkB,EAClB;YACE,iEAAiE;YACjE,mDAAmD;SACpD,CACF,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;IACrD,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,QAAQ,CAAC,iBAAiB,UAAU,EAAE,EAAE,kBAAkB,EAAE;YACpE,4DAA4D;SAC7D,CAAC,CAAC;IACL,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAE/C,IAAI,CAAC,SAAS,IAAI,MAAM,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QACpE,MAAM,IAAI,QAAQ,CAChB,oCAAoC,EACpC,kBAAkB,EAClB;YACE,kBAAkB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC7C,iEAAiE;SAClE,CACF,CAAC;IACJ,CAAC;IAED,IACE,MAAM,KAAK,SAAS;QACpB,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAyC,CAAC,EACnE,CAAC;QACD,MAAM,IAAI,QAAQ,CAChB,0BAA0B,MAAM,GAAG,EACnC,kBAAkB,EAClB,CAAC,kBAAkB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAChD,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC5C,IAAI,SAAS,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC3C,MAAM,IAAI,QAAQ,CAChB,oEAAoE,EACpE,kBAAkB,EAClB;YACE,uEAAuE;YACvE,8CAA8C;SAC/C,CACF,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,UAAU,GACd,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC;QACzB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAElE,MAAM,SAAS,GACb,WAAW,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAE1E,4EAA4E;IAC5E,6EAA6E;IAC7E,0EAA0E;IAC1E,yDAAyD;IACzD,MAAM,sBAAsB,GAC1B,SAAS;QACT,CAAC,SAAS,KAAK,SAAS,IAAI,YAAY,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAE7E,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC;QACzB,IAAI,EAAE;YACJ,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,gBAAgB;YACpD,cAAc;YACd,WAAW;YACX,aAAa;YACb,UAAU;YACV,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,sBAAsB,CAAC;gBACvC,CAAC,CAAC,CAAC,2BAA2B,CAAC;gBAC/B,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;SAC5B;QACD,KAAK,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,SAAS;QAC1C,OAAO;QACP,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChE,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,KAAK,CAAC,CAAC;IAErC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE;gBAC9C,GAAG,MAAM,CAAC,WAAW;gBACrB,oBAAoB,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;aAC7C,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAE3D,MAAM,MAAM,GAAG;QACb,YAAY,CAAC;YACX,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;YAC1C,OAAO,EAAE,SAAS,CAAC,WAAW,CAAC;YAC/B,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;SAChC,CAAC;KACH,CAAC;IAEF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC;SAAM,IAAI,SAAS,IAAI,sBAAsB,EAAE,CAAC;QAC/C,uEAAuE;QACvE,kDAAkD;QAClD,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,iCAAiC,EAAE,CAAC,CAAC,CAAC;IAC7E,CAAC;SAAM,IAAI,SAAS,EAAE,CAAC;QACrB,yEAAyE;QACzE,wEAAwE;QACxE,MAAM,CAAC,IAAI,CACT,YAAY,CAAC,EAAE,QAAQ,EAAE,sBAAsB,SAAS,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAC1E,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAE3D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,MAAM,CAAC,IAAI,CACT,UAAU,CAAC;YACT,8FAA8F;SAC/F,CAAC,CACH,CAAC;IACJ,CAAC;IAED,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,IAAc,EACd,MAAc;IAEd,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACrC,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;IACtD,OAAO;QACL,MAAM;QACN,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,qBAAqB,CAAC;YACtC,CAAC,CAAC,EAAE,8BAA8B,EAAE,KAAK,EAAE;YAC3C,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAc,EAAE,MAAc;IACzD,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;IAC9C,aAAa,CAAC,IAAI,EAAE,kBAAkB,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC7E,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,OAAO,iEAAiE,CAAC,IAAI,CAC3E,QAAQ,CACT,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,UAAkB;IACtC,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC;IAChE,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC,OAAO,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1E,CAAC"}
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../../src/commands/export.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- export declare const INFO_HELP = "usage: xcodebuild-axi info [flags]\nReports the toolchain this machine will build with.\nflags[2]:\n --sdks list every installed SDK\n --platform <name> filter the SDK list, e.g. iphoneos\nexamples:\n xcodebuild-axi info\n xcodebuild-axi info --sdks --platform iphonesimulator\n";
2
- export declare const INFO_FLAGS: readonly ["--sdks", "--platform"];
1
+ export declare const INFO_HELP = "usage: xcodebuild-axi info [flags]\nReports the toolchain this machine will build with.\nflags[3]:\n --sdks list every installed SDK\n --platform <name> filter the SDK list, e.g. iphoneos\n --sdk <name> everything about one SDK: its path, platform, and versions\nnote:\n --sdks answers \"which SDKs are here\", --sdk answers \"where is this one and\n what is in it\" -- the paths a build script needs and the build version an\n agent is asked to report. A canonical name (iphonesimulator27.0) or a bare\n platform name (iphonesimulator) both work.\nexamples:\n xcodebuild-axi info\n xcodebuild-axi info --sdks --platform iphonesimulator\n xcodebuild-axi info --sdk iphonesimulator\n";
2
+ export declare const INFO_FLAGS: readonly ["--sdks", "--platform", "--sdk"];
3
3
  export declare function infoCommand(args: string[]): Promise<string>;
@@ -1,20 +1,31 @@
1
1
  import { execFile } from "node:child_process";
2
+ import { AxiError } from "../errors.js";
2
3
  import { runMetadata } from "../xcodebuild.js";
3
4
  import { listSimulators } from "../simctl.js";
4
5
  import { renderFields, renderHelp, renderOutput, tildePath } from "../toon.js";
5
6
  import { getFlag, hasFlag, rejectUnknownFlags } from "../args.js";
6
7
  export const INFO_HELP = `usage: xcodebuild-axi info [flags]
7
8
  Reports the toolchain this machine will build with.
8
- flags[2]:
9
+ flags[3]:
9
10
  --sdks list every installed SDK
10
11
  --platform <name> filter the SDK list, e.g. iphoneos
12
+ --sdk <name> everything about one SDK: its path, platform, and versions
13
+ note:
14
+ --sdks answers "which SDKs are here", --sdk answers "where is this one and
15
+ what is in it" -- the paths a build script needs and the build version an
16
+ agent is asked to report. A canonical name (iphonesimulator27.0) or a bare
17
+ platform name (iphonesimulator) both work.
11
18
  examples:
12
19
  xcodebuild-axi info
13
20
  xcodebuild-axi info --sdks --platform iphonesimulator
21
+ xcodebuild-axi info --sdk iphonesimulator
14
22
  `;
15
- export const INFO_FLAGS = ["--sdks", "--platform"];
23
+ export const INFO_FLAGS = ["--sdks", "--platform", "--sdk"];
16
24
  export async function infoCommand(args) {
17
- rejectUnknownFlags(args, "info", INFO_FLAGS, ["--platform"]);
25
+ rejectUnknownFlags(args, "info", INFO_FLAGS, ["--platform", "--sdk"]);
26
+ const named = getFlag(args, "--sdk");
27
+ if (named !== undefined)
28
+ return reportSdk(named);
18
29
  const [version, developerDir, sdks, simulators] = await Promise.all([
19
30
  readVersion(),
20
31
  readDeveloperDir(),
@@ -63,6 +74,48 @@ export async function infoCommand(args) {
63
74
  renderHelp(["Run `xcodebuild-axi info --sdks` to list the installed SDKs"]),
64
75
  ]);
65
76
  }
77
+ /**
78
+ * One SDK, in full.
79
+ *
80
+ * `xcodebuild -version -sdk <name> <infoitem>` answers one field per
81
+ * invocation and only if you already know the field names; the JSON form
82
+ * carries all of them, so this asks once and reports the lot.
83
+ */
84
+ async function reportSdk(name) {
85
+ const { stdout } = await runMetadata(["-version", "-sdk", name, "-json"]);
86
+ const start = stdout.indexOf("[");
87
+ let parsed = [];
88
+ if (start !== -1) {
89
+ try {
90
+ parsed = JSON.parse(stdout.slice(start));
91
+ }
92
+ catch {
93
+ parsed = [];
94
+ }
95
+ }
96
+ const sdk = parsed[0];
97
+ if (!sdk) {
98
+ // xcodebuild exits *zero* for an SDK it cannot locate, so the absence of a
99
+ // payload is the only signal that the name was wrong.
100
+ throw new AxiError(`No SDK named '${name}'`, "NOT_FOUND", [
101
+ "Run `xcodebuild-axi info --sdks` to list the installed SDKs",
102
+ ]);
103
+ }
104
+ return renderOutput([
105
+ renderFields({
106
+ sdk: sdk.canonicalName ?? name,
107
+ ...(sdk.displayName ? { name: sdk.displayName } : {}),
108
+ ...(sdk.platform ? { platform: sdk.platform } : {}),
109
+ ...(sdk.sdkVersion ? { sdk_version: sdk.sdkVersion } : {}),
110
+ ...(sdk.productVersion ? { product_version: sdk.productVersion } : {}),
111
+ ...(sdk.productBuildVersion ? { build: sdk.productBuildVersion } : {}),
112
+ ...(sdk.sdkPath ? { path: tildePath(sdk.sdkPath) } : {}),
113
+ ...(sdk.platformPath
114
+ ? { platform_path: tildePath(sdk.platformPath) }
115
+ : {}),
116
+ }),
117
+ ]);
118
+ }
66
119
  async function readVersion() {
67
120
  const { stdout } = await runMetadata(["-version"]);
68
121
  const lines = stdout.trim().split("\n");
@@ -1 +1 @@
1
- {"version":3,"file":"info.js","sourceRoot":"","sources":["../../../src/commands/info.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../../src/commands/info.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,19 @@
1
- import { type BuildResults } from "../xcresult.js";
2
- 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";
3
- export declare const RESULT_FLAGS: readonly ["--failures", "--warnings", "--max", "--full"];
1
+ import { type BuildResults, type TestNode } from "../xcresult.js";
2
+ 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[12]:\n --failures failures and errors only\n --warnings include the full warning list\n --tests every test the run recorded, as the tree Xcode groups them into\n --insights Xcode's own diagnosis: what failed together, and what was slow\n --activities what one test did, step by step; needs --test\n --metrics what the performance tests measured; --test narrows it\n --log <type> the stored build, action, or console log, as timed sections\n --available what this bundle holds at all: coverage, logs, test results\n --metadata when the bundle was written, and in what format\n --test <id> the test --activities or --metrics is about\n --max <n> rows to list before summarizing the rest (default: 20)\n --full untruncated messages\nnote:\n Everything here reads the bundle a run already wrote, so none of it rebuilds\n anything. --available is the cheapest first question about a bundle from\n somewhere else: it says whether there is coverage or a log to ask for,\n instead of letting you find out by failing to read one.\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 xcodebuild-axi result build/MyApp.xcresult --log build --max 10\n xcodebuild-axi result build/MyApp.xcresult --activities --test MyAppTests/CheckoutTests/testTotal\n";
3
+ export declare const RESULT_FLAGS: readonly ["--failures", "--warnings", "--tests", "--insights", "--activities", "--metrics", "--log", "--available", "--metadata", "--test", "--max", "--full"];
4
4
  export declare function resultCommand(args: string[]): Promise<string>;
5
+ /**
6
+ * The test tree, flattened to one row per test case.
7
+ *
8
+ * Xcode nests plan -> target -> suite -> case, and printing that as a tree
9
+ * costs more tokens than it explains. The identifier already carries the
10
+ * hierarchy, so the rows carry the identifier and the verdict.
11
+ */
12
+ export declare function flattenTests(nodes: TestNode[] | undefined): Array<{
13
+ test: string;
14
+ result: string;
15
+ duration: string;
16
+ }>;
5
17
  /**
6
18
  * The header a non-test bundle reports. A build bundle carries every field the
7
19
  * test-shaped query lacks: `actionTitle` names the action xcodebuild ran,