xcodebuild-axi 0.1.8 → 0.1.9

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 (38) hide show
  1. package/CHANGELOG.md +88 -2
  2. package/README.md +55 -76
  3. package/dist/src/action.d.ts +8 -0
  4. package/dist/src/action.js +37 -30
  5. package/dist/src/action.js.map +1 -1
  6. package/dist/src/commands/archive.js +1 -1
  7. package/dist/src/commands/archive.js.map +1 -1
  8. package/dist/src/commands/clean.d.ts +2 -2
  9. package/dist/src/commands/clean.js +33 -3
  10. package/dist/src/commands/clean.js.map +1 -1
  11. package/dist/src/commands/packages.d.ts +2 -2
  12. package/dist/src/commands/packages.js +17 -6
  13. package/dist/src/commands/packages.js.map +1 -1
  14. package/dist/src/commands/result.js +3 -9
  15. package/dist/src/commands/result.js.map +1 -1
  16. package/dist/src/commands/settings.d.ts +7 -2
  17. package/dist/src/commands/settings.js +134 -20
  18. package/dist/src/commands/settings.js.map +1 -1
  19. package/dist/src/commands/test.js +9 -13
  20. package/dist/src/commands/test.js.map +1 -1
  21. package/dist/src/commands/tests.d.ts +2 -2
  22. package/dist/src/commands/tests.js +19 -7
  23. package/dist/src/commands/tests.js.map +1 -1
  24. package/dist/src/errors.js +10 -0
  25. package/dist/src/errors.js.map +1 -1
  26. package/dist/src/report.d.ts +22 -1
  27. package/dist/src/report.js +40 -0
  28. package/dist/src/report.js.map +1 -1
  29. package/dist/src/scheme.d.ts +34 -0
  30. package/dist/src/scheme.js +46 -0
  31. package/dist/src/scheme.js.map +1 -1
  32. package/dist/src/surface.d.ts +1 -0
  33. package/dist/src/surface.js +20 -64
  34. package/dist/src/surface.js.map +1 -1
  35. package/dist/src/xcresult.d.ts +42 -0
  36. package/dist/src/xcresult.js +41 -0
  37. package/dist/src/xcresult.js.map +1 -1
  38. package/package.json +1 -1
@@ -2,23 +2,53 @@ import { reportAction, resolveBuildContext, runAction } from "../action.js";
2
2
  import { getFlag, rejectUnknownFlags } from "../args.js";
3
3
  export const CLEAN_HELP = `usage: xcodebuild-axi clean [flags]
4
4
  Removes a scheme's build products and intermediates.
5
- flags[3]:
5
+ flags[14]:
6
6
  --scheme <name> scheme to clean (required only when the project has more than one)
7
+ --target <name> clean a target instead of a scheme; repeatable (project only)
8
+ --all-targets clean every target in the project (project only)
7
9
  --configuration <name> configuration to clean (default: the scheme's own)
10
+ --destination <spec> raw xcodebuild destination specifier, passed through untouched
11
+ --device <name> clean the products for this simulator or device by name
12
+ --destination-timeout <secs> how long to wait for the destination device
13
+ --sdk <name> base SDK whose products to clean, e.g. iphonesimulator
14
+ --arch <arch> architecture to clean; repeatable or comma-separated
15
+ --toolchain <name> toolchain identifier or name
16
+ --xcconfig <path> apply build settings from this file as overrides
8
17
  --derived-data <path> derived data directory to clean within
18
+ --artifacts-dir <path> where to write this run's log and .xcresult (default: the tool's cache)
19
+ --log-level <level> quiet, normal, or verbose — how much lands in the log file
20
+ note:
21
+ A clean is scoped by the same things a build is. Without a destination or an
22
+ --sdk it cleans the products for xcodebuild's default, which is not what a
23
+ simulator build wrote -- so "cleaned" and "still there" are both true answers
24
+ to different questions.
9
25
  examples:
10
26
  xcodebuild-axi clean
11
27
  xcodebuild-axi clean --scheme MyApp --configuration Release
28
+ xcodebuild-axi clean --all-targets --derived-data build/dd
12
29
  `;
13
30
  export const CLEAN_FLAGS = [
14
31
  "--scheme",
32
+ "--target",
33
+ "--all-targets",
15
34
  "--configuration",
35
+ "--destination",
36
+ "--device",
37
+ "--destination-timeout",
38
+ "--sdk",
39
+ "--arch",
40
+ "--toolchain",
41
+ "--xcconfig",
16
42
  "--derived-data",
43
+ "--artifacts-dir",
44
+ "--log-level",
17
45
  ];
46
+ const VALUE_FLAGS = CLEAN_FLAGS.filter((flag) => flag !== "--all-targets");
18
47
  export async function cleanCommand(args) {
19
- rejectUnknownFlags(args, "clean", CLEAN_FLAGS, CLEAN_FLAGS);
48
+ rejectUnknownFlags(args, "clean", CLEAN_FLAGS, VALUE_FLAGS);
20
49
  // Cleaning needs no destination, and resolving one costs a whole
21
- // `-showdestinations` subprocess against a scheme we are about to wipe.
50
+ // `-showdestinations` subprocess against a scheme we are about to wipe. One
51
+ // named explicitly is still resolved, because then it is the answer.
22
52
  const context = await resolveBuildContext({
23
53
  args,
24
54
  command: "clean",
@@ -1 +1 @@
1
- {"version":3,"file":"clean.js","sourceRoot":"","sources":["../../../src/commands/clean.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;CASzB,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,UAAU;IACV,iBAAiB;IACjB,gBAAgB;CACR,CAAC;AAEX,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAc;IAC/C,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAE5D,iEAAiE;IACjE,wEAAwE;IACxE,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;QACxC,IAAI;QACJ,OAAO,EAAE,OAAO;QAChB,gBAAgB,EAAE,KAAK;KACxB,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC;QAC1B,OAAO;QACP,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,CAAC,OAAO,CAAC;KACnB,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC;QAClB,OAAO;QACP,GAAG;QACH,GAAG,EAAE,OAAO;QACZ,EAAE,EAAE,WAAW;QACf,OAAO,EAAE,OAAO;QAChB,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,iBAAiB,CAAC,KAAK,SAAS;YAChD,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,OAAO,CAAC,IAAI,EAAE,iBAAiB,CAAW,EAAE,EAAE;YAC1E,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"clean.js","sourceRoot":"","sources":["../../../src/commands/clean.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BzB,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,UAAU;IACV,UAAU;IACV,eAAe;IACf,iBAAiB;IACjB,eAAe;IACf,UAAU;IACV,uBAAuB;IACvB,OAAO;IACP,QAAQ;IACR,aAAa;IACb,YAAY;IACZ,gBAAgB;IAChB,iBAAiB;IACjB,aAAa;CACL,CAAC;AAEX,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CACpC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,eAAe,CACd,CAAC;AAEvB,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAc;IAC/C,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IAE5D,iEAAiE;IACjE,4EAA4E;IAC5E,qEAAqE;IACrE,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;QACxC,IAAI;QACJ,OAAO,EAAE,OAAO;QAChB,gBAAgB,EAAE,KAAK;KACxB,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC;QAC1B,OAAO;QACP,OAAO,EAAE,OAAO;QAChB,OAAO,EAAE,CAAC,OAAO,CAAC;KACnB,CAAC,CAAC;IAEH,OAAO,YAAY,CAAC;QAClB,OAAO;QACP,GAAG;QACH,GAAG,EAAE,OAAO;QACZ,EAAE,EAAE,WAAW;QACf,OAAO,EAAE,OAAO;QAChB,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,iBAAiB,CAAC,KAAK,SAAS;YAChD,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,OAAO,CAAC,IAAI,EAAE,iBAAiB,CAAW,EAAE,EAAE;YAC1E,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;AACL,CAAC"}
@@ -1,3 +1,3 @@
1
- export declare const PACKAGES_HELP = "usage: xcodebuild-axi packages [flags]\nReports the Swift package versions this project is pinned to, read straight\nfrom Package.resolved \u2014 no build, no subprocess.\nflags[17]:\n --resolve actually resolve dependencies first (network, slow)\n --filter <text> only packages whose identity contains this\n --scheme <name> with --resolve against a workspace: the scheme to resolve for\n --offline resolve using only the versions already in Package.resolved\n --cache <path> clone remote packages into this directory\n --package-cache <path> shared package cache directory (across projects)\n --no-auto-resolve never resolve automatically; fail if Package.resolved is stale\n --skip-package-updates use the packages already cloned, without checking for updates\n --no-package-cache ignore the shared package repository cache\n --skip-plugin-validation trust build plugins without prompting\n --skip-signature-validation do not verify package signatures\n --package-auth <kind> keychain or netrc\n --registry-url <url> default package registry\n --scm-to-registry <kind> none, identity, or swift-package-registry\n --fingerprint-policy <kind> strict or warn\n --signing-entity-policy <kind> strict or warn\n --scm-provider <kind> system or xcode\nnote:\n The resolution flags only matter alongside --resolve; reading the pins is a\n file read either way.\nexamples:\n xcodebuild-axi packages\n xcodebuild-axi packages --filter swift-composable\n xcodebuild-axi packages --resolve --offline\n";
2
- export declare const PACKAGES_FLAGS: readonly ["--resolve", "--filter", "--scheme", "--offline", "--cache", "--package-cache", "--no-auto-resolve", "--skip-package-updates", "--no-package-cache", "--skip-plugin-validation", "--skip-signature-validation", "--package-auth", "--registry-url", "--scm-to-registry", "--fingerprint-policy", "--signing-entity-policy", "--scm-provider"];
1
+ export declare const PACKAGES_HELP = "usage: xcodebuild-axi packages [flags]\nReports the Swift package versions this project is pinned to, read straight\nfrom Package.resolved \u2014 no build, no subprocess.\nflags[18]:\n --resolve actually resolve dependencies first (network, slow)\n --filter <text> only packages whose identity contains this\n --scheme <name> with --resolve against a workspace: the scheme to resolve for\n --derived-data <path> with --resolve: derived data directory to resolve into\n --offline resolve using only the versions already in Package.resolved\n --cache <path> clone remote packages into this directory\n --package-cache <path> shared package cache directory (across projects)\n --no-auto-resolve never resolve automatically; fail if Package.resolved is stale\n --skip-package-updates use the packages already cloned, without checking for updates\n --no-package-cache ignore the shared package repository cache\n --skip-plugin-validation trust build plugins without prompting\n --skip-signature-validation do not verify package signatures\n --package-auth <kind> keychain or netrc\n --registry-url <url> default package registry\n --scm-to-registry <kind> none, identity, or swift-package-registry\n --fingerprint-policy <kind> strict or warn\n --signing-entity-policy <kind> strict or warn\n --scm-provider <kind> system or xcode\nnote:\n The resolution flags only matter alongside --resolve; reading the pins is a\n file read either way.\nexamples:\n xcodebuild-axi packages\n xcodebuild-axi packages --filter swift-composable\n xcodebuild-axi packages --resolve --offline\n";
2
+ export declare const PACKAGES_FLAGS: readonly ["--resolve", "--filter", "--scheme", "--derived-data", "--offline", "--cache", "--package-cache", "--no-auto-resolve", "--skip-package-updates", "--no-package-cache", "--skip-plugin-validation", "--skip-signature-validation", "--package-auth", "--registry-url", "--scm-to-registry", "--fingerprint-policy", "--signing-entity-policy", "--scm-provider"];
3
3
  export declare function packagesCommand(args: string[]): Promise<string>;
@@ -8,10 +8,11 @@ import { getFlag, hasFlag, rejectUnknownFlags } from "../args.js";
8
8
  export const PACKAGES_HELP = `usage: xcodebuild-axi packages [flags]
9
9
  Reports the Swift package versions this project is pinned to, read straight
10
10
  from Package.resolved — no build, no subprocess.
11
- flags[17]:
11
+ flags[18]:
12
12
  --resolve actually resolve dependencies first (network, slow)
13
13
  --filter <text> only packages whose identity contains this
14
14
  --scheme <name> with --resolve against a workspace: the scheme to resolve for
15
+ --derived-data <path> with --resolve: derived data directory to resolve into
15
16
  ${PACKAGE_FLAG_HELP}
16
17
  note:
17
18
  The resolution flags only matter alongside --resolve; reading the pins is a
@@ -25,18 +26,27 @@ export const PACKAGES_FLAGS = [
25
26
  "--resolve",
26
27
  "--filter",
27
28
  "--scheme",
29
+ "--derived-data",
28
30
  ...PACKAGE_FLAGS,
29
31
  ];
30
- const VALUE_FLAGS = ["--filter", "--scheme", ...PACKAGE_VALUE_FLAGS];
32
+ const VALUE_FLAGS = [
33
+ "--filter",
34
+ "--scheme",
35
+ "--derived-data",
36
+ ...PACKAGE_VALUE_FLAGS,
37
+ ];
31
38
  export async function packagesCommand(args) {
32
39
  rejectUnknownFlags(args, "packages", PACKAGES_FLAGS, VALUE_FLAGS);
33
40
  const project = requireProject();
34
41
  const blocks = [];
35
42
  if (hasFlag(args, "--resolve")) {
36
- // xcodebuild refuses `-resolvePackageDependencies -workspace` without a
37
- // scheme, and says so only after loading the whole workspace. Resolve one
38
- // up front `requireScheme` picks it automatically when there is only one.
39
- const scheme = project.kind === "workspace"
43
+ // Two reasons xcodebuild needs a scheme named up front: it refuses
44
+ // `-resolvePackageDependencies -workspace` without one and says so only
45
+ // after loading the whole workspace, and it refuses `-derivedDataPath`
46
+ // without one at all. `requireScheme` picks it when there is only one, so
47
+ // neither refusal has to reach the caller.
48
+ const derivedData = getFlag(args, "--derived-data");
49
+ const scheme = project.kind === "workspace" || derivedData !== undefined
40
50
  ? await requireScheme(project, getFlag(args, "--scheme"), "packages --resolve")
41
51
  : getFlag(args, "--scheme");
42
52
  const run = await runBuild({
@@ -44,6 +54,7 @@ export async function packagesCommand(args) {
44
54
  ...project.flags,
45
55
  ...(scheme ? ["-scheme", scheme] : []),
46
56
  "-resolvePackageDependencies",
57
+ ...(derivedData ? ["-derivedDataPath", derivedData] : []),
47
58
  ...packageArgs(args),
48
59
  ],
49
60
  label: `${project.name}-resolve`,
@@ -1 +1 @@
1
- {"version":3,"file":"packages.js","sourceRoot":"","sources":["../../../src/commands/packages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"packages.js","sourceRoot":"","sources":["../../../src/commands/packages.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { AxiError } from "../errors.js";
2
2
  import { resolve } from "node:path";
3
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";
4
+ import { diagnosticsBlock, failureRows } from "../report.js";
5
+ import { duration, renderFields, renderHelp, renderList, renderOutput, tildePath, } from "../toon.js";
6
6
  import { getIntFlag, hasFlag, positionals, rejectUnknownFlags, } from "../args.js";
7
7
  export const RESULT_HELP = `usage: xcodebuild-axi result <path.xcresult> [flags]
8
8
  Re-reads a result bundle that a previous run wrote, without rebuilding.
@@ -63,13 +63,7 @@ export async function resultCommand(args) {
63
63
  }));
64
64
  const failures = summary.testFailures ?? [];
65
65
  if (failures.length > 0) {
66
- const shown = failures.slice(0, max).map((failure) => ({
67
- test: failure.testIdentifierString ?? failure.testName ?? "unknown",
68
- target: failure.targetName ?? "",
69
- message: full
70
- ? (failure.failureText ?? "").replace(/\s+/g, " ").trim()
71
- : truncate((failure.failureText ?? "").replace(/\s+/g, " ").trim(), 300).text,
72
- }));
66
+ const shown = await failureRows(path, failures, { max, full });
73
67
  blocks.push(renderList(failures.length > shown.length
74
68
  ? `failures (${shown.length} of ${failures.length})`
75
69
  : "failures", shown));
@@ -1 +1 @@
1
- {"version":3,"file":"result.js","sourceRoot":"","sources":["../../../src/commands/result.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"result.js","sourceRoot":"","sources":["../../../src/commands/result.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,11 @@
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[10]:\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 --device <name> resolve against a simulator or device by name, e.g. \"iPhone 17 Pro\"\n --destination <spec> raw xcodebuild destination specifier, passed through untouched\n --sdk <name> base SDK to resolve against, e.g. iphonesimulator\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 Paths and platform names are destination-dependent. With no --device,\n --destination or --sdk, xcodebuild resolves against the default SDK, which is\n the *device* SDK -- so BUILT_PRODUCTS_DIR comes back under Debug-iphoneos\n while build and test default to a simulator. The reported platform names\n what the answer is for.\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 --device \"iPhone 17 Pro\" --key BUILT_PRODUCTS_DIR\n xcodebuild-axi settings --scheme MyApp --for-index --file MyApp/AppFeature.swift\n";
2
- export declare const SETTINGS_FLAGS: readonly ["--scheme", "--key", "--configuration", "--device", "--destination", "--sdk", "--all", "--for-index", "--file", "--full"];
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[18]:\n --scheme <name> scheme to resolve against (required only when the project has more than one)\n --target <name> resolve a target instead of a scheme; repeatable (project only)\n --all-targets resolve every target in the project (project only)\n --key <NAME> setting to read; repeatable or comma-separated\n --configuration <name> build configuration to resolve against\n --device <name> resolve against a simulator or device by name, e.g. \"iPhone 17 Pro\"\n --destination <spec> raw xcodebuild destination specifier, passed through untouched\n --destination-timeout <secs> how long to wait for the destination device\n --sdk <name> base SDK to resolve against, e.g. iphonesimulator\n --arch <arch> architecture to resolve against; repeatable or comma-separated\n --toolchain <name> toolchain identifier or name\n --xcconfig <path> apply this file's settings as overrides before resolving\n --derived-data <path> derived data directory, which the build paths are under\n --setting KEY=VALUE override a setting before resolving; repeatable or comma-separated\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 Paths and platform names are destination-dependent. With no --device,\n --destination or --sdk, xcodebuild resolves against the default SDK, which is\n the *device* SDK -- so BUILT_PRODUCTS_DIR comes back under Debug-iphoneos\n while build and test default to a simulator. The reported platform names\n what the answer is for.\n --setting and --xcconfig answer \"what would this be if I overrode that\",\n which is the question -showBuildSettings exists for. --derived-data matters\n because every build path -- BUILT_PRODUCTS_DIR and everything under it --\n hangs off it, so the default answer describes a directory CI does not use.\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 --target MyApp --key SWIFT_VERSION\n xcodebuild-axi settings --scheme MyApp --setting SWIFT_STRICT_CONCURRENCY=complete --key SWIFT_STRICT_CONCURRENCY\n xcodebuild-axi settings --scheme MyApp --key SWIFT_VERSION\n xcodebuild-axi settings --scheme MyApp --device \"iPhone 17 Pro\" --key BUILT_PRODUCTS_DIR\n xcodebuild-axi settings --scheme MyApp --for-index --file MyApp/AppFeature.swift\n";
2
+ export declare const SETTINGS_FLAGS: readonly ["--scheme", "--target", "--all-targets", "--key", "--configuration", "--device", "--destination", "--destination-timeout", "--sdk", "--arch", "--toolchain", "--xcconfig", "--derived-data", "--setting", "--all", "--for-index", "--file", "--full"];
3
3
  export declare function settingsCommand(args: string[]): Promise<string>;
4
+ /**
5
+ * xcodebuild's own one-line reason, which names the flag it objected to and is
6
+ * more specific than anything this command could infer from the arguments.
7
+ */
8
+ export declare function xcodebuildComplaint(stderr: string): string[];
4
9
  /**
5
10
  * Name the platform an answer is for. These settings are destination-dependent
6
11
  * and the destination is easy not to think about, so the report says which one
@@ -1,20 +1,28 @@
1
1
  import { AxiError } from "../errors.js";
2
2
  import { requireProject } from "../context.js";
3
- import { requireScheme } from "../scheme.js";
3
+ import { resolveSubject } from "../scheme.js";
4
4
  import { resolveDestination } from "../destination.js";
5
5
  import { runMetadata } from "../xcodebuild.js";
6
6
  import { renderFields, renderHelp, renderList, renderOutput } from "../toon.js";
7
- import { getFlag, getListFlag, hasFlag, rejectUnknownFlags } from "../args.js";
7
+ import { getFlag, getIntFlag, getListFlag, hasFlag, rejectUnknownFlags, } from "../args.js";
8
8
  export const SETTINGS_HELP = `usage: xcodebuild-axi settings [flags]
9
9
  Reads resolved build settings. Asking for the keys you want turns a 40 KB dump
10
10
  into a few lines.
11
- flags[10]:
11
+ flags[18]:
12
12
  --scheme <name> scheme to resolve against (required only when the project has more than one)
13
+ --target <name> resolve a target instead of a scheme; repeatable (project only)
14
+ --all-targets resolve every target in the project (project only)
13
15
  --key <NAME> setting to read; repeatable or comma-separated
14
16
  --configuration <name> build configuration to resolve against
15
17
  --device <name> resolve against a simulator or device by name, e.g. "iPhone 17 Pro"
16
18
  --destination <spec> raw xcodebuild destination specifier, passed through untouched
19
+ --destination-timeout <secs> how long to wait for the destination device
17
20
  --sdk <name> base SDK to resolve against, e.g. iphonesimulator
21
+ --arch <arch> architecture to resolve against; repeatable or comma-separated
22
+ --toolchain <name> toolchain identifier or name
23
+ --xcconfig <path> apply this file's settings as overrides before resolving
24
+ --derived-data <path> derived data directory, which the build paths are under
25
+ --setting KEY=VALUE override a setting before resolving; repeatable or comma-separated
18
26
  --all dump every setting (large — hundreds of keys)
19
27
  --for-index the per-source-file settings an indexer sees
20
28
  --file <path> with --for-index: the one source file to report on
@@ -25,23 +33,37 @@ note:
25
33
  the *device* SDK -- so BUILT_PRODUCTS_DIR comes back under Debug-iphoneos
26
34
  while build and test default to a simulator. The reported platform names
27
35
  what the answer is for.
36
+ --setting and --xcconfig answer "what would this be if I overrode that",
37
+ which is the question -showBuildSettings exists for. --derived-data matters
38
+ because every build path -- BUILT_PRODUCTS_DIR and everything under it --
39
+ hangs off it, so the default answer describes a directory CI does not use.
28
40
  --for-index answers a different question from the rest of this command: it
29
41
  reports the compiler invocation the indexer builds per source file. The raw
30
42
  payload measured 216 KB on a 12-scheme workspace, so without --file it
31
43
  reports only which targets have index settings and how many files each has.
32
44
  examples:
33
45
  xcodebuild-axi settings --key PRODUCT_BUNDLE_IDENTIFIER,MARKETING_VERSION
46
+ xcodebuild-axi settings --target MyApp --key SWIFT_VERSION
47
+ xcodebuild-axi settings --scheme MyApp --setting SWIFT_STRICT_CONCURRENCY=complete --key SWIFT_STRICT_CONCURRENCY
34
48
  xcodebuild-axi settings --scheme MyApp --key SWIFT_VERSION
35
49
  xcodebuild-axi settings --scheme MyApp --device "iPhone 17 Pro" --key BUILT_PRODUCTS_DIR
36
50
  xcodebuild-axi settings --scheme MyApp --for-index --file MyApp/AppFeature.swift
37
51
  `;
38
52
  export const SETTINGS_FLAGS = [
39
53
  "--scheme",
54
+ "--target",
55
+ "--all-targets",
40
56
  "--key",
41
57
  "--configuration",
42
58
  "--device",
43
59
  "--destination",
60
+ "--destination-timeout",
44
61
  "--sdk",
62
+ "--arch",
63
+ "--toolchain",
64
+ "--xcconfig",
65
+ "--derived-data",
66
+ "--setting",
45
67
  "--all",
46
68
  "--for-index",
47
69
  "--file",
@@ -49,11 +71,18 @@ export const SETTINGS_FLAGS = [
49
71
  ];
50
72
  const VALUE_FLAGS = [
51
73
  "--scheme",
74
+ "--target",
52
75
  "--key",
53
76
  "--configuration",
54
77
  "--device",
55
78
  "--destination",
79
+ "--destination-timeout",
56
80
  "--sdk",
81
+ "--arch",
82
+ "--toolchain",
83
+ "--xcconfig",
84
+ "--derived-data",
85
+ "--setting",
57
86
  "--file",
58
87
  ];
59
88
  export async function settingsCommand(args) {
@@ -68,9 +97,28 @@ export async function settingsCommand(args) {
68
97
  ]);
69
98
  }
70
99
  const project = requireProject();
71
- const scheme = await requireScheme(project, getFlag(args, "--scheme"), "settings");
100
+ const subject = await resolveSubject(project, {
101
+ ...(getFlag(args, "--scheme") !== undefined
102
+ ? { scheme: getFlag(args, "--scheme") }
103
+ : {}),
104
+ targets: getListFlag(args, "--target"),
105
+ allTargets: hasFlag(args, "--all-targets"),
106
+ }, "settings");
107
+ const scheme = subject.label;
72
108
  const configuration = getFlag(args, "--configuration");
73
109
  const sdk = getFlag(args, "--sdk");
110
+ const toolchain = getFlag(args, "--toolchain");
111
+ const xcconfig = getFlag(args, "--xcconfig");
112
+ const derivedData = getFlag(args, "--derived-data");
113
+ const destinationTimeout = getIntFlag(args, "--destination-timeout");
114
+ const overrides = getListFlag(args, "--setting");
115
+ for (const setting of overrides) {
116
+ if (!setting.includes("=")) {
117
+ throw new AxiError(`--setting expects KEY=VALUE, got '${setting}'`, "VALIDATION_ERROR", [
118
+ "xcodebuild-axi settings --setting SWIFT_VERSION=6 --key SWIFT_VERSION",
119
+ ]);
120
+ }
121
+ }
74
122
  // Without a destination xcodebuild resolves against the default *device*
75
123
  // SDK, so BUILT_PRODUCTS_DIR and PLATFORM_NAME describe a build that
76
124
  // `xcodebuild-axi build` -- which defaults to the newest simulator -- never
@@ -79,39 +127,94 @@ export async function settingsCommand(args) {
79
127
  // default answer does not move under anyone.
80
128
  const rawDestination = getFlag(args, "--destination");
81
129
  const device = getFlag(args, "--device");
82
- const destination = rawDestination !== undefined || device !== undefined
83
- ? await resolveDestination({
84
- project,
85
- scheme,
86
- ...(device !== undefined ? { device } : {}),
87
- ...(rawDestination !== undefined ? { raw: rawDestination } : {}),
88
- })
89
- : undefined;
90
- const { stdout } = await runMetadata([
130
+ // Destinations are listed per scheme, so target mode has nothing to resolve
131
+ // a device *name* against — a whole specifier still passes through.
132
+ if (subject.targetMode && device !== undefined) {
133
+ throw new AxiError("--device is resolved against a scheme, and --target names no scheme", "VALIDATION_ERROR", [
134
+ "Pass the whole specifier instead: --destination 'platform=iOS Simulator,name=iPhone 17 Pro'",
135
+ "Or resolve against a scheme with `--scheme <name>`",
136
+ ]);
137
+ }
138
+ const destination = subject.targetMode
139
+ ? rawDestination
140
+ : rawDestination !== undefined || device !== undefined
141
+ ? (await resolveDestination({
142
+ project,
143
+ scheme,
144
+ ...(device !== undefined ? { device } : {}),
145
+ ...(rawDestination !== undefined ? { raw: rawDestination } : {}),
146
+ })).specifier
147
+ : undefined;
148
+ const { stdout, stderr, exitCode } = await runMetadata([
91
149
  ...project.flags,
92
- "-scheme",
93
- scheme,
150
+ ...subject.flags,
94
151
  ...(configuration ? ["-configuration", configuration] : []),
95
- ...(destination ? ["-destination", destination.specifier] : []),
152
+ ...(destination ? ["-destination", destination] : []),
153
+ ...(destinationTimeout !== undefined
154
+ ? ["-destination-timeout", String(destinationTimeout)]
155
+ : []),
96
156
  ...(sdk ? ["-sdk", sdk] : []),
157
+ ...getListFlag(args, "--arch").flatMap((arch) => ["-arch", arch]),
158
+ ...(toolchain ? ["-toolchain", toolchain] : []),
159
+ ...(xcconfig ? ["-xcconfig", xcconfig] : []),
160
+ ...(derivedData ? ["-derivedDataPath", derivedData] : []),
97
161
  forIndex ? "-showBuildSettingsForIndex" : "-showBuildSettings",
98
162
  "-json",
163
+ // Overrides go last, the way xcodebuild reads `KEY=VALUE` arguments.
164
+ ...overrides,
99
165
  ]);
166
+ // A rejected combination of flags exits non-zero and still prints a JSON
167
+ // document -- an empty one. Parsing that and reporting every key as `unset`
168
+ // reads exactly like a correct answer about a target with no settings, so
169
+ // the refusal has to be surfaced rather than parsed past. xcodebuild
170
+ // rejects more combinations than this command can enumerate up front
171
+ // (`-derivedDataPath` without a scheme is one), so this is the general net.
172
+ if (exitCode !== 0) {
173
+ throw new AxiError(`xcodebuild could not resolve settings for ${subject.label}`, "VALIDATION_ERROR", [
174
+ ...xcodebuildComplaint(stderr),
175
+ ...(subject.targetMode
176
+ ? [
177
+ "Some options are only accepted alongside a scheme — try `--scheme <name>`",
178
+ ]
179
+ : []),
180
+ ]);
181
+ }
100
182
  if (forIndex) {
101
183
  return reportIndexSettings(stdout, scheme, getFlag(args, "--file"), hasFlag(args, "--full"));
102
184
  }
103
185
  const settings = parseSettings(stdout);
104
186
  const platform = platformOf(settings);
187
+ // `scheme: MyApp` is a lie when targets were named, and the label is the
188
+ // reader's only clue about which question was answered.
189
+ const subjectField = subject.targetMode ? { targets: scheme } : { scheme };
105
190
  if (all) {
106
191
  return renderOutput([
107
192
  renderFields({
108
- scheme,
193
+ ...subjectField,
109
194
  ...platform,
110
195
  settings: Object.keys(settings).length,
111
196
  }),
112
197
  renderFields({ ...settings }),
113
198
  ]);
114
199
  }
200
+ // xcodebuild answers `[]` -- exit 0, no targets -- when nothing in the
201
+ // scheme is buildable for the destination it resolved against. Running the
202
+ // per-key loop over that reports every key as `unset`, which is the same
203
+ // answer as a key that genuinely is not set, so the two have to be told
204
+ // apart before the loop rather than inside it.
205
+ if (Object.keys(settings).length === 0) {
206
+ return renderOutput([
207
+ renderFields({
208
+ ...subjectField,
209
+ settings: "none — xcodebuild resolved no targets to read settings from",
210
+ }),
211
+ renderHelp([
212
+ "-showBuildSettings answers with an empty list rather than an error, so this is not a failure",
213
+ "A Swift package's scheme resolves nothing here at all; a project scheme with no buildable for the resolved platform does the same",
214
+ `Run \`xcodebuild-axi settings ${subject.rerun} --destination <spec>\` to resolve against another platform`,
215
+ ]),
216
+ ]);
217
+ }
115
218
  const found = {};
116
219
  const missing = [];
117
220
  for (const key of keys) {
@@ -121,20 +224,31 @@ export async function settingsCommand(args) {
121
224
  else
122
225
  found[key] = value;
123
226
  }
124
- const blocks = [renderFields({ scheme, ...platform })];
227
+ const blocks = [renderFields({ ...subjectField, ...platform })];
125
228
  if (Object.keys(found).length > 0) {
126
229
  blocks.push(renderFields({ settings: found }));
127
230
  }
128
231
  if (missing.length > 0) {
129
232
  // A key that does not exist is an answer, not an error — say so plainly
130
233
  // rather than returning an empty block the agent has to re-query to trust.
131
- blocks.push(renderFields({ unset: missing.join(",") }));
234
+ blocks.push(renderFields({ unset: missing }));
132
235
  blocks.push(renderHelp([
133
- `Run \`xcodebuild-axi settings --scheme ${scheme} --all\` to see every key this scheme resolves`,
236
+ `Run \`xcodebuild-axi settings ${subject.rerun} --all\` to see every key this resolves`,
134
237
  ]));
135
238
  }
136
239
  return renderOutput(blocks);
137
240
  }
241
+ /**
242
+ * xcodebuild's own one-line reason, which names the flag it objected to and is
243
+ * more specific than anything this command could infer from the arguments.
244
+ */
245
+ export function xcodebuildComplaint(stderr) {
246
+ const line = stderr
247
+ .split("\n")
248
+ .map((entry) => entry.trim())
249
+ .find((entry) => entry.startsWith("xcodebuild: error:"));
250
+ return line ? [line.replace(/^xcodebuild: error:\s*/, "")] : [];
251
+ }
138
252
  /**
139
253
  * Name the platform an answer is for. These settings are destination-dependent
140
254
  * and the destination is easy not to think about, so the report says which one
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/commands/settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/commands/settings.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { AxiError, mapXcodebuildError } from "../errors.js";
2
- import { BUILD_FLAG_HELP, resolveBuildContext, runAction, SHARED_BUILD_FLAGS, SHARED_BUILD_VALUE_FLAGS, } from "../action.js";
2
+ import { BUILD_FLAG_HELP, resolveBuildContext, runAction, SHARED_BUILD_FLAGS, SHARED_BUILD_VALUE_FLAGS, subjectField, } from "../action.js";
3
3
  import { readBuildResults, readTestSummary, toDiagnostics, describeDevice, } from "../xcresult.js";
4
4
  import { readCoverage, percent } from "../xccov.js";
5
- import { diagnosticsBlock, transcriptTail } from "../report.js";
6
- import { duration, renderFields, renderHelp, renderList, renderOutput, tildePath, truncate, } from "../toon.js";
5
+ import { diagnosticsBlock, failureRows, transcriptTail } from "../report.js";
6
+ import { duration, renderFields, renderHelp, renderList, renderOutput, tildePath, } from "../toon.js";
7
7
  import { getFlag, getIntFlag, getListFlag, hasFlag, rejectUnknownFlags, } from "../args.js";
8
8
  export const TEST_HELP = `usage: xcodebuild-axi test [flags]
9
9
  Runs a scheme's tests and reports the counts plus only the failures.
@@ -225,7 +225,7 @@ async function renderTestsNeverRan(context, run) {
225
225
  renderFields({
226
226
  test: "failed",
227
227
  reason: "the build failed, so no test ran",
228
- scheme: context.scheme,
228
+ ...subjectField(context),
229
229
  ...(context.destination ? { destination: context.destination } : {}),
230
230
  duration: duration(run.seconds),
231
231
  }),
@@ -265,7 +265,7 @@ async function renderTestSummary(options) {
265
265
  const blocks = [
266
266
  renderFields({
267
267
  test: succeeded ? "passed" : "failed",
268
- scheme: context.scheme,
268
+ ...subjectField(context),
269
269
  destination: landed,
270
270
  // Slash-separated, not comma-separated: TOON quotes any scalar
271
271
  // containing a comma, and the quotes cost more than the commas saved.
@@ -278,14 +278,10 @@ async function renderTestSummary(options) {
278
278
  ];
279
279
  const failures = summary.testFailures ?? [];
280
280
  if (failures.length > 0) {
281
- const shown = failures.slice(0, options.maxFailures).map((failure) => ({
282
- test: failure.testIdentifierString ?? failure.testName ?? "unknown",
283
- target: failure.targetName ?? "",
284
- message: options.full
285
- ? (failure.failureText ?? "").replace(/\s+/g, " ").trim()
286
- : truncate((failure.failureText ?? "").replace(/\s+/g, " ").trim(), 300)
287
- .text,
288
- }));
281
+ const shown = await failureRows(run.resultPath, failures, {
282
+ max: options.maxFailures,
283
+ full: options.full,
284
+ });
289
285
  blocks.push(renderList(failures.length > shown.length
290
286
  ? `failures (${shown.length} of ${failures.length})`
291
287
  : "failures", shown));