@invarn/cibuild 2.9.6 → 2.9.8

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 (559) hide show
  1. package/dist/chunk-35SI42CD.mjs +1 -0
  2. package/dist/chunk-IC45KVLJ.mjs +1 -0
  3. package/dist/chunk-XDY4V23V.mjs +1 -0
  4. package/dist/cli.cjs +14 -14
  5. package/dist/commands.mjs +1 -0
  6. package/dist/lib.mjs +3934 -0
  7. package/package.json +6 -10
  8. package/dist/src/cli.d.ts +0 -3
  9. package/dist/src/cli.d.ts.map +0 -1
  10. package/dist/src/cli.js +0 -399
  11. package/dist/src/commands/a-credential-target-follows-the-flavor-source-set.test.d.ts +0 -38
  12. package/dist/src/commands/a-credential-target-follows-the-flavor-source-set.test.d.ts.map +0 -1
  13. package/dist/src/commands/a-credential-target-follows-the-flavor-source-set.test.js +0 -222
  14. package/dist/src/commands/a-credential-two-workflows-cannot-share-is-declared-per-workflow.test.d.ts +0 -41
  15. package/dist/src/commands/a-credential-two-workflows-cannot-share-is-declared-per-workflow.test.d.ts.map +0 -1
  16. package/dist/src/commands/a-credential-two-workflows-cannot-share-is-declared-per-workflow.test.js +0 -324
  17. package/dist/src/commands/a-properties-stand-in-declares-the-keys-the-build-reads.test.d.ts +0 -2
  18. package/dist/src/commands/a-properties-stand-in-declares-the-keys-the-build-reads.test.d.ts.map +0 -1
  19. package/dist/src/commands/a-properties-stand-in-declares-the-keys-the-build-reads.test.js +0 -382
  20. package/dist/src/commands/an-already-stored-value-does-not-answer-the-target-question.test.d.ts +0 -29
  21. package/dist/src/commands/an-already-stored-value-does-not-answer-the-target-question.test.d.ts.map +0 -1
  22. package/dist/src/commands/an-already-stored-value-does-not-answer-the-target-question.test.js +0 -160
  23. package/dist/src/commands/android-gms-guard.test.d.ts +0 -9
  24. package/dist/src/commands/android-gms-guard.test.d.ts.map +0 -1
  25. package/dist/src/commands/android-gms-guard.test.js +0 -78
  26. package/dist/src/commands/android-java-version.test.d.ts +0 -12
  27. package/dist/src/commands/android-java-version.test.d.ts.map +0 -1
  28. package/dist/src/commands/android-java-version.test.js +0 -209
  29. package/dist/src/commands/android-scanner-java.test.d.ts +0 -2
  30. package/dist/src/commands/android-scanner-java.test.d.ts.map +0 -1
  31. package/dist/src/commands/android-scanner-java.test.js +0 -130
  32. package/dist/src/commands/android-scanner.d.ts +0 -250
  33. package/dist/src/commands/android-scanner.d.ts.map +0 -1
  34. package/dist/src/commands/android-scanner.js +0 -1639
  35. package/dist/src/commands/build.d.ts +0 -215
  36. package/dist/src/commands/build.d.ts.map +0 -1
  37. package/dist/src/commands/build.js +0 -1433
  38. package/dist/src/commands/build.test.d.ts +0 -13
  39. package/dist/src/commands/build.test.d.ts.map +0 -1
  40. package/dist/src/commands/build.test.js +0 -121
  41. package/dist/src/commands/detect-platform.d.ts +0 -13
  42. package/dist/src/commands/detect-platform.d.ts.map +0 -1
  43. package/dist/src/commands/detect-platform.js +0 -51
  44. package/dist/src/commands/detect-project.d.ts +0 -7
  45. package/dist/src/commands/detect-project.d.ts.map +0 -1
  46. package/dist/src/commands/detect-project.js +0 -12
  47. package/dist/src/commands/each-flavor-is-asked-for-its-own-properties-file.test.d.ts +0 -26
  48. package/dist/src/commands/each-flavor-is-asked-for-its-own-properties-file.test.d.ts.map +0 -1
  49. package/dist/src/commands/each-flavor-is-asked-for-its-own-properties-file.test.js +0 -196
  50. package/dist/src/commands/edit.d.ts +0 -12
  51. package/dist/src/commands/edit.d.ts.map +0 -1
  52. package/dist/src/commands/edit.js +0 -652
  53. package/dist/src/commands/edit.test.d.ts +0 -6
  54. package/dist/src/commands/edit.test.d.ts.map +0 -1
  55. package/dist/src/commands/edit.test.js +0 -45
  56. package/dist/src/commands/fidelity-trim.d.ts +0 -13
  57. package/dist/src/commands/fidelity-trim.d.ts.map +0 -1
  58. package/dist/src/commands/fidelity-trim.js +0 -21
  59. package/dist/src/commands/fidelity-trim.test.d.ts +0 -8
  60. package/dist/src/commands/fidelity-trim.test.d.ts.map +0 -1
  61. package/dist/src/commands/fidelity-trim.test.js +0 -79
  62. package/dist/src/commands/file-secret-collector.d.ts +0 -50
  63. package/dist/src/commands/file-secret-collector.d.ts.map +0 -1
  64. package/dist/src/commands/file-secret-collector.js +0 -217
  65. package/dist/src/commands/flavors-a-convention-plugin-creates-are-still-found.test.d.ts +0 -38
  66. package/dist/src/commands/flavors-a-convention-plugin-creates-are-still-found.test.d.ts.map +0 -1
  67. package/dist/src/commands/flavors-a-convention-plugin-creates-are-still-found.test.js +0 -300
  68. package/dist/src/commands/github-workflow.d.ts +0 -5
  69. package/dist/src/commands/github-workflow.d.ts.map +0 -1
  70. package/dist/src/commands/github-workflow.js +0 -45
  71. package/dist/src/commands/index.d.ts +0 -33
  72. package/dist/src/commands/index.d.ts.map +0 -1
  73. package/dist/src/commands/index.js +0 -33
  74. package/dist/src/commands/init.d.ts +0 -20
  75. package/dist/src/commands/init.d.ts.map +0 -1
  76. package/dist/src/commands/init.js +0 -264
  77. package/dist/src/commands/ios-scanner.d.ts +0 -104
  78. package/dist/src/commands/ios-scanner.d.ts.map +0 -1
  79. package/dist/src/commands/ios-scanner.js +0 -492
  80. package/dist/src/commands/ios-scheme-ranking.test.d.ts +0 -2
  81. package/dist/src/commands/ios-scheme-ranking.test.d.ts.map +0 -1
  82. package/dist/src/commands/ios-scheme-ranking.test.js +0 -264
  83. package/dist/src/commands/local-properties-reaches-every-workflow.test.d.ts +0 -30
  84. package/dist/src/commands/local-properties-reaches-every-workflow.test.d.ts.map +0 -1
  85. package/dist/src/commands/local-properties-reaches-every-workflow.test.js +0 -146
  86. package/dist/src/commands/reset.d.ts +0 -7
  87. package/dist/src/commands/reset.d.ts.map +0 -1
  88. package/dist/src/commands/reset.js +0 -81
  89. package/dist/src/commands/run.d.ts +0 -22
  90. package/dist/src/commands/run.d.ts.map +0 -1
  91. package/dist/src/commands/run.js +0 -141
  92. package/dist/src/commands/secrets-sync-workflow.d.ts +0 -15
  93. package/dist/src/commands/secrets-sync-workflow.d.ts.map +0 -1
  94. package/dist/src/commands/secrets-sync-workflow.js +0 -255
  95. package/dist/src/commands/secrets-upload.d.ts +0 -21
  96. package/dist/src/commands/secrets-upload.d.ts.map +0 -1
  97. package/dist/src/commands/secrets-upload.js +0 -177
  98. package/dist/src/commands/secrets-upload.test.d.ts +0 -5
  99. package/dist/src/commands/secrets-upload.test.d.ts.map +0 -1
  100. package/dist/src/commands/secrets-upload.test.js +0 -60
  101. package/dist/src/commands/validate.d.ts +0 -10
  102. package/dist/src/commands/validate.d.ts.map +0 -1
  103. package/dist/src/commands/validate.js +0 -46
  104. package/dist/src/config.d.ts +0 -3
  105. package/dist/src/config.d.ts.map +0 -1
  106. package/dist/src/config.js +0 -47
  107. package/dist/src/envman/cli.d.ts +0 -21
  108. package/dist/src/envman/cli.d.ts.map +0 -1
  109. package/dist/src/envman/cli.js +0 -240
  110. package/dist/src/envman/envman.d.ts +0 -83
  111. package/dist/src/envman/envman.d.ts.map +0 -1
  112. package/dist/src/envman/envman.js +0 -361
  113. package/dist/src/envman/envman.test.d.ts +0 -5
  114. package/dist/src/envman/envman.test.d.ts.map +0 -1
  115. package/dist/src/envman/envman.test.js +0 -236
  116. package/dist/src/envman/envstore-round-trip.test.d.ts +0 -27
  117. package/dist/src/envman/envstore-round-trip.test.d.ts.map +0 -1
  118. package/dist/src/envman/envstore-round-trip.test.js +0 -130
  119. package/dist/src/envman/index.d.ts +0 -23
  120. package/dist/src/envman/index.d.ts.map +0 -1
  121. package/dist/src/envman/index.js +0 -23
  122. package/dist/src/envman/shim.d.ts +0 -16
  123. package/dist/src/envman/shim.d.ts.map +0 -1
  124. package/dist/src/envman/shim.js +0 -66
  125. package/dist/src/envman/types.d.ts +0 -55
  126. package/dist/src/envman/types.d.ts.map +0 -1
  127. package/dist/src/envman/types.js +0 -12
  128. package/dist/src/lib.d.ts +0 -33
  129. package/dist/src/lib.d.ts.map +0 -1
  130. package/dist/src/lib.js +0 -37
  131. package/dist/src/pipeline.d.ts +0 -3
  132. package/dist/src/pipeline.d.ts.map +0 -1
  133. package/dist/src/pipeline.js +0 -57
  134. package/dist/src/runner-node-step.test.d.ts +0 -12
  135. package/dist/src/runner-node-step.test.d.ts.map +0 -1
  136. package/dist/src/runner-node-step.test.js +0 -61
  137. package/dist/src/runner.d.ts +0 -31
  138. package/dist/src/runner.d.ts.map +0 -1
  139. package/dist/src/runner.js +0 -240
  140. package/dist/src/shared/detect-project.d.ts +0 -57
  141. package/dist/src/shared/detect-project.d.ts.map +0 -1
  142. package/dist/src/shared/detect-project.js +0 -219
  143. package/dist/src/shared/detect-project.test.d.ts +0 -2
  144. package/dist/src/shared/detect-project.test.d.ts.map +0 -1
  145. package/dist/src/shared/detect-project.test.js +0 -161
  146. package/dist/src/shared/git.d.ts +0 -25
  147. package/dist/src/shared/git.d.ts.map +0 -1
  148. package/dist/src/shared/git.js +0 -53
  149. package/dist/src/shared/git.test.d.ts +0 -9
  150. package/dist/src/shared/git.test.d.ts.map +0 -1
  151. package/dist/src/shared/git.test.js +0 -66
  152. package/dist/src/shared/gitignore.d.ts +0 -6
  153. package/dist/src/shared/gitignore.d.ts.map +0 -1
  154. package/dist/src/shared/gitignore.js +0 -26
  155. package/dist/src/shared/gradle-settings.d.ts +0 -49
  156. package/dist/src/shared/gradle-settings.d.ts.map +0 -1
  157. package/dist/src/shared/gradle-settings.js +0 -138
  158. package/dist/src/shared/gradle-settings.test.d.ts +0 -2
  159. package/dist/src/shared/gradle-settings.test.d.ts.map +0 -1
  160. package/dist/src/shared/gradle-settings.test.js +0 -65
  161. package/dist/src/shared/prompts.d.ts +0 -30
  162. package/dist/src/shared/prompts.d.ts.map +0 -1
  163. package/dist/src/shared/prompts.js +0 -121
  164. package/dist/src/shared/xcode-container.test.d.ts +0 -2
  165. package/dist/src/shared/xcode-container.test.d.ts.map +0 -1
  166. package/dist/src/shared/xcode-container.test.js +0 -123
  167. package/dist/src/step-marker.d.ts +0 -12
  168. package/dist/src/step-marker.d.ts.map +0 -1
  169. package/dist/src/step-marker.js +0 -29
  170. package/dist/src/step-marker.test.d.ts +0 -11
  171. package/dist/src/step-marker.test.d.ts.map +0 -1
  172. package/dist/src/step-marker.test.js +0 -45
  173. package/dist/src/types.d.ts +0 -58
  174. package/dist/src/types.d.ts.map +0 -1
  175. package/dist/src/types.js +0 -2
  176. package/dist/src/yaml/a-cache-path-must-not-swallow-a-credential.test.d.ts +0 -28
  177. package/dist/src/yaml/a-cache-path-must-not-swallow-a-credential.test.d.ts.map +0 -1
  178. package/dist/src/yaml/a-cache-path-must-not-swallow-a-credential.test.js +0 -223
  179. package/dist/src/yaml/a-declared-secret-reaches-the-file-step.test.d.ts +0 -20
  180. package/dist/src/yaml/a-declared-secret-reaches-the-file-step.test.d.ts.map +0 -1
  181. package/dist/src/yaml/a-declared-secret-reaches-the-file-step.test.js +0 -201
  182. package/dist/src/yaml/a-declared-slot-may-name-the-workflow-it-belongs-to.test.d.ts +0 -37
  183. package/dist/src/yaml/a-declared-slot-may-name-the-workflow-it-belongs-to.test.d.ts.map +0 -1
  184. package/dist/src/yaml/a-declared-slot-may-name-the-workflow-it-belongs-to.test.js +0 -255
  185. package/dist/src/yaml/a-missing-credential-is-loud.test.d.ts +0 -32
  186. package/dist/src/yaml/a-missing-credential-is-loud.test.d.ts.map +0 -1
  187. package/dist/src/yaml/a-missing-credential-is-loud.test.js +0 -301
  188. package/dist/src/yaml/a-runtime-requirement-names-a-real-provider.test.d.ts +0 -18
  189. package/dist/src/yaml/a-runtime-requirement-names-a-real-provider.test.d.ts.map +0 -1
  190. package/dist/src/yaml/a-runtime-requirement-names-a-real-provider.test.js +0 -66
  191. package/dist/src/yaml/a-scoped-slot-must-name-a-workflow-the-pipeline-has.test.d.ts +0 -34
  192. package/dist/src/yaml/a-scoped-slot-must-name-a-workflow-the-pipeline-has.test.d.ts.map +0 -1
  193. package/dist/src/yaml/a-scoped-slot-must-name-a-workflow-the-pipeline-has.test.js +0 -218
  194. package/dist/src/yaml/a-value-this-instance-stored-is-a-value-it-has.test.d.ts +0 -27
  195. package/dist/src/yaml/a-value-this-instance-stored-is-a-value-it-has.test.d.ts.map +0 -1
  196. package/dist/src/yaml/a-value-this-instance-stored-is-a-value-it-has.test.js +0 -126
  197. package/dist/src/yaml/bitrise-compat.d.ts +0 -65
  198. package/dist/src/yaml/bitrise-compat.d.ts.map +0 -1
  199. package/dist/src/yaml/bitrise-compat.js +0 -206
  200. package/dist/src/yaml/bitrise-compat.test.d.ts +0 -5
  201. package/dist/src/yaml/bitrise-compat.test.d.ts.map +0 -1
  202. package/dist/src/yaml/bitrise-compat.test.js +0 -347
  203. package/dist/src/yaml/cache-key-missing-file.test.d.ts +0 -12
  204. package/dist/src/yaml/cache-key-missing-file.test.d.ts.map +0 -1
  205. package/dist/src/yaml/cache-key-missing-file.test.js +0 -116
  206. package/dist/src/yaml/converter.d.ts +0 -103
  207. package/dist/src/yaml/converter.d.ts.map +0 -1
  208. package/dist/src/yaml/converter.js +0 -420
  209. package/dist/src/yaml/converter.test.d.ts +0 -5
  210. package/dist/src/yaml/converter.test.d.ts.map +0 -1
  211. package/dist/src/yaml/converter.test.js +0 -548
  212. package/dist/src/yaml/e2e.test.d.ts +0 -6
  213. package/dist/src/yaml/e2e.test.d.ts.map +0 -1
  214. package/dist/src/yaml/e2e.test.js +0 -446
  215. package/dist/src/yaml/env-resolver.d.ts +0 -218
  216. package/dist/src/yaml/env-resolver.d.ts.map +0 -1
  217. package/dist/src/yaml/env-resolver.js +0 -591
  218. package/dist/src/yaml/env-resolver.test.d.ts +0 -5
  219. package/dist/src/yaml/env-resolver.test.d.ts.map +0 -1
  220. package/dist/src/yaml/env-resolver.test.js +0 -502
  221. package/dist/src/yaml/every-build-log-witnesses-the-commit-on-disk.test.d.ts +0 -16
  222. package/dist/src/yaml/every-build-log-witnesses-the-commit-on-disk.test.d.ts.map +0 -1
  223. package/dist/src/yaml/every-build-log-witnesses-the-commit-on-disk.test.js +0 -126
  224. package/dist/src/yaml/fidelity-input-digest.d.ts +0 -37
  225. package/dist/src/yaml/fidelity-input-digest.d.ts.map +0 -1
  226. package/dist/src/yaml/fidelity-input-digest.js +0 -208
  227. package/dist/src/yaml/fidelity-input-digest.test.d.ts +0 -2
  228. package/dist/src/yaml/fidelity-input-digest.test.d.ts.map +0 -1
  229. package/dist/src/yaml/fidelity-input-digest.test.js +0 -167
  230. package/dist/src/yaml/fidelity-manifest.d.ts +0 -126
  231. package/dist/src/yaml/fidelity-manifest.d.ts.map +0 -1
  232. package/dist/src/yaml/fidelity-manifest.js +0 -134
  233. package/dist/src/yaml/fidelity-manifest.test.d.ts +0 -12
  234. package/dist/src/yaml/fidelity-manifest.test.d.ts.map +0 -1
  235. package/dist/src/yaml/fidelity-manifest.test.js +0 -251
  236. package/dist/src/yaml/interactive-prompts.d.ts +0 -71
  237. package/dist/src/yaml/interactive-prompts.d.ts.map +0 -1
  238. package/dist/src/yaml/interactive-prompts.js +0 -260
  239. package/dist/src/yaml/meta-helpers.d.ts +0 -28
  240. package/dist/src/yaml/meta-helpers.d.ts.map +0 -1
  241. package/dist/src/yaml/meta-helpers.js +0 -46
  242. package/dist/src/yaml/missing-env-handler.d.ts +0 -45
  243. package/dist/src/yaml/missing-env-handler.d.ts.map +0 -1
  244. package/dist/src/yaml/missing-env-handler.js +0 -64
  245. package/dist/src/yaml/parser.d.ts +0 -33
  246. package/dist/src/yaml/parser.d.ts.map +0 -1
  247. package/dist/src/yaml/parser.js +0 -148
  248. package/dist/src/yaml/parser.test.d.ts +0 -5
  249. package/dist/src/yaml/parser.test.d.ts.map +0 -1
  250. package/dist/src/yaml/parser.test.js +0 -83
  251. package/dist/src/yaml/pipeline-with-secrets.d.ts +0 -25
  252. package/dist/src/yaml/pipeline-with-secrets.d.ts.map +0 -1
  253. package/dist/src/yaml/pipeline-with-secrets.js +0 -76
  254. package/dist/src/yaml/platform-detector.d.ts +0 -83
  255. package/dist/src/yaml/platform-detector.d.ts.map +0 -1
  256. package/dist/src/yaml/platform-detector.js +0 -189
  257. package/dist/src/yaml/platform-detector.test.d.ts +0 -5
  258. package/dist/src/yaml/platform-detector.test.d.ts.map +0 -1
  259. package/dist/src/yaml/platform-detector.test.js +0 -525
  260. package/dist/src/yaml/preflight-validation.d.ts +0 -29
  261. package/dist/src/yaml/preflight-validation.d.ts.map +0 -1
  262. package/dist/src/yaml/preflight-validation.js +0 -21
  263. package/dist/src/yaml/secrets-manager.d.ts +0 -87
  264. package/dist/src/yaml/secrets-manager.d.ts.map +0 -1
  265. package/dist/src/yaml/secrets-manager.js +0 -230
  266. package/dist/src/yaml/shell-assignments.d.ts +0 -40
  267. package/dist/src/yaml/shell-assignments.d.ts.map +0 -1
  268. package/dist/src/yaml/shell-assignments.js +0 -77
  269. package/dist/src/yaml/step-validator-check-failure.test.d.ts +0 -24
  270. package/dist/src/yaml/step-validator-check-failure.test.d.ts.map +0 -1
  271. package/dist/src/yaml/step-validator-check-failure.test.js +0 -130
  272. package/dist/src/yaml/step-validator-self-assigned.test.d.ts +0 -23
  273. package/dist/src/yaml/step-validator-self-assigned.test.d.ts.map +0 -1
  274. package/dist/src/yaml/step-validator-self-assigned.test.js +0 -191
  275. package/dist/src/yaml/step-validator.d.ts +0 -67
  276. package/dist/src/yaml/step-validator.d.ts.map +0 -1
  277. package/dist/src/yaml/step-validator.js +0 -466
  278. package/dist/src/yaml/step-validator.test.d.ts +0 -18
  279. package/dist/src/yaml/step-validator.test.d.ts.map +0 -1
  280. package/dist/src/yaml/step-validator.test.js +0 -140
  281. package/dist/src/yaml/steps/a-missing-pinned-jdk-yields-for-every-gradle-run.test.d.ts +0 -2
  282. package/dist/src/yaml/steps/a-missing-pinned-jdk-yields-for-every-gradle-run.test.d.ts.map +0 -1
  283. package/dist/src/yaml/steps/a-missing-pinned-jdk-yields-for-every-gradle-run.test.js +0 -96
  284. package/dist/src/yaml/steps/android-sign.d.ts +0 -35
  285. package/dist/src/yaml/steps/android-sign.d.ts.map +0 -1
  286. package/dist/src/yaml/steps/android-sign.js +0 -147
  287. package/dist/src/yaml/steps/android-variant-resolution.test.d.ts +0 -2
  288. package/dist/src/yaml/steps/android-variant-resolution.test.d.ts.map +0 -1
  289. package/dist/src/yaml/steps/android-variant-resolution.test.js +0 -260
  290. package/dist/src/yaml/steps/android-version.d.ts +0 -26
  291. package/dist/src/yaml/steps/android-version.d.ts.map +0 -1
  292. package/dist/src/yaml/steps/android-version.js +0 -128
  293. package/dist/src/yaml/steps/android-version.test.d.ts +0 -5
  294. package/dist/src/yaml/steps/android-version.test.d.ts.map +0 -1
  295. package/dist/src/yaml/steps/android-version.test.js +0 -196
  296. package/dist/src/yaml/steps/android.d.ts +0 -156
  297. package/dist/src/yaml/steps/android.d.ts.map +0 -1
  298. package/dist/src/yaml/steps/android.js +0 -1100
  299. package/dist/src/yaml/steps/app-store-deploy.d.ts +0 -48
  300. package/dist/src/yaml/steps/app-store-deploy.d.ts.map +0 -1
  301. package/dist/src/yaml/steps/app-store-deploy.js +0 -167
  302. package/dist/src/yaml/steps/base.d.ts +0 -263
  303. package/dist/src/yaml/steps/base.d.ts.map +0 -1
  304. package/dist/src/yaml/steps/base.js +0 -380
  305. package/dist/src/yaml/steps/bitrise-android-tools.d.ts +0 -26
  306. package/dist/src/yaml/steps/bitrise-android-tools.d.ts.map +0 -1
  307. package/dist/src/yaml/steps/bitrise-android-tools.js +0 -200
  308. package/dist/src/yaml/steps/bitrise-android-tools.test.d.ts +0 -5
  309. package/dist/src/yaml/steps/bitrise-android-tools.test.d.ts.map +0 -1
  310. package/dist/src/yaml/steps/bitrise-android-tools.test.js +0 -280
  311. package/dist/src/yaml/steps/bitrise-apk-info.d.ts +0 -22
  312. package/dist/src/yaml/steps/bitrise-apk-info.d.ts.map +0 -1
  313. package/dist/src/yaml/steps/bitrise-apk-info.js +0 -144
  314. package/dist/src/yaml/steps/bitrise-apk-info.test.d.ts +0 -5
  315. package/dist/src/yaml/steps/bitrise-apk-info.test.d.ts.map +0 -1
  316. package/dist/src/yaml/steps/bitrise-apk-info.test.js +0 -331
  317. package/dist/src/yaml/steps/bitrise-slack.d.ts +0 -49
  318. package/dist/src/yaml/steps/bitrise-slack.d.ts.map +0 -1
  319. package/dist/src/yaml/steps/bitrise-slack.js +0 -280
  320. package/dist/src/yaml/steps/bitrise-slack.test.d.ts +0 -5
  321. package/dist/src/yaml/steps/bitrise-slack.test.d.ts.map +0 -1
  322. package/dist/src/yaml/steps/bitrise-slack.test.js +0 -484
  323. package/dist/src/yaml/steps/bitrise-ssh.d.ts +0 -27
  324. package/dist/src/yaml/steps/bitrise-ssh.d.ts.map +0 -1
  325. package/dist/src/yaml/steps/bitrise-ssh.js +0 -134
  326. package/dist/src/yaml/steps/bitrise-ssh.test.d.ts +0 -5
  327. package/dist/src/yaml/steps/bitrise-ssh.test.d.ts.map +0 -1
  328. package/dist/src/yaml/steps/bitrise-ssh.test.js +0 -205
  329. package/dist/src/yaml/steps/cache-pull-daemon.test.d.ts +0 -27
  330. package/dist/src/yaml/steps/cache-pull-daemon.test.d.ts.map +0 -1
  331. package/dist/src/yaml/steps/cache-pull-daemon.test.js +0 -212
  332. package/dist/src/yaml/steps/cache-pull-restore-roots.test.d.ts +0 -42
  333. package/dist/src/yaml/steps/cache-pull-restore-roots.test.d.ts.map +0 -1
  334. package/dist/src/yaml/steps/cache-pull-restore-roots.test.js +0 -209
  335. package/dist/src/yaml/steps/cache-push-daemon.test.d.ts +0 -27
  336. package/dist/src/yaml/steps/cache-push-daemon.test.d.ts.map +0 -1
  337. package/dist/src/yaml/steps/cache-push-daemon.test.js +0 -171
  338. package/dist/src/yaml/steps/cache.d.ts +0 -59
  339. package/dist/src/yaml/steps/cache.d.ts.map +0 -1
  340. package/dist/src/yaml/steps/cache.js +0 -1027
  341. package/dist/src/yaml/steps/capture-injection.d.ts +0 -30
  342. package/dist/src/yaml/steps/capture-injection.d.ts.map +0 -1
  343. package/dist/src/yaml/steps/capture-injection.js +0 -88
  344. package/dist/src/yaml/steps/capture-injection.test.d.ts +0 -2
  345. package/dist/src/yaml/steps/capture-injection.test.d.ts.map +0 -1
  346. package/dist/src/yaml/steps/capture-injection.test.js +0 -163
  347. package/dist/src/yaml/steps/cocoapods-deployment-floor.d.ts +0 -42
  348. package/dist/src/yaml/steps/cocoapods-deployment-floor.d.ts.map +0 -1
  349. package/dist/src/yaml/steps/cocoapods-deployment-floor.js +0 -140
  350. package/dist/src/yaml/steps/cocoapods-deployment-floor.test.d.ts +0 -11
  351. package/dist/src/yaml/steps/cocoapods-deployment-floor.test.d.ts.map +0 -1
  352. package/dist/src/yaml/steps/cocoapods-deployment-floor.test.js +0 -176
  353. package/dist/src/yaml/steps/cocoapods-install-emits-valid-bash.test.d.ts +0 -22
  354. package/dist/src/yaml/steps/cocoapods-install-emits-valid-bash.test.d.ts.map +0 -1
  355. package/dist/src/yaml/steps/cocoapods-install-emits-valid-bash.test.js +0 -97
  356. package/dist/src/yaml/steps/cocoapods-locked-bundler.test.d.ts +0 -17
  357. package/dist/src/yaml/steps/cocoapods-locked-bundler.test.d.ts.map +0 -1
  358. package/dist/src/yaml/steps/cocoapods-locked-bundler.test.js +0 -282
  359. package/dist/src/yaml/steps/cocoapods-skip-if-absent.test.d.ts +0 -17
  360. package/dist/src/yaml/steps/cocoapods-skip-if-absent.test.d.ts.map +0 -1
  361. package/dist/src/yaml/steps/cocoapods-skip-if-absent.test.js +0 -132
  362. package/dist/src/yaml/steps/envstore-loader.test.d.ts +0 -15
  363. package/dist/src/yaml/steps/envstore-loader.test.d.ts.map +0 -1
  364. package/dist/src/yaml/steps/envstore-loader.test.js +0 -143
  365. package/dist/src/yaml/steps/fastlane.d.ts +0 -27
  366. package/dist/src/yaml/steps/fastlane.d.ts.map +0 -1
  367. package/dist/src/yaml/steps/fastlane.js +0 -79
  368. package/dist/src/yaml/steps/fidelity-aspect-guard.d.ts +0 -53
  369. package/dist/src/yaml/steps/fidelity-aspect-guard.d.ts.map +0 -1
  370. package/dist/src/yaml/steps/fidelity-aspect-guard.js +0 -72
  371. package/dist/src/yaml/steps/fidelity-aspect-guard.test.d.ts +0 -11
  372. package/dist/src/yaml/steps/fidelity-aspect-guard.test.d.ts.map +0 -1
  373. package/dist/src/yaml/steps/fidelity-aspect-guard.test.js +0 -50
  374. package/dist/src/yaml/steps/fidelity-reference-provenance.d.ts +0 -87
  375. package/dist/src/yaml/steps/fidelity-reference-provenance.d.ts.map +0 -1
  376. package/dist/src/yaml/steps/fidelity-reference-provenance.js +0 -111
  377. package/dist/src/yaml/steps/fidelity-reference-provenance.test.d.ts +0 -22
  378. package/dist/src/yaml/steps/fidelity-reference-provenance.test.d.ts.map +0 -1
  379. package/dist/src/yaml/steps/fidelity-reference-provenance.test.js +0 -118
  380. package/dist/src/yaml/steps/file.d.ts +0 -52
  381. package/dist/src/yaml/steps/file.d.ts.map +0 -1
  382. package/dist/src/yaml/steps/file.js +0 -108
  383. package/dist/src/yaml/steps/flutter.d.ts +0 -63
  384. package/dist/src/yaml/steps/flutter.d.ts.map +0 -1
  385. package/dist/src/yaml/steps/flutter.js +0 -215
  386. package/dist/src/yaml/steps/git-clone-names-the-inputs-it-ignores.test.d.ts +0 -16
  387. package/dist/src/yaml/steps/git-clone-names-the-inputs-it-ignores.test.d.ts.map +0 -1
  388. package/dist/src/yaml/steps/git-clone-names-the-inputs-it-ignores.test.js +0 -127
  389. package/dist/src/yaml/steps/git-clone.d.ts +0 -32
  390. package/dist/src/yaml/steps/git-clone.d.ts.map +0 -1
  391. package/dist/src/yaml/steps/git-clone.js +0 -171
  392. package/dist/src/yaml/steps/git-fetch-retry-exec.test.d.ts +0 -10
  393. package/dist/src/yaml/steps/git-fetch-retry-exec.test.d.ts.map +0 -1
  394. package/dist/src/yaml/steps/git-fetch-retry-exec.test.js +0 -162
  395. package/dist/src/yaml/steps/git-fetch-retry.d.ts +0 -62
  396. package/dist/src/yaml/steps/git-fetch-retry.d.ts.map +0 -1
  397. package/dist/src/yaml/steps/git-fetch-retry.js +0 -155
  398. package/dist/src/yaml/steps/git-fetch-retry.test.d.ts +0 -5
  399. package/dist/src/yaml/steps/git-fetch-retry.test.d.ts.map +0 -1
  400. package/dist/src/yaml/steps/git-fetch-retry.test.js +0 -86
  401. package/dist/src/yaml/steps/google-play-deploy.d.ts +0 -37
  402. package/dist/src/yaml/steps/google-play-deploy.d.ts.map +0 -1
  403. package/dist/src/yaml/steps/google-play-deploy.js +0 -193
  404. package/dist/src/yaml/steps/google-play-deploy.test.d.ts +0 -5
  405. package/dist/src/yaml/steps/google-play-deploy.test.d.ts.map +0 -1
  406. package/dist/src/yaml/steps/google-play-deploy.test.js +0 -310
  407. package/dist/src/yaml/steps/gradle-memory.d.ts +0 -91
  408. package/dist/src/yaml/steps/gradle-memory.d.ts.map +0 -1
  409. package/dist/src/yaml/steps/gradle-memory.js +0 -495
  410. package/dist/src/yaml/steps/gradle-memory.test.d.ts +0 -2
  411. package/dist/src/yaml/steps/gradle-memory.test.d.ts.map +0 -1
  412. package/dist/src/yaml/steps/gradle-memory.test.js +0 -344
  413. package/dist/src/yaml/steps/gradle-sdk-cmake.d.ts +0 -28
  414. package/dist/src/yaml/steps/gradle-sdk-cmake.d.ts.map +0 -1
  415. package/dist/src/yaml/steps/gradle-sdk-cmake.js +0 -107
  416. package/dist/src/yaml/steps/gradle-sdk-cmake.test.d.ts +0 -2
  417. package/dist/src/yaml/steps/gradle-sdk-cmake.test.d.ts.map +0 -1
  418. package/dist/src/yaml/steps/gradle-sdk-cmake.test.js +0 -183
  419. package/dist/src/yaml/steps/index.d.ts +0 -10
  420. package/dist/src/yaml/steps/index.d.ts.map +0 -1
  421. package/dist/src/yaml/steps/index.js +0 -1461
  422. package/dist/src/yaml/steps/ios-deps.d.ts +0 -78
  423. package/dist/src/yaml/steps/ios-deps.d.ts.map +0 -1
  424. package/dist/src/yaml/steps/ios-deps.js +0 -279
  425. package/dist/src/yaml/steps/ios-deps.test.d.ts +0 -5
  426. package/dist/src/yaml/steps/ios-deps.test.d.ts.map +0 -1
  427. package/dist/src/yaml/steps/ios-deps.test.js +0 -90
  428. package/dist/src/yaml/steps/ios-signing.d.ts +0 -31
  429. package/dist/src/yaml/steps/ios-signing.d.ts.map +0 -1
  430. package/dist/src/yaml/steps/ios-signing.js +0 -144
  431. package/dist/src/yaml/steps/ios-version.d.ts +0 -47
  432. package/dist/src/yaml/steps/ios-version.d.ts.map +0 -1
  433. package/dist/src/yaml/steps/ios-version.js +0 -151
  434. package/dist/src/yaml/steps/java-home-version-spec.test.d.ts +0 -10
  435. package/dist/src/yaml/steps/java-home-version-spec.test.d.ts.map +0 -1
  436. package/dist/src/yaml/steps/java-home-version-spec.test.js +0 -58
  437. package/dist/src/yaml/steps/kotlin-metadata-compiles-on-a-daemon.test.d.ts +0 -2
  438. package/dist/src/yaml/steps/kotlin-metadata-compiles-on-a-daemon.test.d.ts.map +0 -1
  439. package/dist/src/yaml/steps/kotlin-metadata-compiles-on-a-daemon.test.js +0 -139
  440. package/dist/src/yaml/steps/linting.d.ts +0 -47
  441. package/dist/src/yaml/steps/linting.d.ts.map +0 -1
  442. package/dist/src/yaml/steps/linting.js +0 -148
  443. package/dist/src/yaml/steps/phase2.test.d.ts +0 -6
  444. package/dist/src/yaml/steps/phase2.test.d.ts.map +0 -1
  445. package/dist/src/yaml/steps/phase2.test.js +0 -197
  446. package/dist/src/yaml/steps/phase3.test.d.ts +0 -5
  447. package/dist/src/yaml/steps/phase3.test.d.ts.map +0 -1
  448. package/dist/src/yaml/steps/phase3.test.js +0 -144
  449. package/dist/src/yaml/steps/phase4.test.d.ts +0 -5
  450. package/dist/src/yaml/steps/phase4.test.d.ts.map +0 -1
  451. package/dist/src/yaml/steps/phase4.test.js +0 -166
  452. package/dist/src/yaml/steps/phase5.test.d.ts +0 -6
  453. package/dist/src/yaml/steps/phase5.test.d.ts.map +0 -1
  454. package/dist/src/yaml/steps/phase5.test.js +0 -263
  455. package/dist/src/yaml/steps/registry.d.ts +0 -88
  456. package/dist/src/yaml/steps/registry.d.ts.map +0 -1
  457. package/dist/src/yaml/steps/registry.js +0 -125
  458. package/dist/src/yaml/steps/registry.test.d.ts +0 -5
  459. package/dist/src/yaml/steps/registry.test.d.ts.map +0 -1
  460. package/dist/src/yaml/steps/registry.test.js +0 -235
  461. package/dist/src/yaml/steps/release.d.ts +0 -50
  462. package/dist/src/yaml/steps/release.d.ts.map +0 -1
  463. package/dist/src/yaml/steps/release.js +0 -154
  464. package/dist/src/yaml/steps/render-post-processor.d.ts +0 -100
  465. package/dist/src/yaml/steps/render-post-processor.d.ts.map +0 -1
  466. package/dist/src/yaml/steps/render-post-processor.js +0 -270
  467. package/dist/src/yaml/steps/render-post-processor.test.d.ts +0 -13
  468. package/dist/src/yaml/steps/render-post-processor.test.d.ts.map +0 -1
  469. package/dist/src/yaml/steps/render-post-processor.test.js +0 -220
  470. package/dist/src/yaml/steps/script.d.ts +0 -23
  471. package/dist/src/yaml/steps/script.d.ts.map +0 -1
  472. package/dist/src/yaml/steps/script.js +0 -63
  473. package/dist/src/yaml/steps/spec-validation.test.d.ts +0 -6
  474. package/dist/src/yaml/steps/spec-validation.test.d.ts.map +0 -1
  475. package/dist/src/yaml/steps/spec-validation.test.js +0 -130
  476. package/dist/src/yaml/steps/steps.test.d.ts +0 -6
  477. package/dist/src/yaml/steps/steps.test.d.ts.map +0 -1
  478. package/dist/src/yaml/steps/steps.test.js +0 -881
  479. package/dist/src/yaml/steps/structural-facts.d.ts +0 -992
  480. package/dist/src/yaml/steps/structural-facts.d.ts.map +0 -1
  481. package/dist/src/yaml/steps/structural-facts.js +0 -3276
  482. package/dist/src/yaml/steps/structural-facts.test.d.ts +0 -12
  483. package/dist/src/yaml/steps/structural-facts.test.d.ts.map +0 -1
  484. package/dist/src/yaml/steps/structural-facts.test.js +0 -3039
  485. package/dist/src/yaml/steps/test-config.d.ts +0 -5
  486. package/dist/src/yaml/steps/test-config.d.ts.map +0 -1
  487. package/dist/src/yaml/steps/test-config.js +0 -25
  488. package/dist/src/yaml/steps/trim-align-corpus.test.d.ts +0 -28
  489. package/dist/src/yaml/steps/trim-align-corpus.test.d.ts.map +0 -1
  490. package/dist/src/yaml/steps/trim-align-corpus.test.js +0 -383
  491. package/dist/src/yaml/steps/trim-align.d.ts +0 -87
  492. package/dist/src/yaml/steps/trim-align.d.ts.map +0 -1
  493. package/dist/src/yaml/steps/trim-align.js +0 -367
  494. package/dist/src/yaml/steps/trim-align.test.d.ts +0 -11
  495. package/dist/src/yaml/steps/trim-align.test.d.ts.map +0 -1
  496. package/dist/src/yaml/steps/trim-align.test.js +0 -261
  497. package/dist/src/yaml/steps/ui-fidelity-preview-android.d.ts +0 -66
  498. package/dist/src/yaml/steps/ui-fidelity-preview-android.d.ts.map +0 -1
  499. package/dist/src/yaml/steps/ui-fidelity-preview-android.js +0 -251
  500. package/dist/src/yaml/steps/ui-fidelity-preview-android.test.d.ts +0 -13
  501. package/dist/src/yaml/steps/ui-fidelity-preview-android.test.d.ts.map +0 -1
  502. package/dist/src/yaml/steps/ui-fidelity-preview-android.test.js +0 -302
  503. package/dist/src/yaml/steps/ui-fidelity-preview.d.ts +0 -134
  504. package/dist/src/yaml/steps/ui-fidelity-preview.d.ts.map +0 -1
  505. package/dist/src/yaml/steps/ui-fidelity-preview.js +0 -173
  506. package/dist/src/yaml/steps/ui-fidelity-preview.test.d.ts +0 -11
  507. package/dist/src/yaml/steps/ui-fidelity-preview.test.d.ts.map +0 -1
  508. package/dist/src/yaml/steps/ui-fidelity-preview.test.js +0 -210
  509. package/dist/src/yaml/steps/ui-fidelity-render-android.d.ts +0 -155
  510. package/dist/src/yaml/steps/ui-fidelity-render-android.d.ts.map +0 -1
  511. package/dist/src/yaml/steps/ui-fidelity-render-android.js +0 -1389
  512. package/dist/src/yaml/steps/ui-fidelity-render-android.test.d.ts +0 -2
  513. package/dist/src/yaml/steps/ui-fidelity-render-android.test.d.ts.map +0 -1
  514. package/dist/src/yaml/steps/ui-fidelity-render-android.test.js +0 -1106
  515. package/dist/src/yaml/steps/ui-fidelity-render.d.ts +0 -230
  516. package/dist/src/yaml/steps/ui-fidelity-render.d.ts.map +0 -1
  517. package/dist/src/yaml/steps/ui-fidelity-render.js +0 -1597
  518. package/dist/src/yaml/steps/ui-fidelity-render.test.d.ts +0 -18
  519. package/dist/src/yaml/steps/ui-fidelity-render.test.d.ts.map +0 -1
  520. package/dist/src/yaml/steps/ui-fidelity-render.test.js +0 -1871
  521. package/dist/src/yaml/steps/xcode-app-product.d.ts +0 -90
  522. package/dist/src/yaml/steps/xcode-app-product.d.ts.map +0 -1
  523. package/dist/src/yaml/steps/xcode-app-product.js +0 -247
  524. package/dist/src/yaml/steps/xcode-app-product.test.d.ts +0 -2
  525. package/dist/src/yaml/steps/xcode-app-product.test.d.ts.map +0 -1
  526. package/dist/src/yaml/steps/xcode-app-product.test.js +0 -202
  527. package/dist/src/yaml/steps/xcode-derived-data.test.d.ts +0 -30
  528. package/dist/src/yaml/steps/xcode-derived-data.test.d.ts.map +0 -1
  529. package/dist/src/yaml/steps/xcode-derived-data.test.js +0 -279
  530. package/dist/src/yaml/steps/xcode-destination.d.ts +0 -47
  531. package/dist/src/yaml/steps/xcode-destination.d.ts.map +0 -1
  532. package/dist/src/yaml/steps/xcode-destination.js +0 -202
  533. package/dist/src/yaml/steps/xcode-destination.test.d.ts +0 -9
  534. package/dist/src/yaml/steps/xcode-destination.test.d.ts.map +0 -1
  535. package/dist/src/yaml/steps/xcode-destination.test.js +0 -227
  536. package/dist/src/yaml/steps/xcode-new.test.d.ts +0 -5
  537. package/dist/src/yaml/steps/xcode-new.test.d.ts.map +0 -1
  538. package/dist/src/yaml/steps/xcode-new.test.js +0 -211
  539. package/dist/src/yaml/steps/xcode-resolve-retry.test.d.ts +0 -9
  540. package/dist/src/yaml/steps/xcode-resolve-retry.test.d.ts.map +0 -1
  541. package/dist/src/yaml/steps/xcode-resolve-retry.test.js +0 -146
  542. package/dist/src/yaml/steps/xcode-simulator-archs.d.ts +0 -53
  543. package/dist/src/yaml/steps/xcode-simulator-archs.d.ts.map +0 -1
  544. package/dist/src/yaml/steps/xcode-simulator-archs.js +0 -98
  545. package/dist/src/yaml/steps/xcode-simulator-archs.test.d.ts +0 -21
  546. package/dist/src/yaml/steps/xcode-simulator-archs.test.d.ts.map +0 -1
  547. package/dist/src/yaml/steps/xcode-simulator-archs.test.js +0 -155
  548. package/dist/src/yaml/steps/xcode.d.ts +0 -230
  549. package/dist/src/yaml/steps/xcode.d.ts.map +0 -1
  550. package/dist/src/yaml/steps/xcode.js +0 -1350
  551. package/dist/src/yaml/types.d.ts +0 -76
  552. package/dist/src/yaml/types.d.ts.map +0 -1
  553. package/dist/src/yaml/types.js +0 -5
  554. package/dist/src/yaml/validation-types.d.ts +0 -102
  555. package/dist/src/yaml/validation-types.d.ts.map +0 -1
  556. package/dist/src/yaml/validation-types.js +0 -8
  557. package/dist/src/yaml/yaml-updater.d.ts +0 -24
  558. package/dist/src/yaml/yaml-updater.d.ts.map +0 -1
  559. package/dist/src/yaml/yaml-updater.js +0 -128
@@ -1,492 +0,0 @@
1
- import { resolve, relative } from "node:path";
2
- import { existsSync, readFileSync, readdirSync } from "node:fs";
3
- import { xcodeContainersIn } from "../shared/detect-project.js";
4
- // ---------------------------------------------------------------------------
5
- // File discovery
6
- // ---------------------------------------------------------------------------
7
- function safeRead(filePath) {
8
- try {
9
- return readFileSync(filePath, "utf-8");
10
- }
11
- catch {
12
- return "";
13
- }
14
- }
15
- function relPath(root, filePath) {
16
- return relative(root, filePath);
17
- }
18
- /**
19
- * Finds the primary Xcode project path.
20
- * Prefers .xcworkspace over .xcodeproj (CocoaPods projects use workspace).
21
- * Returns the relative path from root, or empty string if not found.
22
- *
23
- * A candidate must be a real container — `isXcodeContainer` — and not merely
24
- * a directory with the right suffix. `Uwi0/Oakane` ships `iosApp.xcodeproj`
25
- * with no `project.pbxproj` beside the `oakane.xcodeproj` that has one, and
26
- * this function returned the husk because it was first.
27
- */
28
- function findXcodeProjectPath(root) {
29
- const containers = xcodeContainersIn(root);
30
- const workspaces = containers.filter((e) => e.endsWith(".xcworkspace"));
31
- const projects = containers.filter((e) => e.endsWith(".xcodeproj"));
32
- // Prefer workspace (CocoaPods / multi-package setups use these)
33
- if (workspaces.length > 0)
34
- return workspaces[0];
35
- if (projects.length > 0)
36
- return projects[0];
37
- return "";
38
- }
39
- /**
40
- * Names a scheme carries when it builds something beside the app rather than
41
- * the app: an extension, a widget, a watch or TV companion, a test or
42
- * screenshot harness. Matched case-insensitively on the whole name.
43
- */
44
- const COMPANION_SCHEME = /(extension|widget|clip|intents?|notification|tvos|macos|watchos|visionos|tests?|screenshots?|staging|prototype|codegen)/i;
45
- function readSchemeFacts(root, name) {
46
- for (const entry of xcodeContainersIn(root)) {
47
- if (!entry.endsWith(".xcodeproj"))
48
- continue;
49
- const path = resolve(root, entry, "xcshareddata", "xcschemes", `${name}.xcscheme`);
50
- if (!existsSync(path))
51
- continue;
52
- const xml = safeRead(path);
53
- if (!xml)
54
- continue;
55
- const launch = /<LaunchAction[\s\S]*?<\/LaunchAction>/.exec(xml)?.[0] ?? "";
56
- // Attribute values carry no `>`, so the opening tag alone is a safe scope
57
- // and no attribute deeper in the document can be mistaken for it.
58
- const schemeTag = /<Scheme\b[^>]*>/.exec(xml)?.[0] ?? "";
59
- return {
60
- runnable: /BuildableName\s*=\s*"([^"]+)"/.exec(launch)?.[1],
61
- testable: /<TestableReference/.test(xml),
62
- appExtension: /wasCreatedForAppExtension\s*=\s*"YES"/.test(schemeTag),
63
- };
64
- }
65
- return undefined;
66
- }
67
- /**
68
- * The detected schemes, best first.
69
- *
70
- * `detectedSchemes[0]` is what every caller writes into `IOS_SCHEME`, and it
71
- * used to be whatever `readdirSync` returned first. A space (0x20) sorts
72
- * before a period (0x2E), so `"<App> <Suffix>.xcscheme"` **always** lists
73
- * before `"<App>.xcscheme"`: an app named after its own project loses to its
74
- * extension or its tvOS companion every time. Four of the eight iOS rows that
75
- * built in the thirty-app study were given a non-app scheme that way — Stay
76
- * built its extension and reported "no test bundles available to test";
77
- * Swiftfin built its tvOS scheme and could not find an iOS Simulator
78
- * destination.
79
- *
80
- * The order, in the terms the scheme XML actually states:
81
- *
82
- * 1. named after the project or workspace — the commonest case, and
83
- * unambiguous;
84
- * 2. launches the product named after the project, and is not a companion.
85
- * `thebaselab/codeapp` is why this outranks the next one: its `Code App`
86
- * scheme launches `Code.app` and declares no tests at all, while `Code UI`
87
- * has two test bundles and launches `CodeUI.app`;
88
- * 3. launches an `.app`, declares tests (the template runs them), and is not a
89
- * companion; among several, the iOS or Debug one, then the shortest;
90
- * 4. launches an `.app` and is not a companion;
91
- * 5. whatever order it came in.
92
- *
93
- * Every scheme stays in the list — this reorders, it does not filter, so a
94
- * caller wanting the extension can still find it.
95
- *
96
- * **What "companion" has to mean, and why a name is not enough.**
97
- * `mozilla-mobile/firefox-ios` broke tiers 1-4 without touching the directory
98
- * order this function was written for. Its project is `Client.xcodeproj`, so
99
- * `projectName` is `Client`. An app extension is launched *through its host
100
- * app*, so the `Today` widget scheme's LaunchAction runnable is `Client.app` —
101
- * identical to `Fennec`'s. Both landed in tier 1, neither name carries an `iOS`
102
- * or `Debug` token, and the tie fell to name length:
103
- *
104
- * "Today" -> 5 characters <- won
105
- * "Fennec" -> 6 characters
106
- *
107
- * The build then failed compiling `ActionExtension` rather than the browser
108
- * (`bld_b1b38dda58f4111080415283`).
109
- *
110
- * Launching the app binary is therefore not sufficient, and the answer is not a
111
- * longer name blocklist either — `Today` names nothing. Xcode states the fact
112
- * outright: it writes `wasCreatedForAppExtension = "YES"` onto the `<Scheme>`
113
- * element of a scheme it created for an extension target, so that is what is
114
- * read.
115
- *
116
- * Measured over all 125 shared schemes in the thirty-app study's clones: 29
117
- * carry the attribute, and **all 29 are extension schemes** — no false
118
- * positive. It is also the only signal that would have worked. Two that were
119
- * considered and are wrong on this same evidence:
120
- *
121
- * - *require an `.app` among the BuildAction entries.* 27 of the 29 extension
122
- * schemes build the host app too — `Today` builds
123
- * `["Today.appex", "Client.app"]` — so this demotes 2 of 29 and leaves
124
- * firefox-ios picking `Today`.
125
- * - *demote anything building an `.appex`.* `chenqi92/primuse`'s `Primuse`
126
- * scheme is the real app scheme and builds two widget extensions alongside
127
- * `Primuse.app`.
128
- *
129
- * The attribute is a sufficient signal, not a necessary one: a hand-written or
130
- * pre-Xcode-10 scheme may omit it, and its absence changes nothing, so nothing
131
- * that ranked before can regress on a scheme that does not carry it.
132
- */
133
- export function rankSchemes(root, projectPath, schemes) {
134
- return rankSchemesWithReason(root, projectPath, schemes).schemes;
135
- }
136
- /** The ranking, plus the sentence explaining its first entry. */
137
- export function rankSchemesWithReason(root, projectPath, schemes) {
138
- if (schemes.length < 2)
139
- return { schemes };
140
- const projectName = projectPath.replace(/\.(xcodeproj|xcworkspace)$/, "").split("/").pop();
141
- const scored = schemes.map((name, index) => {
142
- const facts = readSchemeFacts(root, name);
143
- // Two ways to be a companion: the name says so, or Xcode does. Xcode's
144
- // word outranks a name match, so it disqualifies tier 0 as well.
145
- const companion = COMPANION_SCHEME.test(name) || (facts?.appExtension ?? false);
146
- const app = facts?.runnable?.endsWith(".app") ?? false;
147
- let tier = 4;
148
- if (name === projectName && !facts?.appExtension)
149
- tier = 0;
150
- else if (facts?.runnable === `${projectName}.app` && !companion)
151
- tier = 1;
152
- else if (app && facts?.testable && !companion)
153
- tier = 2;
154
- else if (app && !companion)
155
- tier = 3;
156
- return {
157
- name,
158
- index,
159
- tier,
160
- // Within a tier: an iOS or Debug variant first, then the shorter name.
161
- preferred: /(^|[^A-Za-z])(iOS|Debug)([^A-Za-z]|$)/i.test(name) ? 0 : 1,
162
- length: name.length,
163
- };
164
- });
165
- scored.sort((a, b) => a.tier - b.tier ||
166
- a.preferred - b.preferred ||
167
- a.length - b.length ||
168
- a.index - b.index);
169
- const best = scored[0];
170
- const others = scored.length - 1;
171
- const why = [
172
- "named after the project",
173
- `launches ${projectName}.app`,
174
- "the app scheme that runs the tests",
175
- "the only app scheme that is not a companion",
176
- "first in the list, and nothing here separates them",
177
- ][best.tier];
178
- return {
179
- schemes: scored.map((s) => s.name),
180
- reason: `${best.name} — ${why}; ${others} other scheme${others === 1 ? "" : "s"} here`,
181
- };
182
- }
183
- /**
184
- * Detects Xcode schemes by reading *.xcscheme files from the
185
- * xcshareddata/xcschemes/ directory inside a .xcodeproj bundle.
186
- * Falls back to deriving the scheme name from the project file name.
187
- */
188
- function detectSchemes(root) {
189
- const schemes = new Set();
190
- // Real projects only. The fallback below invents a scheme from the
191
- // directory's name, so a husk with no shared schemes contributes a scheme
192
- // named after a project that cannot be opened — which is how `Uwi0/Oakane`
193
- // got `IOS_SCHEME: iosApp` as well as `IOS_PROJECT_PATH: iosApp.xcodeproj`.
194
- const entries = xcodeContainersIn(root);
195
- for (const entry of entries) {
196
- if (!entry.endsWith(".xcodeproj"))
197
- continue;
198
- const schemesDir = resolve(root, entry, "xcshareddata", "xcschemes");
199
- let schemeFiles;
200
- try {
201
- schemeFiles = readdirSync(schemesDir);
202
- }
203
- catch {
204
- // No shared schemes — fall back to project name
205
- const projectName = entry.replace(/\.xcodeproj$/, "");
206
- schemes.add(projectName);
207
- continue;
208
- }
209
- for (const sf of schemeFiles) {
210
- if (sf.endsWith(".xcscheme")) {
211
- schemes.add(sf.replace(/\.xcscheme$/, ""));
212
- }
213
- }
214
- }
215
- return Array.from(schemes);
216
- }
217
- // ---------------------------------------------------------------------------
218
- // xcconfig env var detection
219
- // ---------------------------------------------------------------------------
220
- /**
221
- * Recursively finds all *.xcconfig files under root, skipping build/DerivedData/Pods.
222
- */
223
- const SKIP_XCCONFIG_DIRS = new Set(["build", "DerivedData", "Pods", ".git", ".ci", "node_modules"]);
224
- function findXcconfigFiles(dir) {
225
- const results = [];
226
- let entries;
227
- try {
228
- entries = readdirSync(dir, { withFileTypes: true });
229
- }
230
- catch {
231
- return results;
232
- }
233
- for (const entry of entries) {
234
- if (entry.isDirectory()) {
235
- if (!SKIP_XCCONFIG_DIRS.has(entry.name)) {
236
- results.push(...findXcconfigFiles(resolve(dir, entry.name)));
237
- }
238
- }
239
- else if (entry.name.endsWith(".xcconfig")) {
240
- results.push(resolve(dir, entry.name));
241
- }
242
- }
243
- return results;
244
- }
245
- /**
246
- * Extract environment variable references from xcconfig content.
247
- * xcconfig uses $(VAR_NAME) syntax.
248
- */
249
- function extractXcconfigEnvRefs(content) {
250
- const results = [];
251
- // Match $(VAR_NAME) — only uppercase + underscore patterns (likely env vars)
252
- const re = /\$\(([A-Z][A-Z0-9_]+)\)/g;
253
- const known = new Set(["SRCROOT", "PROJECT_DIR", "CONFIGURATION", "PRODUCT_NAME", "TARGET_NAME", "BUILT_PRODUCTS_DIR"]);
254
- let m;
255
- while ((m = re.exec(content)) !== null) {
256
- const name = m[1];
257
- if (!known.has(name)) {
258
- results.push(name);
259
- }
260
- }
261
- return [...new Set(results)];
262
- }
263
- // ---------------------------------------------------------------------------
264
- // Signing config detection
265
- // ---------------------------------------------------------------------------
266
- /**
267
- * Returns true if project.pbxproj indicates manual (non-automatic) code signing.
268
- * Automatic signing sets PROVISIONING_PROFILE_SPECIFIER = "" and
269
- * CODE_SIGN_STYLE = Automatic.
270
- */
271
- function detectManualSigning(root) {
272
- let entries;
273
- try {
274
- entries = readdirSync(root);
275
- }
276
- catch {
277
- return false;
278
- }
279
- for (const entry of entries) {
280
- if (!entry.endsWith(".xcodeproj"))
281
- continue;
282
- const pbxprojPath = resolve(root, entry, "project.pbxproj");
283
- const content = safeRead(pbxprojPath);
284
- if (!content)
285
- continue;
286
- // Automatic signing sets CODE_SIGN_STYLE = Automatic
287
- const isAutomatic = /CODE_SIGN_STYLE\s*=\s*Automatic/.test(content);
288
- // Manual signing has a non-empty PROVISIONING_PROFILE_SPECIFIER or explicit identity.
289
- // Modern Xcode emits "Apple Development" / "Apple Distribution"; older projects
290
- // still use the legacy "iPhone Developer" / "iPhone Distribution" names.
291
- const hasProvisioningSpecifier = /PROVISIONING_PROFILE_SPECIFIER\s*=\s*"[^"]+"\s*;/.test(content);
292
- const hasExplicitIdentity = /CODE_SIGN_IDENTITY\s*=\s*"(?:iPhone|Apple) (?:Developer|Development|Distribution)"/.test(content);
293
- if (!isAutomatic && (hasProvisioningSpecifier || hasExplicitIdentity)) {
294
- return true;
295
- }
296
- }
297
- return false;
298
- }
299
- /**
300
- * Extracts the DEVELOPMENT_TEAM value from project.pbxproj.
301
- * Returns the first non-empty team ID found, or empty string.
302
- */
303
- function detectDevelopmentTeam(root) {
304
- let entries;
305
- try {
306
- entries = readdirSync(root);
307
- }
308
- catch {
309
- return "";
310
- }
311
- for (const entry of entries) {
312
- if (!entry.endsWith(".xcodeproj"))
313
- continue;
314
- const pbxprojPath = resolve(root, entry, "project.pbxproj");
315
- const content = safeRead(pbxprojPath);
316
- if (!content)
317
- continue;
318
- const match = content.match(/DEVELOPMENT_TEAM\s*=\s*([A-Z0-9]{10})\s*;/);
319
- if (match)
320
- return match[1];
321
- }
322
- return "";
323
- }
324
- // ---------------------------------------------------------------------------
325
- // Gitignore check
326
- // ---------------------------------------------------------------------------
327
- const IOS_RELEVANT_GITIGNORE_PATTERNS = [
328
- { pattern: /^Pods\/$|^\/Pods\//, label: "Pods/ (CocoaPods dependencies)" },
329
- { pattern: /\*\.p12|\*\.cer/, label: "certificates (*.p12, *.cer)" },
330
- { pattern: /\*\.mobileprovision/, label: "provisioning profiles (*.mobileprovision)" },
331
- { pattern: /\.env$|\*\.env/, label: ".env files" },
332
- ];
333
- function checkGitignore(root) {
334
- const gitignorePath = resolve(root, ".gitignore");
335
- if (!existsSync(gitignorePath))
336
- return [];
337
- const content = safeRead(gitignorePath);
338
- const lines = content.split("\n").map((l) => l.trim()).filter((l) => l && !l.startsWith("#"));
339
- const found = [];
340
- for (const { pattern, label } of IOS_RELEVANT_GITIGNORE_PATTERNS) {
341
- if (lines.some((l) => pattern.test(l))) {
342
- found.push(label);
343
- }
344
- }
345
- return found;
346
- }
347
- // ---------------------------------------------------------------------------
348
- // Main scanner
349
- // ---------------------------------------------------------------------------
350
- export async function scanIosProject(projectRoot) {
351
- const warnings = [];
352
- // 1. Find project path
353
- const projectPath = findXcodeProjectPath(projectRoot);
354
- // 2. Detect schemes, best first — `detectedSchemes[0]` is what becomes
355
- // IOS_SCHEME, and the filesystem's order is not a ranking.
356
- const ranked = rankSchemesWithReason(projectRoot, projectPath, detectSchemes(projectRoot));
357
- const detectedSchemes = ranked.schemes;
358
- // 3. CocoaPods
359
- const hasCocoaPods = existsSync(resolve(projectRoot, "Podfile"));
360
- // 4. SPM
361
- const hasSPM = existsSync(resolve(projectRoot, "Package.swift"));
362
- // 5. Signing config + team ID
363
- const hasSigningConfig = detectManualSigning(projectRoot);
364
- const developmentTeam = detectDevelopmentTeam(projectRoot);
365
- // 6. CocoaPods warnings
366
- const gitignoreItems = checkGitignore(projectRoot);
367
- const podsGitignored = gitignoreItems.some((i) => i.includes("Pods/"));
368
- if (hasCocoaPods) {
369
- if (podsGitignored) {
370
- warnings.push({
371
- category: "cocoapods",
372
- severity: "info",
373
- message: "Pods/ is gitignored — pod install will run on CI",
374
- hint: "The generated pipeline includes a pod install step",
375
- });
376
- }
377
- if (!existsSync(resolve(projectRoot, "Podfile.lock"))) {
378
- warnings.push({
379
- category: "cocoapods",
380
- severity: "warning",
381
- message: "Podfile.lock not found",
382
- hint: "Run 'pod install' locally and commit Podfile.lock for reproducible builds",
383
- });
384
- }
385
- }
386
- // 7. Signing warnings
387
- if (hasSigningConfig) {
388
- warnings.push({
389
- category: "signing-config",
390
- severity: "warning",
391
- message: "Manual code signing detected in project.pbxproj",
392
- hint: "Provide CERTIFICATE_P12, CERTIFICATE_PASSWORD, and PROVISIONING_PROFILE as secrets",
393
- });
394
- }
395
- // 8. xcconfig env var warnings
396
- const seenEnvVars = new Set();
397
- const xcconfigFiles = findXcconfigFiles(projectRoot);
398
- for (const xcconfigPath of xcconfigFiles) {
399
- const content = safeRead(xcconfigPath);
400
- const rel = relPath(projectRoot, xcconfigPath);
401
- for (const varName of extractXcconfigEnvRefs(content)) {
402
- if (!seenEnvVars.has(varName)) {
403
- seenEnvVars.add(varName);
404
- warnings.push({
405
- category: "env-var",
406
- severity: "warning",
407
- message: `Environment variable referenced: ${varName}`,
408
- hint: `Add via: ci secrets add ${varName}`,
409
- location: rel,
410
- });
411
- }
412
- }
413
- }
414
- // 9. Gitignore cross-check for certs / profiles
415
- for (const item of gitignoreItems) {
416
- if (item.includes("certificate") || item.includes("provisioning")) {
417
- warnings.push({
418
- category: "missing-file",
419
- severity: "info",
420
- message: `${item} is in .gitignore — likely absent in CI`,
421
- hint: "Provide as secrets (CERTIFICATE_P12, PROVISIONING_PROFILE)",
422
- });
423
- }
424
- }
425
- return {
426
- warnings,
427
- detectedSchemes,
428
- ...(ranked.reason ? { schemeChoiceReason: ranked.reason } : {}),
429
- hasCocoaPods,
430
- hasSPM,
431
- projectPath,
432
- hasSigningConfig,
433
- developmentTeam,
434
- };
435
- }
436
- // ---------------------------------------------------------------------------
437
- // Formatter
438
- // ---------------------------------------------------------------------------
439
- const CATEGORY_LABELS = {
440
- "missing-file": "Missing files",
441
- "env-var": "Environment variables referenced in xcconfig files",
442
- "signing-config": "Code signing configuration",
443
- "cocoapods": "CocoaPods",
444
- };
445
- export function formatIosScanResult(result) {
446
- const lines = [];
447
- const sep = "─".repeat(50);
448
- if (result.detectedSchemes.length > 0) {
449
- lines.push(`ℹ Detected schemes: ${result.detectedSchemes.join(", ")}`);
450
- lines.push("");
451
- }
452
- if (result.hasSPM) {
453
- lines.push("ℹ Swift Package Manager detected — dependencies resolved automatically by Xcode");
454
- lines.push("");
455
- }
456
- if (result.warnings.length === 0) {
457
- lines.push("✅ No potential unknowns detected.");
458
- return lines.join("\n") + "\n";
459
- }
460
- lines.push("⚠ iOS Project Scan — Potential Unknowns");
461
- lines.push(sep);
462
- lines.push("");
463
- const byCategory = new Map();
464
- for (const w of result.warnings) {
465
- if (!byCategory.has(w.category))
466
- byCategory.set(w.category, []);
467
- byCategory.get(w.category).push(w);
468
- }
469
- for (const [cat, items] of byCategory) {
470
- lines.push(`${CATEGORY_LABELS[cat]}:`);
471
- for (const w of items) {
472
- const icon = w.severity === "warning" ? "⚠ " : "ℹ ";
473
- const loc = w.location ? ` (${w.location})` : "";
474
- lines.push(` ${icon} ${w.message}${loc}`);
475
- if (w.hint) {
476
- lines.push(` Hint: ${w.hint}`);
477
- }
478
- }
479
- lines.push("");
480
- }
481
- lines.push(sep);
482
- const warnCount = result.warnings.filter((w) => w.severity === "warning").length;
483
- const infoCount = result.warnings.filter((w) => w.severity === "info").length;
484
- const parts = [];
485
- if (warnCount > 0)
486
- parts.push(`${warnCount} warning(s)`);
487
- if (infoCount > 0)
488
- parts.push(`${infoCount} info`);
489
- lines.push(`${parts.join(", ")} found. Review before running on CI.`);
490
- return lines.join("\n");
491
- }
492
- //# sourceMappingURL=ios-scanner.js.map
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=ios-scheme-ranking.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ios-scheme-ranking.test.d.ts","sourceRoot":"","sources":["../../../src/commands/ios-scheme-ranking.test.ts"],"names":[],"mappings":""}