@invarn/cibuild 2.9.5 → 2.9.7

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 (553) 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/android-sign.d.ts +0 -35
  282. package/dist/src/yaml/steps/android-sign.d.ts.map +0 -1
  283. package/dist/src/yaml/steps/android-sign.js +0 -147
  284. package/dist/src/yaml/steps/android-variant-resolution.test.d.ts +0 -2
  285. package/dist/src/yaml/steps/android-variant-resolution.test.d.ts.map +0 -1
  286. package/dist/src/yaml/steps/android-variant-resolution.test.js +0 -260
  287. package/dist/src/yaml/steps/android-version.d.ts +0 -26
  288. package/dist/src/yaml/steps/android-version.d.ts.map +0 -1
  289. package/dist/src/yaml/steps/android-version.js +0 -128
  290. package/dist/src/yaml/steps/android-version.test.d.ts +0 -5
  291. package/dist/src/yaml/steps/android-version.test.d.ts.map +0 -1
  292. package/dist/src/yaml/steps/android-version.test.js +0 -196
  293. package/dist/src/yaml/steps/android.d.ts +0 -156
  294. package/dist/src/yaml/steps/android.d.ts.map +0 -1
  295. package/dist/src/yaml/steps/android.js +0 -1092
  296. package/dist/src/yaml/steps/app-store-deploy.d.ts +0 -48
  297. package/dist/src/yaml/steps/app-store-deploy.d.ts.map +0 -1
  298. package/dist/src/yaml/steps/app-store-deploy.js +0 -167
  299. package/dist/src/yaml/steps/base.d.ts +0 -263
  300. package/dist/src/yaml/steps/base.d.ts.map +0 -1
  301. package/dist/src/yaml/steps/base.js +0 -380
  302. package/dist/src/yaml/steps/bitrise-android-tools.d.ts +0 -26
  303. package/dist/src/yaml/steps/bitrise-android-tools.d.ts.map +0 -1
  304. package/dist/src/yaml/steps/bitrise-android-tools.js +0 -200
  305. package/dist/src/yaml/steps/bitrise-android-tools.test.d.ts +0 -5
  306. package/dist/src/yaml/steps/bitrise-android-tools.test.d.ts.map +0 -1
  307. package/dist/src/yaml/steps/bitrise-android-tools.test.js +0 -280
  308. package/dist/src/yaml/steps/bitrise-apk-info.d.ts +0 -22
  309. package/dist/src/yaml/steps/bitrise-apk-info.d.ts.map +0 -1
  310. package/dist/src/yaml/steps/bitrise-apk-info.js +0 -144
  311. package/dist/src/yaml/steps/bitrise-apk-info.test.d.ts +0 -5
  312. package/dist/src/yaml/steps/bitrise-apk-info.test.d.ts.map +0 -1
  313. package/dist/src/yaml/steps/bitrise-apk-info.test.js +0 -331
  314. package/dist/src/yaml/steps/bitrise-slack.d.ts +0 -49
  315. package/dist/src/yaml/steps/bitrise-slack.d.ts.map +0 -1
  316. package/dist/src/yaml/steps/bitrise-slack.js +0 -280
  317. package/dist/src/yaml/steps/bitrise-slack.test.d.ts +0 -5
  318. package/dist/src/yaml/steps/bitrise-slack.test.d.ts.map +0 -1
  319. package/dist/src/yaml/steps/bitrise-slack.test.js +0 -484
  320. package/dist/src/yaml/steps/bitrise-ssh.d.ts +0 -27
  321. package/dist/src/yaml/steps/bitrise-ssh.d.ts.map +0 -1
  322. package/dist/src/yaml/steps/bitrise-ssh.js +0 -134
  323. package/dist/src/yaml/steps/bitrise-ssh.test.d.ts +0 -5
  324. package/dist/src/yaml/steps/bitrise-ssh.test.d.ts.map +0 -1
  325. package/dist/src/yaml/steps/bitrise-ssh.test.js +0 -205
  326. package/dist/src/yaml/steps/cache-pull-daemon.test.d.ts +0 -27
  327. package/dist/src/yaml/steps/cache-pull-daemon.test.d.ts.map +0 -1
  328. package/dist/src/yaml/steps/cache-pull-daemon.test.js +0 -212
  329. package/dist/src/yaml/steps/cache-pull-restore-roots.test.d.ts +0 -42
  330. package/dist/src/yaml/steps/cache-pull-restore-roots.test.d.ts.map +0 -1
  331. package/dist/src/yaml/steps/cache-pull-restore-roots.test.js +0 -209
  332. package/dist/src/yaml/steps/cache-push-daemon.test.d.ts +0 -27
  333. package/dist/src/yaml/steps/cache-push-daemon.test.d.ts.map +0 -1
  334. package/dist/src/yaml/steps/cache-push-daemon.test.js +0 -171
  335. package/dist/src/yaml/steps/cache.d.ts +0 -59
  336. package/dist/src/yaml/steps/cache.d.ts.map +0 -1
  337. package/dist/src/yaml/steps/cache.js +0 -1027
  338. package/dist/src/yaml/steps/capture-injection.d.ts +0 -30
  339. package/dist/src/yaml/steps/capture-injection.d.ts.map +0 -1
  340. package/dist/src/yaml/steps/capture-injection.js +0 -88
  341. package/dist/src/yaml/steps/capture-injection.test.d.ts +0 -2
  342. package/dist/src/yaml/steps/capture-injection.test.d.ts.map +0 -1
  343. package/dist/src/yaml/steps/capture-injection.test.js +0 -163
  344. package/dist/src/yaml/steps/cocoapods-deployment-floor.d.ts +0 -42
  345. package/dist/src/yaml/steps/cocoapods-deployment-floor.d.ts.map +0 -1
  346. package/dist/src/yaml/steps/cocoapods-deployment-floor.js +0 -140
  347. package/dist/src/yaml/steps/cocoapods-deployment-floor.test.d.ts +0 -11
  348. package/dist/src/yaml/steps/cocoapods-deployment-floor.test.d.ts.map +0 -1
  349. package/dist/src/yaml/steps/cocoapods-deployment-floor.test.js +0 -176
  350. package/dist/src/yaml/steps/cocoapods-install-emits-valid-bash.test.d.ts +0 -22
  351. package/dist/src/yaml/steps/cocoapods-install-emits-valid-bash.test.d.ts.map +0 -1
  352. package/dist/src/yaml/steps/cocoapods-install-emits-valid-bash.test.js +0 -97
  353. package/dist/src/yaml/steps/cocoapods-locked-bundler.test.d.ts +0 -17
  354. package/dist/src/yaml/steps/cocoapods-locked-bundler.test.d.ts.map +0 -1
  355. package/dist/src/yaml/steps/cocoapods-locked-bundler.test.js +0 -282
  356. package/dist/src/yaml/steps/cocoapods-skip-if-absent.test.d.ts +0 -17
  357. package/dist/src/yaml/steps/cocoapods-skip-if-absent.test.d.ts.map +0 -1
  358. package/dist/src/yaml/steps/cocoapods-skip-if-absent.test.js +0 -132
  359. package/dist/src/yaml/steps/envstore-loader.test.d.ts +0 -15
  360. package/dist/src/yaml/steps/envstore-loader.test.d.ts.map +0 -1
  361. package/dist/src/yaml/steps/envstore-loader.test.js +0 -143
  362. package/dist/src/yaml/steps/fastlane.d.ts +0 -27
  363. package/dist/src/yaml/steps/fastlane.d.ts.map +0 -1
  364. package/dist/src/yaml/steps/fastlane.js +0 -79
  365. package/dist/src/yaml/steps/fidelity-aspect-guard.d.ts +0 -53
  366. package/dist/src/yaml/steps/fidelity-aspect-guard.d.ts.map +0 -1
  367. package/dist/src/yaml/steps/fidelity-aspect-guard.js +0 -72
  368. package/dist/src/yaml/steps/fidelity-aspect-guard.test.d.ts +0 -11
  369. package/dist/src/yaml/steps/fidelity-aspect-guard.test.d.ts.map +0 -1
  370. package/dist/src/yaml/steps/fidelity-aspect-guard.test.js +0 -50
  371. package/dist/src/yaml/steps/fidelity-reference-provenance.d.ts +0 -87
  372. package/dist/src/yaml/steps/fidelity-reference-provenance.d.ts.map +0 -1
  373. package/dist/src/yaml/steps/fidelity-reference-provenance.js +0 -111
  374. package/dist/src/yaml/steps/fidelity-reference-provenance.test.d.ts +0 -22
  375. package/dist/src/yaml/steps/fidelity-reference-provenance.test.d.ts.map +0 -1
  376. package/dist/src/yaml/steps/fidelity-reference-provenance.test.js +0 -118
  377. package/dist/src/yaml/steps/file.d.ts +0 -52
  378. package/dist/src/yaml/steps/file.d.ts.map +0 -1
  379. package/dist/src/yaml/steps/file.js +0 -108
  380. package/dist/src/yaml/steps/flutter.d.ts +0 -63
  381. package/dist/src/yaml/steps/flutter.d.ts.map +0 -1
  382. package/dist/src/yaml/steps/flutter.js +0 -215
  383. package/dist/src/yaml/steps/git-clone-names-the-inputs-it-ignores.test.d.ts +0 -16
  384. package/dist/src/yaml/steps/git-clone-names-the-inputs-it-ignores.test.d.ts.map +0 -1
  385. package/dist/src/yaml/steps/git-clone-names-the-inputs-it-ignores.test.js +0 -127
  386. package/dist/src/yaml/steps/git-clone.d.ts +0 -32
  387. package/dist/src/yaml/steps/git-clone.d.ts.map +0 -1
  388. package/dist/src/yaml/steps/git-clone.js +0 -171
  389. package/dist/src/yaml/steps/git-fetch-retry-exec.test.d.ts +0 -10
  390. package/dist/src/yaml/steps/git-fetch-retry-exec.test.d.ts.map +0 -1
  391. package/dist/src/yaml/steps/git-fetch-retry-exec.test.js +0 -162
  392. package/dist/src/yaml/steps/git-fetch-retry.d.ts +0 -62
  393. package/dist/src/yaml/steps/git-fetch-retry.d.ts.map +0 -1
  394. package/dist/src/yaml/steps/git-fetch-retry.js +0 -155
  395. package/dist/src/yaml/steps/git-fetch-retry.test.d.ts +0 -5
  396. package/dist/src/yaml/steps/git-fetch-retry.test.d.ts.map +0 -1
  397. package/dist/src/yaml/steps/git-fetch-retry.test.js +0 -86
  398. package/dist/src/yaml/steps/google-play-deploy.d.ts +0 -37
  399. package/dist/src/yaml/steps/google-play-deploy.d.ts.map +0 -1
  400. package/dist/src/yaml/steps/google-play-deploy.js +0 -193
  401. package/dist/src/yaml/steps/google-play-deploy.test.d.ts +0 -5
  402. package/dist/src/yaml/steps/google-play-deploy.test.d.ts.map +0 -1
  403. package/dist/src/yaml/steps/google-play-deploy.test.js +0 -310
  404. package/dist/src/yaml/steps/gradle-memory.d.ts +0 -61
  405. package/dist/src/yaml/steps/gradle-memory.d.ts.map +0 -1
  406. package/dist/src/yaml/steps/gradle-memory.js +0 -386
  407. package/dist/src/yaml/steps/gradle-memory.test.d.ts +0 -2
  408. package/dist/src/yaml/steps/gradle-memory.test.d.ts.map +0 -1
  409. package/dist/src/yaml/steps/gradle-memory.test.js +0 -344
  410. package/dist/src/yaml/steps/gradle-sdk-cmake.d.ts +0 -28
  411. package/dist/src/yaml/steps/gradle-sdk-cmake.d.ts.map +0 -1
  412. package/dist/src/yaml/steps/gradle-sdk-cmake.js +0 -107
  413. package/dist/src/yaml/steps/gradle-sdk-cmake.test.d.ts +0 -2
  414. package/dist/src/yaml/steps/gradle-sdk-cmake.test.d.ts.map +0 -1
  415. package/dist/src/yaml/steps/gradle-sdk-cmake.test.js +0 -183
  416. package/dist/src/yaml/steps/index.d.ts +0 -10
  417. package/dist/src/yaml/steps/index.d.ts.map +0 -1
  418. package/dist/src/yaml/steps/index.js +0 -1461
  419. package/dist/src/yaml/steps/ios-deps.d.ts +0 -78
  420. package/dist/src/yaml/steps/ios-deps.d.ts.map +0 -1
  421. package/dist/src/yaml/steps/ios-deps.js +0 -279
  422. package/dist/src/yaml/steps/ios-deps.test.d.ts +0 -5
  423. package/dist/src/yaml/steps/ios-deps.test.d.ts.map +0 -1
  424. package/dist/src/yaml/steps/ios-deps.test.js +0 -90
  425. package/dist/src/yaml/steps/ios-signing.d.ts +0 -31
  426. package/dist/src/yaml/steps/ios-signing.d.ts.map +0 -1
  427. package/dist/src/yaml/steps/ios-signing.js +0 -144
  428. package/dist/src/yaml/steps/ios-version.d.ts +0 -47
  429. package/dist/src/yaml/steps/ios-version.d.ts.map +0 -1
  430. package/dist/src/yaml/steps/ios-version.js +0 -151
  431. package/dist/src/yaml/steps/java-home-version-spec.test.d.ts +0 -10
  432. package/dist/src/yaml/steps/java-home-version-spec.test.d.ts.map +0 -1
  433. package/dist/src/yaml/steps/java-home-version-spec.test.js +0 -58
  434. package/dist/src/yaml/steps/linting.d.ts +0 -47
  435. package/dist/src/yaml/steps/linting.d.ts.map +0 -1
  436. package/dist/src/yaml/steps/linting.js +0 -148
  437. package/dist/src/yaml/steps/phase2.test.d.ts +0 -6
  438. package/dist/src/yaml/steps/phase2.test.d.ts.map +0 -1
  439. package/dist/src/yaml/steps/phase2.test.js +0 -197
  440. package/dist/src/yaml/steps/phase3.test.d.ts +0 -5
  441. package/dist/src/yaml/steps/phase3.test.d.ts.map +0 -1
  442. package/dist/src/yaml/steps/phase3.test.js +0 -144
  443. package/dist/src/yaml/steps/phase4.test.d.ts +0 -5
  444. package/dist/src/yaml/steps/phase4.test.d.ts.map +0 -1
  445. package/dist/src/yaml/steps/phase4.test.js +0 -166
  446. package/dist/src/yaml/steps/phase5.test.d.ts +0 -6
  447. package/dist/src/yaml/steps/phase5.test.d.ts.map +0 -1
  448. package/dist/src/yaml/steps/phase5.test.js +0 -263
  449. package/dist/src/yaml/steps/registry.d.ts +0 -88
  450. package/dist/src/yaml/steps/registry.d.ts.map +0 -1
  451. package/dist/src/yaml/steps/registry.js +0 -125
  452. package/dist/src/yaml/steps/registry.test.d.ts +0 -5
  453. package/dist/src/yaml/steps/registry.test.d.ts.map +0 -1
  454. package/dist/src/yaml/steps/registry.test.js +0 -235
  455. package/dist/src/yaml/steps/release.d.ts +0 -50
  456. package/dist/src/yaml/steps/release.d.ts.map +0 -1
  457. package/dist/src/yaml/steps/release.js +0 -154
  458. package/dist/src/yaml/steps/render-post-processor.d.ts +0 -100
  459. package/dist/src/yaml/steps/render-post-processor.d.ts.map +0 -1
  460. package/dist/src/yaml/steps/render-post-processor.js +0 -270
  461. package/dist/src/yaml/steps/render-post-processor.test.d.ts +0 -13
  462. package/dist/src/yaml/steps/render-post-processor.test.d.ts.map +0 -1
  463. package/dist/src/yaml/steps/render-post-processor.test.js +0 -220
  464. package/dist/src/yaml/steps/script.d.ts +0 -23
  465. package/dist/src/yaml/steps/script.d.ts.map +0 -1
  466. package/dist/src/yaml/steps/script.js +0 -63
  467. package/dist/src/yaml/steps/spec-validation.test.d.ts +0 -6
  468. package/dist/src/yaml/steps/spec-validation.test.d.ts.map +0 -1
  469. package/dist/src/yaml/steps/spec-validation.test.js +0 -130
  470. package/dist/src/yaml/steps/steps.test.d.ts +0 -6
  471. package/dist/src/yaml/steps/steps.test.d.ts.map +0 -1
  472. package/dist/src/yaml/steps/steps.test.js +0 -881
  473. package/dist/src/yaml/steps/structural-facts.d.ts +0 -992
  474. package/dist/src/yaml/steps/structural-facts.d.ts.map +0 -1
  475. package/dist/src/yaml/steps/structural-facts.js +0 -3276
  476. package/dist/src/yaml/steps/structural-facts.test.d.ts +0 -12
  477. package/dist/src/yaml/steps/structural-facts.test.d.ts.map +0 -1
  478. package/dist/src/yaml/steps/structural-facts.test.js +0 -3039
  479. package/dist/src/yaml/steps/test-config.d.ts +0 -5
  480. package/dist/src/yaml/steps/test-config.d.ts.map +0 -1
  481. package/dist/src/yaml/steps/test-config.js +0 -25
  482. package/dist/src/yaml/steps/trim-align-corpus.test.d.ts +0 -28
  483. package/dist/src/yaml/steps/trim-align-corpus.test.d.ts.map +0 -1
  484. package/dist/src/yaml/steps/trim-align-corpus.test.js +0 -383
  485. package/dist/src/yaml/steps/trim-align.d.ts +0 -87
  486. package/dist/src/yaml/steps/trim-align.d.ts.map +0 -1
  487. package/dist/src/yaml/steps/trim-align.js +0 -367
  488. package/dist/src/yaml/steps/trim-align.test.d.ts +0 -11
  489. package/dist/src/yaml/steps/trim-align.test.d.ts.map +0 -1
  490. package/dist/src/yaml/steps/trim-align.test.js +0 -261
  491. package/dist/src/yaml/steps/ui-fidelity-preview-android.d.ts +0 -66
  492. package/dist/src/yaml/steps/ui-fidelity-preview-android.d.ts.map +0 -1
  493. package/dist/src/yaml/steps/ui-fidelity-preview-android.js +0 -251
  494. package/dist/src/yaml/steps/ui-fidelity-preview-android.test.d.ts +0 -13
  495. package/dist/src/yaml/steps/ui-fidelity-preview-android.test.d.ts.map +0 -1
  496. package/dist/src/yaml/steps/ui-fidelity-preview-android.test.js +0 -302
  497. package/dist/src/yaml/steps/ui-fidelity-preview.d.ts +0 -134
  498. package/dist/src/yaml/steps/ui-fidelity-preview.d.ts.map +0 -1
  499. package/dist/src/yaml/steps/ui-fidelity-preview.js +0 -173
  500. package/dist/src/yaml/steps/ui-fidelity-preview.test.d.ts +0 -11
  501. package/dist/src/yaml/steps/ui-fidelity-preview.test.d.ts.map +0 -1
  502. package/dist/src/yaml/steps/ui-fidelity-preview.test.js +0 -210
  503. package/dist/src/yaml/steps/ui-fidelity-render-android.d.ts +0 -155
  504. package/dist/src/yaml/steps/ui-fidelity-render-android.d.ts.map +0 -1
  505. package/dist/src/yaml/steps/ui-fidelity-render-android.js +0 -1389
  506. package/dist/src/yaml/steps/ui-fidelity-render-android.test.d.ts +0 -2
  507. package/dist/src/yaml/steps/ui-fidelity-render-android.test.d.ts.map +0 -1
  508. package/dist/src/yaml/steps/ui-fidelity-render-android.test.js +0 -1106
  509. package/dist/src/yaml/steps/ui-fidelity-render.d.ts +0 -230
  510. package/dist/src/yaml/steps/ui-fidelity-render.d.ts.map +0 -1
  511. package/dist/src/yaml/steps/ui-fidelity-render.js +0 -1597
  512. package/dist/src/yaml/steps/ui-fidelity-render.test.d.ts +0 -18
  513. package/dist/src/yaml/steps/ui-fidelity-render.test.d.ts.map +0 -1
  514. package/dist/src/yaml/steps/ui-fidelity-render.test.js +0 -1871
  515. package/dist/src/yaml/steps/xcode-app-product.d.ts +0 -90
  516. package/dist/src/yaml/steps/xcode-app-product.d.ts.map +0 -1
  517. package/dist/src/yaml/steps/xcode-app-product.js +0 -247
  518. package/dist/src/yaml/steps/xcode-app-product.test.d.ts +0 -2
  519. package/dist/src/yaml/steps/xcode-app-product.test.d.ts.map +0 -1
  520. package/dist/src/yaml/steps/xcode-app-product.test.js +0 -202
  521. package/dist/src/yaml/steps/xcode-derived-data.test.d.ts +0 -30
  522. package/dist/src/yaml/steps/xcode-derived-data.test.d.ts.map +0 -1
  523. package/dist/src/yaml/steps/xcode-derived-data.test.js +0 -279
  524. package/dist/src/yaml/steps/xcode-destination.d.ts +0 -47
  525. package/dist/src/yaml/steps/xcode-destination.d.ts.map +0 -1
  526. package/dist/src/yaml/steps/xcode-destination.js +0 -202
  527. package/dist/src/yaml/steps/xcode-destination.test.d.ts +0 -9
  528. package/dist/src/yaml/steps/xcode-destination.test.d.ts.map +0 -1
  529. package/dist/src/yaml/steps/xcode-destination.test.js +0 -227
  530. package/dist/src/yaml/steps/xcode-new.test.d.ts +0 -5
  531. package/dist/src/yaml/steps/xcode-new.test.d.ts.map +0 -1
  532. package/dist/src/yaml/steps/xcode-new.test.js +0 -211
  533. package/dist/src/yaml/steps/xcode-resolve-retry.test.d.ts +0 -9
  534. package/dist/src/yaml/steps/xcode-resolve-retry.test.d.ts.map +0 -1
  535. package/dist/src/yaml/steps/xcode-resolve-retry.test.js +0 -146
  536. package/dist/src/yaml/steps/xcode-simulator-archs.d.ts +0 -53
  537. package/dist/src/yaml/steps/xcode-simulator-archs.d.ts.map +0 -1
  538. package/dist/src/yaml/steps/xcode-simulator-archs.js +0 -98
  539. package/dist/src/yaml/steps/xcode-simulator-archs.test.d.ts +0 -21
  540. package/dist/src/yaml/steps/xcode-simulator-archs.test.d.ts.map +0 -1
  541. package/dist/src/yaml/steps/xcode-simulator-archs.test.js +0 -155
  542. package/dist/src/yaml/steps/xcode.d.ts +0 -230
  543. package/dist/src/yaml/steps/xcode.d.ts.map +0 -1
  544. package/dist/src/yaml/steps/xcode.js +0 -1350
  545. package/dist/src/yaml/types.d.ts +0 -76
  546. package/dist/src/yaml/types.d.ts.map +0 -1
  547. package/dist/src/yaml/types.js +0 -5
  548. package/dist/src/yaml/validation-types.d.ts +0 -102
  549. package/dist/src/yaml/validation-types.d.ts.map +0 -1
  550. package/dist/src/yaml/validation-types.js +0 -8
  551. package/dist/src/yaml/yaml-updater.d.ts +0 -24
  552. package/dist/src/yaml/yaml-updater.d.ts.map +0 -1
  553. package/dist/src/yaml/yaml-updater.js +0 -128
@@ -1,209 +0,0 @@
1
- /**
2
- * `cache-pull` restores every cached path to the root it was recorded against.
3
- *
4
- * `cache-push` archives two kinds of entry in one tarball. A `~`- or `/`-rooted
5
- * path is expanded and tar stores it with the leading `/` stripped
6
- * (`/home/builder/.gradle/caches` -> `home/builder/.gradle/caches`). A
7
- * project-relative path (`Pods`, `.gradle`, `node_modules`) is stored as-is,
8
- * relative to the step's working directory. Every restore then used a single
9
- * `tar -xf - -C /`, which is right for the first kind and impossible for the
10
- * second: the build user cannot create `/Pods`.
11
- *
12
- * Three shapes, three different failures, all measured before this was fixed:
13
- *
14
- * | `cache_paths` | before |
15
- * |------------------------------------------|---------------------------------|
16
- * | all `~`-rooted | correct |
17
- * | mixed (every Gradle/Android pipeline) | `~` half landed, relative half never did, tar exited non-zero, reported **cold** on a build that was warm |
18
- * | all project-relative (Pods, node_modules)| **nothing** landed — those caches were written on every build and had never restored |
19
- *
20
- * So the mixed shape lied and the all-relative shape silently did nothing. Both
21
- * are asserted here, and the all-`~` shape is asserted too because it already
22
- * worked and the fix must not cost it anything.
23
- *
24
- * ### Why this runs the real `tar`
25
- *
26
- * The sibling daemon suite stubs `tar` to `cat > /dev/null`, because the
27
- * generated script extracts with `-C /` and nothing there is worth writing to
28
- * the root of the machine running the suite. This suite cannot: *where the
29
- * bytes land* is the entire question, and a stub answers it by construction.
30
- *
31
- * It stays out of the real root by pointing `CIBUILD_USER_HOME` at a temporary
32
- * directory. `~/.gradle/caches` then expands to an absolute path *inside* that
33
- * directory, so `-C /` reassembles it exactly where it belongs and writes
34
- * nothing outside the temp tree. The path is resolved through `realpath` first:
35
- * on macOS `/var` is a symlink to `/private/var`, and tar refuses to extract
36
- * through a symlink.
37
- *
38
- * `zstd` is stubbed to an identity copy, as in the sibling suite — it is not on
39
- * every host, and compression is not what is under test.
40
- */
41
- import { describe, test, expect } from '@jest/globals';
42
- import { execFile } from 'child_process';
43
- import { createHash } from 'crypto';
44
- import { mkdtempSync, mkdirSync, writeFileSync, readFileSync, existsSync, realpathSync, rmSync, chmodSync, } from 'fs';
45
- import { join } from 'path';
46
- import { tmpdir } from 'os';
47
- import { promisify } from 'util';
48
- import { CachePullStepExecutor } from './cache.js';
49
- import { testConfigNoPeer } from './test-config.js';
50
- const run = promisify(execFile);
51
- const CACHE_KEY = 'gradle-abc123def456-fingerprint';
52
- /**
53
- * An explicit `cache_key` is prefixed with a project scope so two repositories
54
- * that write the same key don't share one tarball. These fixtures run outside a
55
- * git remote, so the step's shell falls back to hashing the literal
56
- * `"no-remote"` — derived here rather than pasted, so it tracks the step.
57
- */
58
- const PROJECT_SCOPE = createHash('sha256').update('no-remote', 'utf8').digest('hex').slice(0, 8);
59
- const SCOPED_CACHE_KEY = `${PROJECT_SCOPE}-${CACHE_KEY}`;
60
- async function restore(shape) {
61
- // Resolved: see the header — tar will not extract through a symlink, and on
62
- // macOS the temp root sits behind one.
63
- const root = realpathSync(mkdtempSync(join(tmpdir(), 'cibuild-restore-roots-')));
64
- const home = join(root, 'home');
65
- const checkout = join(root, 'checkout');
66
- const bin = join(root, 'bin');
67
- mkdirSync(home, { recursive: true });
68
- mkdirSync(checkout, { recursive: true });
69
- mkdirSync(bin, { recursive: true });
70
- try {
71
- // Identity stand-in for zstd: copies a named file, or stdin when the
72
- // daemon path pipes into it.
73
- writeFileSync(join(bin, 'zstd'), '#!/bin/bash\nfor a in "$@"; do case "$a" in -*) ;; *) exec cat "$a";; esac; done\nexec cat\n', 'utf-8');
74
- chmodSync(join(bin, 'zstd'), 0o755);
75
- // Create the content, remembering where each piece has to return to.
76
- const landings = [];
77
- const operands = [];
78
- for (const f of shape.files) {
79
- const [where, rel] = f.at.split(':', 2);
80
- const base = where === 'home' ? home : checkout;
81
- const abs = join(base, rel);
82
- mkdirSync(join(abs, '..'), { recursive: true });
83
- writeFileSync(abs, f.body, 'utf-8');
84
- landings.push({ path: abs, body: f.body });
85
- }
86
- // The tar operands are what cache-push would have built: `~` paths
87
- // expanded to absolute, project-relative paths left alone.
88
- for (const p of shape.cachePaths) {
89
- operands.push(p.startsWith('~') ? join(home, p.slice(2)) : p);
90
- }
91
- // One archive, mixed operands, created from the checkout — exactly what
92
- // `tar -cf - "${PATHS_TO_CACHE[@]}"` produces.
93
- const cacheDir = join(checkout, '.ci-cache');
94
- mkdirSync(cacheDir, { recursive: true });
95
- const tarball = join(cacheDir, `${SCOPED_CACHE_KEY}.tar.zst`);
96
- await run('tar', ['-cf', tarball, ...operands], { cwd: checkout });
97
- // Remove the originals: "it landed" is only meaningful if it was gone.
98
- for (const l of landings)
99
- rmSync(l.path, { force: true });
100
- const { script } = await new CachePullStepExecutor().execute({ cache_key: CACHE_KEY, cache_paths: shape.cachePaths }, {}, testConfigNoPeer);
101
- const scriptPath = join(root, '__cache_pull.sh');
102
- writeFileSync(scriptPath, script, 'utf-8');
103
- const env = {
104
- ...process.env,
105
- PATH: `${bin}:${process.env.PATH}`,
106
- CIBUILD_USER_HOME: home,
107
- };
108
- // The filesystem transport is the one under test here; the daemon URL
109
- // would switch the script to the HTTP path.
110
- delete env.CIBUILD_CACHE_DAEMON;
111
- let stdout = '';
112
- let exitCode = 0;
113
- try {
114
- const r = await run('bash', [scriptPath], {
115
- cwd: checkout,
116
- encoding: 'utf-8',
117
- env,
118
- timeout: 20000,
119
- });
120
- stdout = String(r.stdout) + String(r.stderr);
121
- }
122
- catch (e) {
123
- const err = e;
124
- stdout = String(err.stdout ?? '') + String(err.stderr ?? '');
125
- exitCode = err.code ?? 1;
126
- }
127
- // Read the landings back while the tree is still alive.
128
- const observed = landings.map((l) => ({
129
- path: l.path,
130
- body: existsSync(l.path) ? readFileSync(l.path, 'utf-8') : '',
131
- }));
132
- return { stdout, exitCode, landings: observed };
133
- }
134
- finally {
135
- rmSync(root, { recursive: true, force: true });
136
- }
137
- }
138
- describe('cache-pull restores each class of path to its own root', () => {
139
- test('all `~`-rooted: keeps working, and still streams', async () => {
140
- // The shape that was already correct. It is here so the fix cannot buy the
141
- // other two at its expense.
142
- const { stdout, exitCode, landings } = await restore({
143
- cachePaths: ['~/.gradle/caches'],
144
- files: [{ at: 'home:.gradle/caches/modules/marker', body: 'gradle-cache\n' }],
145
- });
146
- expect(exitCode).toBe(0);
147
- expect(stdout).toContain('CACHE_SOURCE=local');
148
- expect(stdout).not.toContain('CACHE_SOURCE=cold');
149
- expect(landings).toEqual([
150
- { path: landings[0].path, body: 'gradle-cache\n' },
151
- ]);
152
- });
153
- test('mixed: reports warm AND the project-relative half lands in the checkout', async () => {
154
- // Every Gradle/Android pipeline, including the one the README ships. Before
155
- // the fix: the `~` half restored (that was the real warmth), `.gradle`
156
- // could not become `/.gradle`, tar exited non-zero, and the step reported
157
- // CACHE_SOURCE=cold — on the filesystem transport it ended the step outright.
158
- const { stdout, exitCode, landings } = await restore({
159
- cachePaths: ['~/.gradle/caches', '.gradle'],
160
- files: [
161
- { at: 'home:.gradle/caches/modules/marker', body: 'gradle-cache\n' },
162
- { at: 'checkout:.gradle/configuration-cache/marker', body: 'project-gradle\n' },
163
- ],
164
- });
165
- expect(exitCode).toBe(0);
166
- expect(stdout).toContain('CACHE_SOURCE=local');
167
- expect(stdout).not.toContain('CACHE_SOURCE=cold');
168
- // Both halves, at their own roots.
169
- expect(landings.map((l) => l.body)).toEqual(['gradle-cache\n', 'project-gradle\n']);
170
- });
171
- test('all project-relative: restores into the checkout instead of nothing', async () => {
172
- // The iOS/Pods and node shape. Before the fix every member was extracted to
173
- // `/` and every one failed, so these caches were pushed on every build and
174
- // had never restored anything — a silent miss that costs a `pod install`
175
- // rather than failing a build, which is why it went unnoticed.
176
- const { stdout, exitCode, landings } = await restore({
177
- cachePaths: ['Pods', 'Podfile.lock'],
178
- files: [
179
- { at: 'checkout:Pods/Alamofire/marker', body: 'pods\n' },
180
- { at: 'checkout:Podfile.lock', body: 'lock\n' },
181
- ],
182
- });
183
- expect(exitCode).toBe(0);
184
- expect(stdout).toContain('CACHE_SOURCE=local');
185
- expect(stdout).not.toContain('CACHE_SOURCE=cold');
186
- expect(landings.map((l) => l.body)).toEqual(['pods\n', 'lock\n']);
187
- });
188
- test('a project-relative path is never written to the filesystem root', async () => {
189
- // The direct statement of the bug: `Pods` must not be attempted at `/Pods`.
190
- // Asserted on the generated script rather than by running it, because the
191
- // only honest runtime check would be whether `/Pods` appeared on the
192
- // machine running the suite.
193
- const { script } = await new CachePullStepExecutor().execute({ cache_key: CACHE_KEY, cache_paths: ['~/.gradle/caches', 'Pods'] }, {}, testConfigNoPeer);
194
- // No restore pipes into `tar -C /` any more; they all go through the
195
- // helper, which picks the root per class. The helper keeps a single
196
- // streaming `tar -xf - -C /` for the all-absolute shape, so the assertion
197
- // is about the call sites, not about the string appearing anywhere.
198
- expect(script).not.toContain('| tar -xf - -C /');
199
- expect(script).toContain('| __ci_cache_extract');
200
- // `Pods` is declared project-relative, so it can only be extracted
201
- // relative to the checkout ...
202
- expect(script).toContain('__ci_cache_rel+=(\'Pods\')');
203
- // ... and the tilde path is expanded at runtime, then matched against the
204
- // archive's own top-level names.
205
- expect(script).toContain('__ci_cache_abs+=("${__ci_p#/}")');
206
- expect(script).toContain('tar -xf "$__t" -C "$__ci_cache_root"');
207
- });
208
- });
209
- //# sourceMappingURL=cache-pull-restore-roots.test.js.map
@@ -1,27 +0,0 @@
1
- /**
2
- * `cache-push` with an explicit `cache_key`, over the daemon.
3
- *
4
- * Every curated Invarn template uses the explicit-key form — `cache_key:
5
- * pods-{{checksum "Podfile.lock"}}-$CIBUILD_GIT_BRANCH` and its Gradle/KMM
6
- * siblings — for both halves of the pair. The pull side assigns the shell
7
- * variable the daemon URL interpolates; the push side did not, and there is
8
- * no `set -u`, so `$CACHE_KEY` expanded to nothing and the upload went to
9
- * `<daemon>/cache/.tar.zst`. The daemon requires at least one character
10
- * before `.tar.zst` and answers 400, which is exactly what the first real
11
- * `invarn setup` proof logged on 2026-08-30:
12
- *
13
- * curl: (22) The requested URL returned error: 400
14
- * Warning: failed to upload cache to the daemon
15
- * [step_6] ✓ Success (109ms)
16
- *
17
- * Nothing was ever stored, so the pull could never hit, and every iOS build
18
- * paid a cold `pod install`.
19
- *
20
- * These tests RUN the generated script. A containment check on the script
21
- * text cannot see this defect: the text contains the literal `$CACHE_KEY`
22
- * either way, which is why the existing assertion passed throughout. `curl`
23
- * and `zstd` are stubbed onto PATH so the pipeline completes on any host and
24
- * the URL actually requested can be read back.
25
- */
26
- export {};
27
- //# sourceMappingURL=cache-push-daemon.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache-push-daemon.test.d.ts","sourceRoot":"","sources":["../../../../src/yaml/steps/cache-push-daemon.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG"}
@@ -1,171 +0,0 @@
1
- /**
2
- * `cache-push` with an explicit `cache_key`, over the daemon.
3
- *
4
- * Every curated Invarn template uses the explicit-key form — `cache_key:
5
- * pods-{{checksum "Podfile.lock"}}-$CIBUILD_GIT_BRANCH` and its Gradle/KMM
6
- * siblings — for both halves of the pair. The pull side assigns the shell
7
- * variable the daemon URL interpolates; the push side did not, and there is
8
- * no `set -u`, so `$CACHE_KEY` expanded to nothing and the upload went to
9
- * `<daemon>/cache/.tar.zst`. The daemon requires at least one character
10
- * before `.tar.zst` and answers 400, which is exactly what the first real
11
- * `invarn setup` proof logged on 2026-08-30:
12
- *
13
- * curl: (22) The requested URL returned error: 400
14
- * Warning: failed to upload cache to the daemon
15
- * [step_6] ✓ Success (109ms)
16
- *
17
- * Nothing was ever stored, so the pull could never hit, and every iOS build
18
- * paid a cold `pod install`.
19
- *
20
- * These tests RUN the generated script. A containment check on the script
21
- * text cannot see this defect: the text contains the literal `$CACHE_KEY`
22
- * either way, which is why the existing assertion passed throughout. `curl`
23
- * and `zstd` are stubbed onto PATH so the pipeline completes on any host and
24
- * the URL actually requested can be read back.
25
- */
26
- import { describe, test, expect } from '@jest/globals';
27
- import { execFileSync } from 'child_process';
28
- import { createHash } from 'crypto';
29
- import { mkdtempSync, mkdirSync, writeFileSync, readFileSync, rmSync, existsSync, chmodSync } from 'fs';
30
- import { join } from 'path';
31
- import { tmpdir } from 'os';
32
- import { CachePushStepExecutor } from './cache.js';
33
- import { testConfigNoPeer } from './test-config.js';
34
- const CACHE_KEY = 'pods-abc123def456-main';
35
- /**
36
- * An explicit `cache_key` is prefixed with a project scope so two repositories
37
- * writing the same key don't share a tarball. These fixtures run outside a git
38
- * remote, so the step's shell hashes the literal `"no-remote"` — derived here
39
- * rather than pasted, so it tracks the step.
40
- */
41
- const PROJECT_SCOPE = createHash('sha256').update('no-remote', 'utf8').digest('hex').slice(0, 8);
42
- const SCOPED_CACHE_KEY = `${PROJECT_SCOPE}-${CACHE_KEY}`;
43
- /**
44
- * Generates the explicit-key push step, runs it, and reports what `curl` was
45
- * actually asked to do.
46
- *
47
- * @param curlExit exit status the stub returns, and `curlBody` is what it
48
- * prints — so a rejection can be exercised without a daemon.
49
- * @param zstdExit exit status the `zstd` stub returns, which is how the
50
- * *middle* stage is made to fail. 127 is what a shell that
51
- * cannot find the binary produces, i.e. an image without it.
52
- */
53
- async function runPush({ curlExit = 0, curlBody = '', zstdExit = 0, } = {}) {
54
- const dir = mkdtempSync(join(tmpdir(), 'cibuild-push-'));
55
- try {
56
- // Something real to cache, so the step does not take its empty branch.
57
- const payload = join(dir, 'Pods');
58
- mkdirSync(payload, { recursive: true });
59
- writeFileSync(join(payload, 'thing.txt'), 'contents\n', 'utf-8');
60
- const bin = join(dir, 'bin');
61
- mkdirSync(bin, { recursive: true });
62
- const urlLog = join(dir, 'curl-urls.txt');
63
- // Records the URL, drains stdin so the upstream pipe does not break.
64
- writeFileSync(join(bin, 'curl'), [
65
- '#!/bin/bash',
66
- 'for arg in "$@"; do',
67
- ' case "$arg" in',
68
- ` http*) printf '%s\\n' "$arg" >> "${urlLog}" ;;`,
69
- ' esac',
70
- 'done',
71
- 'cat > /dev/null',
72
- curlBody ? `printf '%s' ${JSON.stringify(curlBody)}` : ':',
73
- `exit ${curlExit}`,
74
- ].join('\n'), 'utf-8');
75
- chmodSync(join(bin, 'curl'), 0o755);
76
- // zstd is not on every host, and without it the pipeline fails before
77
- // curl is ever reached — which would make these tests pass vacuously.
78
- // A failing stub drains stdin before exiting, so tar completes normally
79
- // and the only non-zero status in the pipeline is the one under test.
80
- writeFileSync(join(bin, 'zstd'), zstdExit === 0
81
- ? '#!/bin/bash\ncat\n'
82
- : `#!/bin/bash\ncat > /dev/null\nexit ${zstdExit}\n`, 'utf-8');
83
- chmodSync(join(bin, 'zstd'), 0o755);
84
- const { script } = await new CachePushStepExecutor().execute({ cache_key: CACHE_KEY, cache_paths: ['Pods'] }, {}, testConfigNoPeer);
85
- const scriptPath = join(dir, '__cache_push.sh');
86
- writeFileSync(scriptPath, script, 'utf-8');
87
- let stdout = '';
88
- try {
89
- stdout = execFileSync('bash', [scriptPath], {
90
- cwd: dir,
91
- encoding: 'utf-8',
92
- stdio: ['ignore', 'pipe', 'pipe'],
93
- env: {
94
- ...process.env,
95
- PATH: `${bin}:${process.env.PATH}`,
96
- CIBUILD_CACHE_DAEMON: 'http://daemon.invalid',
97
- CIBUILD_CACHE_TOKEN: 'tok',
98
- },
99
- timeout: 20000,
100
- });
101
- }
102
- catch (e) {
103
- const err = e;
104
- stdout = String(err.stdout ?? '') + String(err.stderr ?? '');
105
- }
106
- const urls = existsSync(urlLog)
107
- ? readFileSync(urlLog, 'utf-8').split('\n').filter(Boolean)
108
- : [];
109
- return { stdout, urls };
110
- }
111
- finally {
112
- rmSync(dir, { recursive: true, force: true });
113
- }
114
- }
115
- describe('cache-push with an explicit key, over the daemon', () => {
116
- test('uploads under the key it was given', async () => {
117
- const { urls } = await runPush();
118
- expect(urls).toHaveLength(1);
119
- expect(urls[0]).toBe(`http://daemon.invalid/cache/${SCOPED_CACHE_KEY}.tar.zst`);
120
- });
121
- test('never uploads to an empty key', async () => {
122
- // The defect, named. `<daemon>/cache/.tar.zst` is what an unassigned
123
- // `$CACHE_KEY` produces, and what the daemon answers 400 to.
124
- const { urls } = await runPush();
125
- for (const url of urls) {
126
- expect(url).not.toMatch(/\/cache\/\.tar\.zst$/);
127
- }
128
- });
129
- test('the step survives a rejection rather than failing the build', async () => {
130
- // Deliberate: a build that produced good output should not be failed by a
131
- // cache upload. Whether the STEP should still report success having
132
- // stored nothing is a separate, open question.
133
- const { stdout } = await runPush({ curlExit: 22 });
134
- expect(stdout).toContain('Warning: failed to upload cache to the daemon');
135
- });
136
- test('a rejection says why, not just that it happened', async () => {
137
- // `curl -f` throws the response body away, so the daemon's own reason —
138
- // `invalid_cache_key`, `cache_busy`, an auth failure — never reached the
139
- // log. All the reader got was an exit code, which is how a one-line bug
140
- // stayed open behind a warning that named nothing.
141
- const { stdout } = await runPush({
142
- curlExit: 22,
143
- curlBody: '{"error":"invalid_cache_key"}',
144
- });
145
- expect(stdout).toContain('invalid_cache_key');
146
- });
147
- test('a failed compressor is not reported as the daemon saying yes', async () => {
148
- // What a worker image with no zstd binary actually logged:
149
- //
150
- // Warning: failed to upload cache to the daemon — {"ok":true}
151
- //
152
- // `--fail-with-body` writes the daemon's response body to curl's *stdout*
153
- // on success as well as on refusal, and the old code captured that as the
154
- // failure reason. curl is perfectly happy to upload nothing, so the
155
- // success body is precisely what a broken middle stage produces — the
156
- // warning blamed the one stage that worked.
157
- const { stdout } = await runPush({ zstdExit: 127, curlBody: '{"ok":true}' });
158
- expect(stdout).toContain('Warning: failed to upload cache to the daemon');
159
- expect(stdout).not.toContain('{"ok":true}');
160
- expect(stdout).toContain('zstd is not installed');
161
- });
162
- test('a middle stage failing for any other reason still names the stage', async () => {
163
- // 127 is the case that bit us, but the fix is not about 127: the reason is
164
- // only the daemon's answer when the daemon is what refused.
165
- const { stdout } = await runPush({ zstdExit: 1, curlBody: '{"ok":true}' });
166
- expect(stdout).toContain('Warning: failed to upload cache to the daemon');
167
- expect(stdout).not.toContain('{"ok":true}');
168
- expect(stdout).toContain('zstd exited 1');
169
- });
170
- });
171
- //# sourceMappingURL=cache-push-daemon.test.js.map
@@ -1,59 +0,0 @@
1
- /**
2
- * Cache step implementations (cache-pull and cache-push)
3
- */
4
- import { BaseStepExecutor } from './base.js';
5
- import type { StepDef, CIConfig } from '../../types.js';
6
- /**
7
- * Built-in cache presets per technology.
8
- * When `technology` is set on a cache step, either the single `lockfile` is
9
- * checksummed, or the list of `fingerprint` filenames is discovered and
10
- * content-hashed, to produce the cache key. The listed `paths` are then
11
- * cached/restored under that key.
12
- */
13
- export interface CachePreset {
14
- /** Single lockfile path to checksum. Use for toolchains with authoritative lockfiles (Podfile.lock, package-lock.json…). */
15
- lockfile?: string;
16
- /** Filenames to discover+hash across the repo. Use when no single file captures the full build graph (Gradle/KMM). */
17
- fingerprint?: string[];
18
- keyPrefix: string;
19
- paths: string[];
20
- /** Optional fallback preset name: if primary lockfile not found, use this preset's lockfile/key/paths */
21
- fallback?: string;
22
- }
23
- export declare const CACHE_PRESETS: Record<string, CachePreset>;
24
- /**
25
- * Inputs for cache-pull step
26
- */
27
- export interface CachePullInputs {
28
- technology?: string;
29
- cache_paths?: string[];
30
- cache_key?: string;
31
- is_debug_mode?: boolean;
32
- }
33
- /**
34
- * Inputs for cache-push step
35
- */
36
- export interface CachePushInputs {
37
- technology?: string;
38
- cache_paths?: string[];
39
- cache_key?: string;
40
- is_debug_mode?: boolean;
41
- ignore_check_on_paths?: boolean;
42
- }
43
- /**
44
- * Cache pull step executor
45
- * Restores cached files from cache directory
46
- */
47
- export declare class CachePullStepExecutor extends BaseStepExecutor {
48
- execute(inputs: CachePullInputs, env: Record<string, string>, config: CIConfig): Promise<StepDef>;
49
- private executeWithPreset;
50
- }
51
- /**
52
- * Cache push step executor
53
- * Saves files to cache directory
54
- */
55
- export declare class CachePushStepExecutor extends BaseStepExecutor {
56
- execute(inputs: CachePushInputs, env: Record<string, string>, config: CIConfig): Promise<StepDef>;
57
- private executeWithPreset;
58
- }
59
- //# sourceMappingURL=cache.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../../src/yaml/steps/cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAkBxD;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,4HAA4H;IAC5H,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sHAAsH;IACtH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,yGAAyG;IACzG,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAUrD,CAAC;AA4bF;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,gBAAgB;IACnD,OAAO,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;YAiJzF,iBAAiB;CAkNhC;AAED;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,gBAAgB;IACnD,OAAO,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;YA2KzF,iBAAiB;CAgJhC"}