@invarn/cibuild 2.9.4 → 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 (547) 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 -1084
  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/cocoapods-deployment-floor.d.ts +0 -42
  339. package/dist/src/yaml/steps/cocoapods-deployment-floor.d.ts.map +0 -1
  340. package/dist/src/yaml/steps/cocoapods-deployment-floor.js +0 -140
  341. package/dist/src/yaml/steps/cocoapods-deployment-floor.test.d.ts +0 -11
  342. package/dist/src/yaml/steps/cocoapods-deployment-floor.test.d.ts.map +0 -1
  343. package/dist/src/yaml/steps/cocoapods-deployment-floor.test.js +0 -176
  344. package/dist/src/yaml/steps/cocoapods-install-emits-valid-bash.test.d.ts +0 -22
  345. package/dist/src/yaml/steps/cocoapods-install-emits-valid-bash.test.d.ts.map +0 -1
  346. package/dist/src/yaml/steps/cocoapods-install-emits-valid-bash.test.js +0 -97
  347. package/dist/src/yaml/steps/cocoapods-locked-bundler.test.d.ts +0 -17
  348. package/dist/src/yaml/steps/cocoapods-locked-bundler.test.d.ts.map +0 -1
  349. package/dist/src/yaml/steps/cocoapods-locked-bundler.test.js +0 -282
  350. package/dist/src/yaml/steps/cocoapods-skip-if-absent.test.d.ts +0 -17
  351. package/dist/src/yaml/steps/cocoapods-skip-if-absent.test.d.ts.map +0 -1
  352. package/dist/src/yaml/steps/cocoapods-skip-if-absent.test.js +0 -132
  353. package/dist/src/yaml/steps/envstore-loader.test.d.ts +0 -15
  354. package/dist/src/yaml/steps/envstore-loader.test.d.ts.map +0 -1
  355. package/dist/src/yaml/steps/envstore-loader.test.js +0 -143
  356. package/dist/src/yaml/steps/fastlane.d.ts +0 -27
  357. package/dist/src/yaml/steps/fastlane.d.ts.map +0 -1
  358. package/dist/src/yaml/steps/fastlane.js +0 -79
  359. package/dist/src/yaml/steps/fidelity-aspect-guard.d.ts +0 -53
  360. package/dist/src/yaml/steps/fidelity-aspect-guard.d.ts.map +0 -1
  361. package/dist/src/yaml/steps/fidelity-aspect-guard.js +0 -72
  362. package/dist/src/yaml/steps/fidelity-aspect-guard.test.d.ts +0 -11
  363. package/dist/src/yaml/steps/fidelity-aspect-guard.test.d.ts.map +0 -1
  364. package/dist/src/yaml/steps/fidelity-aspect-guard.test.js +0 -50
  365. package/dist/src/yaml/steps/fidelity-reference-provenance.d.ts +0 -87
  366. package/dist/src/yaml/steps/fidelity-reference-provenance.d.ts.map +0 -1
  367. package/dist/src/yaml/steps/fidelity-reference-provenance.js +0 -111
  368. package/dist/src/yaml/steps/fidelity-reference-provenance.test.d.ts +0 -22
  369. package/dist/src/yaml/steps/fidelity-reference-provenance.test.d.ts.map +0 -1
  370. package/dist/src/yaml/steps/fidelity-reference-provenance.test.js +0 -118
  371. package/dist/src/yaml/steps/file.d.ts +0 -52
  372. package/dist/src/yaml/steps/file.d.ts.map +0 -1
  373. package/dist/src/yaml/steps/file.js +0 -108
  374. package/dist/src/yaml/steps/flutter.d.ts +0 -63
  375. package/dist/src/yaml/steps/flutter.d.ts.map +0 -1
  376. package/dist/src/yaml/steps/flutter.js +0 -215
  377. package/dist/src/yaml/steps/git-clone-names-the-inputs-it-ignores.test.d.ts +0 -16
  378. package/dist/src/yaml/steps/git-clone-names-the-inputs-it-ignores.test.d.ts.map +0 -1
  379. package/dist/src/yaml/steps/git-clone-names-the-inputs-it-ignores.test.js +0 -127
  380. package/dist/src/yaml/steps/git-clone.d.ts +0 -32
  381. package/dist/src/yaml/steps/git-clone.d.ts.map +0 -1
  382. package/dist/src/yaml/steps/git-clone.js +0 -171
  383. package/dist/src/yaml/steps/git-fetch-retry-exec.test.d.ts +0 -10
  384. package/dist/src/yaml/steps/git-fetch-retry-exec.test.d.ts.map +0 -1
  385. package/dist/src/yaml/steps/git-fetch-retry-exec.test.js +0 -162
  386. package/dist/src/yaml/steps/git-fetch-retry.d.ts +0 -62
  387. package/dist/src/yaml/steps/git-fetch-retry.d.ts.map +0 -1
  388. package/dist/src/yaml/steps/git-fetch-retry.js +0 -155
  389. package/dist/src/yaml/steps/git-fetch-retry.test.d.ts +0 -5
  390. package/dist/src/yaml/steps/git-fetch-retry.test.d.ts.map +0 -1
  391. package/dist/src/yaml/steps/git-fetch-retry.test.js +0 -86
  392. package/dist/src/yaml/steps/google-play-deploy.d.ts +0 -37
  393. package/dist/src/yaml/steps/google-play-deploy.d.ts.map +0 -1
  394. package/dist/src/yaml/steps/google-play-deploy.js +0 -193
  395. package/dist/src/yaml/steps/google-play-deploy.test.d.ts +0 -5
  396. package/dist/src/yaml/steps/google-play-deploy.test.d.ts.map +0 -1
  397. package/dist/src/yaml/steps/google-play-deploy.test.js +0 -310
  398. package/dist/src/yaml/steps/gradle-memory.d.ts +0 -61
  399. package/dist/src/yaml/steps/gradle-memory.d.ts.map +0 -1
  400. package/dist/src/yaml/steps/gradle-memory.js +0 -311
  401. package/dist/src/yaml/steps/gradle-memory.test.d.ts +0 -2
  402. package/dist/src/yaml/steps/gradle-memory.test.d.ts.map +0 -1
  403. package/dist/src/yaml/steps/gradle-memory.test.js +0 -297
  404. package/dist/src/yaml/steps/gradle-sdk-cmake.d.ts +0 -28
  405. package/dist/src/yaml/steps/gradle-sdk-cmake.d.ts.map +0 -1
  406. package/dist/src/yaml/steps/gradle-sdk-cmake.js +0 -107
  407. package/dist/src/yaml/steps/gradle-sdk-cmake.test.d.ts +0 -2
  408. package/dist/src/yaml/steps/gradle-sdk-cmake.test.d.ts.map +0 -1
  409. package/dist/src/yaml/steps/gradle-sdk-cmake.test.js +0 -183
  410. package/dist/src/yaml/steps/index.d.ts +0 -10
  411. package/dist/src/yaml/steps/index.d.ts.map +0 -1
  412. package/dist/src/yaml/steps/index.js +0 -1461
  413. package/dist/src/yaml/steps/ios-deps.d.ts +0 -78
  414. package/dist/src/yaml/steps/ios-deps.d.ts.map +0 -1
  415. package/dist/src/yaml/steps/ios-deps.js +0 -279
  416. package/dist/src/yaml/steps/ios-deps.test.d.ts +0 -5
  417. package/dist/src/yaml/steps/ios-deps.test.d.ts.map +0 -1
  418. package/dist/src/yaml/steps/ios-deps.test.js +0 -90
  419. package/dist/src/yaml/steps/ios-signing.d.ts +0 -31
  420. package/dist/src/yaml/steps/ios-signing.d.ts.map +0 -1
  421. package/dist/src/yaml/steps/ios-signing.js +0 -144
  422. package/dist/src/yaml/steps/ios-version.d.ts +0 -47
  423. package/dist/src/yaml/steps/ios-version.d.ts.map +0 -1
  424. package/dist/src/yaml/steps/ios-version.js +0 -151
  425. package/dist/src/yaml/steps/java-home-version-spec.test.d.ts +0 -10
  426. package/dist/src/yaml/steps/java-home-version-spec.test.d.ts.map +0 -1
  427. package/dist/src/yaml/steps/java-home-version-spec.test.js +0 -58
  428. package/dist/src/yaml/steps/linting.d.ts +0 -47
  429. package/dist/src/yaml/steps/linting.d.ts.map +0 -1
  430. package/dist/src/yaml/steps/linting.js +0 -148
  431. package/dist/src/yaml/steps/phase2.test.d.ts +0 -6
  432. package/dist/src/yaml/steps/phase2.test.d.ts.map +0 -1
  433. package/dist/src/yaml/steps/phase2.test.js +0 -197
  434. package/dist/src/yaml/steps/phase3.test.d.ts +0 -5
  435. package/dist/src/yaml/steps/phase3.test.d.ts.map +0 -1
  436. package/dist/src/yaml/steps/phase3.test.js +0 -144
  437. package/dist/src/yaml/steps/phase4.test.d.ts +0 -5
  438. package/dist/src/yaml/steps/phase4.test.d.ts.map +0 -1
  439. package/dist/src/yaml/steps/phase4.test.js +0 -166
  440. package/dist/src/yaml/steps/phase5.test.d.ts +0 -6
  441. package/dist/src/yaml/steps/phase5.test.d.ts.map +0 -1
  442. package/dist/src/yaml/steps/phase5.test.js +0 -263
  443. package/dist/src/yaml/steps/registry.d.ts +0 -88
  444. package/dist/src/yaml/steps/registry.d.ts.map +0 -1
  445. package/dist/src/yaml/steps/registry.js +0 -125
  446. package/dist/src/yaml/steps/registry.test.d.ts +0 -5
  447. package/dist/src/yaml/steps/registry.test.d.ts.map +0 -1
  448. package/dist/src/yaml/steps/registry.test.js +0 -235
  449. package/dist/src/yaml/steps/release.d.ts +0 -50
  450. package/dist/src/yaml/steps/release.d.ts.map +0 -1
  451. package/dist/src/yaml/steps/release.js +0 -154
  452. package/dist/src/yaml/steps/render-post-processor.d.ts +0 -100
  453. package/dist/src/yaml/steps/render-post-processor.d.ts.map +0 -1
  454. package/dist/src/yaml/steps/render-post-processor.js +0 -270
  455. package/dist/src/yaml/steps/render-post-processor.test.d.ts +0 -13
  456. package/dist/src/yaml/steps/render-post-processor.test.d.ts.map +0 -1
  457. package/dist/src/yaml/steps/render-post-processor.test.js +0 -220
  458. package/dist/src/yaml/steps/script.d.ts +0 -23
  459. package/dist/src/yaml/steps/script.d.ts.map +0 -1
  460. package/dist/src/yaml/steps/script.js +0 -63
  461. package/dist/src/yaml/steps/spec-validation.test.d.ts +0 -6
  462. package/dist/src/yaml/steps/spec-validation.test.d.ts.map +0 -1
  463. package/dist/src/yaml/steps/spec-validation.test.js +0 -130
  464. package/dist/src/yaml/steps/steps.test.d.ts +0 -6
  465. package/dist/src/yaml/steps/steps.test.d.ts.map +0 -1
  466. package/dist/src/yaml/steps/steps.test.js +0 -881
  467. package/dist/src/yaml/steps/structural-facts.d.ts +0 -992
  468. package/dist/src/yaml/steps/structural-facts.d.ts.map +0 -1
  469. package/dist/src/yaml/steps/structural-facts.js +0 -3276
  470. package/dist/src/yaml/steps/structural-facts.test.d.ts +0 -12
  471. package/dist/src/yaml/steps/structural-facts.test.d.ts.map +0 -1
  472. package/dist/src/yaml/steps/structural-facts.test.js +0 -3039
  473. package/dist/src/yaml/steps/test-config.d.ts +0 -5
  474. package/dist/src/yaml/steps/test-config.d.ts.map +0 -1
  475. package/dist/src/yaml/steps/test-config.js +0 -25
  476. package/dist/src/yaml/steps/trim-align-corpus.test.d.ts +0 -28
  477. package/dist/src/yaml/steps/trim-align-corpus.test.d.ts.map +0 -1
  478. package/dist/src/yaml/steps/trim-align-corpus.test.js +0 -383
  479. package/dist/src/yaml/steps/trim-align.d.ts +0 -87
  480. package/dist/src/yaml/steps/trim-align.d.ts.map +0 -1
  481. package/dist/src/yaml/steps/trim-align.js +0 -367
  482. package/dist/src/yaml/steps/trim-align.test.d.ts +0 -11
  483. package/dist/src/yaml/steps/trim-align.test.d.ts.map +0 -1
  484. package/dist/src/yaml/steps/trim-align.test.js +0 -261
  485. package/dist/src/yaml/steps/ui-fidelity-preview-android.d.ts +0 -66
  486. package/dist/src/yaml/steps/ui-fidelity-preview-android.d.ts.map +0 -1
  487. package/dist/src/yaml/steps/ui-fidelity-preview-android.js +0 -251
  488. package/dist/src/yaml/steps/ui-fidelity-preview-android.test.d.ts +0 -13
  489. package/dist/src/yaml/steps/ui-fidelity-preview-android.test.d.ts.map +0 -1
  490. package/dist/src/yaml/steps/ui-fidelity-preview-android.test.js +0 -302
  491. package/dist/src/yaml/steps/ui-fidelity-preview.d.ts +0 -134
  492. package/dist/src/yaml/steps/ui-fidelity-preview.d.ts.map +0 -1
  493. package/dist/src/yaml/steps/ui-fidelity-preview.js +0 -173
  494. package/dist/src/yaml/steps/ui-fidelity-preview.test.d.ts +0 -11
  495. package/dist/src/yaml/steps/ui-fidelity-preview.test.d.ts.map +0 -1
  496. package/dist/src/yaml/steps/ui-fidelity-preview.test.js +0 -210
  497. package/dist/src/yaml/steps/ui-fidelity-render-android.d.ts +0 -155
  498. package/dist/src/yaml/steps/ui-fidelity-render-android.d.ts.map +0 -1
  499. package/dist/src/yaml/steps/ui-fidelity-render-android.js +0 -1389
  500. package/dist/src/yaml/steps/ui-fidelity-render-android.test.d.ts +0 -2
  501. package/dist/src/yaml/steps/ui-fidelity-render-android.test.d.ts.map +0 -1
  502. package/dist/src/yaml/steps/ui-fidelity-render-android.test.js +0 -1106
  503. package/dist/src/yaml/steps/ui-fidelity-render.d.ts +0 -230
  504. package/dist/src/yaml/steps/ui-fidelity-render.d.ts.map +0 -1
  505. package/dist/src/yaml/steps/ui-fidelity-render.js +0 -1597
  506. package/dist/src/yaml/steps/ui-fidelity-render.test.d.ts +0 -18
  507. package/dist/src/yaml/steps/ui-fidelity-render.test.d.ts.map +0 -1
  508. package/dist/src/yaml/steps/ui-fidelity-render.test.js +0 -1871
  509. package/dist/src/yaml/steps/xcode-app-product.d.ts +0 -90
  510. package/dist/src/yaml/steps/xcode-app-product.d.ts.map +0 -1
  511. package/dist/src/yaml/steps/xcode-app-product.js +0 -247
  512. package/dist/src/yaml/steps/xcode-app-product.test.d.ts +0 -2
  513. package/dist/src/yaml/steps/xcode-app-product.test.d.ts.map +0 -1
  514. package/dist/src/yaml/steps/xcode-app-product.test.js +0 -202
  515. package/dist/src/yaml/steps/xcode-derived-data.test.d.ts +0 -30
  516. package/dist/src/yaml/steps/xcode-derived-data.test.d.ts.map +0 -1
  517. package/dist/src/yaml/steps/xcode-derived-data.test.js +0 -253
  518. package/dist/src/yaml/steps/xcode-destination.d.ts +0 -47
  519. package/dist/src/yaml/steps/xcode-destination.d.ts.map +0 -1
  520. package/dist/src/yaml/steps/xcode-destination.js +0 -202
  521. package/dist/src/yaml/steps/xcode-destination.test.d.ts +0 -9
  522. package/dist/src/yaml/steps/xcode-destination.test.d.ts.map +0 -1
  523. package/dist/src/yaml/steps/xcode-destination.test.js +0 -227
  524. package/dist/src/yaml/steps/xcode-new.test.d.ts +0 -5
  525. package/dist/src/yaml/steps/xcode-new.test.d.ts.map +0 -1
  526. package/dist/src/yaml/steps/xcode-new.test.js +0 -211
  527. package/dist/src/yaml/steps/xcode-resolve-retry.test.d.ts +0 -9
  528. package/dist/src/yaml/steps/xcode-resolve-retry.test.d.ts.map +0 -1
  529. package/dist/src/yaml/steps/xcode-resolve-retry.test.js +0 -146
  530. package/dist/src/yaml/steps/xcode-simulator-archs.d.ts +0 -53
  531. package/dist/src/yaml/steps/xcode-simulator-archs.d.ts.map +0 -1
  532. package/dist/src/yaml/steps/xcode-simulator-archs.js +0 -98
  533. package/dist/src/yaml/steps/xcode-simulator-archs.test.d.ts +0 -21
  534. package/dist/src/yaml/steps/xcode-simulator-archs.test.d.ts.map +0 -1
  535. package/dist/src/yaml/steps/xcode-simulator-archs.test.js +0 -155
  536. package/dist/src/yaml/steps/xcode.d.ts +0 -230
  537. package/dist/src/yaml/steps/xcode.d.ts.map +0 -1
  538. package/dist/src/yaml/steps/xcode.js +0 -1340
  539. package/dist/src/yaml/types.d.ts +0 -76
  540. package/dist/src/yaml/types.d.ts.map +0 -1
  541. package/dist/src/yaml/types.js +0 -5
  542. package/dist/src/yaml/validation-types.d.ts +0 -102
  543. package/dist/src/yaml/validation-types.d.ts.map +0 -1
  544. package/dist/src/yaml/validation-types.js +0 -8
  545. package/dist/src/yaml/yaml-updater.d.ts +0 -24
  546. package/dist/src/yaml/yaml-updater.d.ts.map +0 -1
  547. package/dist/src/yaml/yaml-updater.js +0 -128
@@ -1,86 +0,0 @@
1
- /**
2
- * Tests for retrying a refused third-party dependency fetch.
3
- */
4
- import { describe, test, expect } from '@jest/globals';
5
- import { REFUSED_FETCH_SIGNATURE, refusedFetchHelpers, retryOnRefusedFetch, } from './git-fetch-retry.js';
6
- const helpers = () => refusedFetchHelpers().join('\n');
7
- const retry = (o) => retryOnRefusedFetch(o).join('\n');
8
- describe('refusedFetchHelpers', () => {
9
- test('keys off the line git prints only for an HTTP 401', () => {
10
- expect(REFUSED_FETCH_SIGNATURE).toBe('could not read Username for');
11
- expect(helpers()).toContain(REFUSED_FETCH_SIGNATURE);
12
- });
13
- test('captures output to a log the diagnostic can re-read', () => {
14
- const script = helpers();
15
- expect(script).toContain('CIBUILD_FETCH_LOG=');
16
- expect(script).toContain('mktemp');
17
- });
18
- test('re-probes each refused URL for its HTTP status', () => {
19
- const script = helpers();
20
- // The whole point: the 401 is recorded nowhere, so ask again and print it.
21
- expect(script).toContain('info/refs?service=git-upload-pack');
22
- expect(script).toContain("-w '%{http_code}'");
23
- expect(script).toContain('cibuild_diagnose_refused_fetch()');
24
- });
25
- test('explains each status it can get back', () => {
26
- const script = helpers();
27
- expect(script).toContain('200)');
28
- expect(script).toContain('401|403)');
29
- expect(script).toContain('404)');
30
- // An unreachable host must not be reported as a refusal.
31
- expect(script).toContain('000)');
32
- expect(script).toContain('unreachable from this machine');
33
- });
34
- test('never lets a probe failure abort the step', () => {
35
- // The diagnostic runs on the failure path; it must not mask the real error.
36
- expect(helpers()).toContain('|| CIBUILD_FETCH_PROBE_CODE="000"');
37
- });
38
- });
39
- describe('retryOnRefusedFetch', () => {
40
- const opts = { label: 'Package resolution', command: 'xcodebuild -resolvePackageDependencies' };
41
- test('runs the command it was given', () => {
42
- expect(retry(opts)).toContain('xcodebuild -resolvePackageDependencies');
43
- });
44
- test('streams output live while still capturing it', () => {
45
- const script = retry(opts);
46
- expect(script).toContain('| tee "$CIBUILD_FETCH_LOG"');
47
- // tee would otherwise mask the command's own exit code.
48
- expect(script).toContain('${PIPESTATUS[0]}');
49
- });
50
- test('retries only when the failure is a refused fetch', () => {
51
- const script = retry(opts);
52
- // A compile error must fail on the first attempt, not after three.
53
- expect(script).toContain('if ! cibuild_fetch_was_refused; then');
54
- expect(script).toContain('break');
55
- });
56
- test('backs off between attempts', () => {
57
- const script = retry({ ...opts, attempts: 3, backoffSeconds: [15, 45] });
58
- expect(script).toContain('CIBUILD_FETCH_BACKOFF=(15 45)');
59
- expect(script).toContain('sleep');
60
- });
61
- test('defaults to three attempts', () => {
62
- expect(retry(opts)).toContain('CIBUILD_FETCH_MAX_ATTEMPTS=3');
63
- });
64
- test('honours a custom attempt count', () => {
65
- expect(retry({ ...opts, attempts: 5 })).toContain('CIBUILD_FETCH_MAX_ATTEMPTS=5');
66
- });
67
- test('diagnoses and then fails with the original exit code', () => {
68
- const script = retry(opts);
69
- expect(script).toContain('cibuild_diagnose_refused_fetch');
70
- expect(script).toContain('exit "$CIBUILD_FETCH_RC"');
71
- });
72
- test('names the thing being fetched in its retry message', () => {
73
- expect(retry(opts)).toContain('Package resolution');
74
- });
75
- test('does not use a bare && before break, which set -e would trip on', () => {
76
- // `[ x ] && break` returns 1 when the test is false and aborts under set -e.
77
- expect(retry(opts)).not.toMatch(/\]\s*&&\s*break/);
78
- });
79
- test('restores set -e after measuring the exit code', () => {
80
- const script = retry(opts);
81
- expect(script).toContain('set +e');
82
- expect(script).toContain('set -e');
83
- expect(script.indexOf('set +e')).toBeLessThan(script.lastIndexOf('set -e'));
84
- });
85
- });
86
- //# sourceMappingURL=git-fetch-retry.test.js.map
@@ -1,37 +0,0 @@
1
- /**
2
- * Google Play deploy step implementation
3
- * Uploads APK/AAB to Google Play using fastlane supply
4
- */
5
- import { BaseStepExecutor } from './base.js';
6
- import type { StepDef, CIConfig } from '../../types.js';
7
- import type { ValidationRequirement } from '../validation-types.js';
8
- /**
9
- * Inputs for google-play-deploy step
10
- */
11
- export interface GooglePlayDeployInputs {
12
- artifact_type?: string;
13
- service_account_json_key_path?: string;
14
- service_account_json_var?: string;
15
- package_name?: string;
16
- app_path?: string;
17
- track?: string;
18
- user_fraction?: string;
19
- status?: string;
20
- update_priority?: string;
21
- whatsnews_dir?: string;
22
- mapping_file?: string;
23
- retry_without_sending_to_review?: string;
24
- ack_bundle_installation_warning?: string;
25
- dry_run?: string;
26
- verbose_log?: string;
27
- }
28
- /**
29
- * Google Play deploy step executor
30
- * Maps google-play-deploy to fastlane supply
31
- */
32
- export declare class GooglePlayDeployStepExecutor extends BaseStepExecutor {
33
- isSkippedInLocalMode(): boolean;
34
- getValidationRequirements(inputs: GooglePlayDeployInputs, env: Record<string, string>, _config: CIConfig): ValidationRequirement[];
35
- execute(inputs: GooglePlayDeployInputs, env: Record<string, string>, config: CIConfig): Promise<StepDef>;
36
- }
37
- //# sourceMappingURL=google-play-deploy.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"google-play-deploy.d.ts","sourceRoot":"","sources":["../../../../src/yaml/steps/google-play-deploy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+BAA+B,CAAC,EAAE,MAAM,CAAC;IACzC,+BAA+B,CAAC,EAAE,MAAM,CAAC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,qBAAa,4BAA6B,SAAQ,gBAAgB;IAChE,oBAAoB,IAAI,OAAO;IAI/B,yBAAyB,CACvB,MAAM,EAAE,sBAAsB,EAC9B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,OAAO,EAAE,QAAQ,GAChB,qBAAqB,EAAE;IAoBpB,OAAO,CAAC,MAAM,EAAE,sBAAsB,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;CAsL/G"}
@@ -1,193 +0,0 @@
1
- /**
2
- * Google Play deploy step implementation
3
- * Uploads APK/AAB to Google Play using fastlane supply
4
- */
5
- import { BaseStepExecutor } from './base.js';
6
- /**
7
- * Google Play deploy step executor
8
- * Maps google-play-deploy to fastlane supply
9
- */
10
- export class GooglePlayDeployStepExecutor extends BaseStepExecutor {
11
- isSkippedInLocalMode() {
12
- return true;
13
- }
14
- getValidationRequirements(inputs, env, _config) {
15
- const requirements = [];
16
- // service_account_json_key_path only required when JSON content is not available via secret
17
- const jsonVarName = inputs.service_account_json_var || 'GOOGLE_PLAY_SERVICE_ACCOUNT_JSON';
18
- if (!env[jsonVarName]) {
19
- requirements.push(this.requireInput('service_account_json_key_path', inputs, 'Path to service account JSON key file'));
20
- }
21
- requirements.push(this.requireInput('package_name', inputs, 'Android app package name'));
22
- requirements.push(this.requireCommand('fastlane', 'Fastlane for Google Play deployment', 'Install with: gem install fastlane'));
23
- return requirements;
24
- }
25
- async execute(inputs, env, config) {
26
- const stepName = 'google-play-deploy';
27
- const commands = [];
28
- // In local mode, skip entirely — no Google Play credentials available
29
- if (config.local) {
30
- commands.push('echo "⏭️ google-play-deploy: skipped in local mode"');
31
- commands.push('echo " Google Play upload requires CI credentials."');
32
- const script = this.createBashScriptFromCommands(commands, stepName);
33
- return this.createScriptStep(script, stepName);
34
- }
35
- const packageName = this.getInput(inputs, 'package_name', '');
36
- const artifactType = this.getInput(inputs, 'artifact_type', 'apk');
37
- const isAab = artifactType === 'aab';
38
- const defaultAppPath = isAab
39
- ? '$CIBUILD_AAB_PATH\n$CIBUILD_APK_PATH'
40
- : '$CIBUILD_APK_PATH\n$CIBUILD_AAB_PATH';
41
- const appPath = this.getInput(inputs, 'app_path', defaultAppPath);
42
- const track = this.getInput(inputs, 'track', 'alpha');
43
- const userFraction = this.getInput(inputs, 'user_fraction', '');
44
- const status = this.getInput(inputs, 'status', '');
45
- const whatsnewsDir = this.getInput(inputs, 'whatsnews_dir', '');
46
- const mappingFile = this.getInput(inputs, 'mapping_file', '$CIBUILD_MAPPING_PATH');
47
- const dryRun = this.getInput(inputs, 'dry_run', 'false');
48
- const verboseLog = this.getInput(inputs, 'verbose_log', 'false');
49
- commands.push('# google-play-deploy step → fastlane supply');
50
- commands.push('echo "🚀 Deploying to Google Play..."');
51
- commands.push('');
52
- // Service account JSON: prefer content from secret, fall back to file path
53
- const jsonVarName = this.getInput(inputs, 'service_account_json_var', 'GOOGLE_PLAY_SERVICE_ACCOUNT_JSON');
54
- const jsonContent = env[jsonVarName] || '';
55
- if (jsonContent) {
56
- const encoded = Buffer.from(jsonContent).toString('base64');
57
- commands.push('# Write service account JSON from GOOGLE_PLAY_SERVICE_ACCOUNT_JSON secret');
58
- commands.push('_SA_TEMP_FILE=""');
59
- commands.push('_cleanup_sa() { [ -n "$_SA_TEMP_FILE" ] && rm -f "$_SA_TEMP_FILE" 2>/dev/null || true; }');
60
- commands.push('trap _cleanup_sa EXIT');
61
- commands.push('_SA_TEMP_FILE="$(mktemp /tmp/google-play-sa-XXXXXX.json)"');
62
- commands.push(`printf '%s' '${encoded}' | base64 -d > "$_SA_TEMP_FILE"`);
63
- commands.push('SERVICE_ACCOUNT_KEY="$_SA_TEMP_FILE"');
64
- commands.push('echo "Service account JSON written to temp file"');
65
- commands.push('');
66
- }
67
- else {
68
- const serviceAccountKey = this.getInput(inputs, 'service_account_json_key_path', '');
69
- commands.push(`SERVICE_ACCOUNT_KEY="${this.escapeBash(serviceAccountKey)}"`);
70
- commands.push('');
71
- }
72
- commands.push(`PACKAGE_NAME="${this.escapeBash(packageName)}"`);
73
- commands.push('');
74
- commands.push('if [ -z "$SERVICE_ACCOUNT_KEY" ]; then');
75
- commands.push(' echo "❌ Error: service_account_json_key_path is required"');
76
- commands.push(' echo " Or set GOOGLE_PLAY_SERVICE_ACCOUNT_JSON in your CI secrets"');
77
- commands.push(' exit 1');
78
- commands.push('fi');
79
- commands.push('');
80
- commands.push('if [ ! -f "$SERVICE_ACCOUNT_KEY" ]; then');
81
- commands.push(' echo "❌ Error: Service account key file not found: $SERVICE_ACCOUNT_KEY"');
82
- commands.push(' exit 1');
83
- commands.push('fi');
84
- commands.push('');
85
- commands.push('if [ -z "$PACKAGE_NAME" ]; then');
86
- commands.push(' echo "❌ Error: package_name is required"');
87
- commands.push(' exit 1');
88
- commands.push('fi');
89
- commands.push('');
90
- // Resolve app file from app_path (newline-separated list)
91
- commands.push('# Locate app file (APK or AAB)');
92
- commands.push('APP_FILE=""');
93
- commands.push('');
94
- // Build a list of candidates from app_path
95
- const appPathLines = appPath.split('\n').map(l => l.trim()).filter(l => l.length > 0);
96
- if (appPathLines.length > 0) {
97
- commands.push('# Check configured app_path candidates');
98
- for (const candidate of appPathLines) {
99
- commands.push(`if [ -z "$APP_FILE" ] && [ -f "${this.escapeBash(candidate)}" ]; then`);
100
- commands.push(` APP_FILE="${this.escapeBash(candidate)}"`);
101
- commands.push('fi');
102
- }
103
- commands.push('');
104
- }
105
- // Fall back to env-var resolved paths at runtime (order matches artifact_type preference)
106
- commands.push('# Fall back to environment variable paths if not yet resolved');
107
- const primaryEnv = isAab ? 'CIBUILD_AAB_PATH' : 'CIBUILD_APK_PATH';
108
- const fallbackEnv = isAab ? 'CIBUILD_APK_PATH' : 'CIBUILD_AAB_PATH';
109
- commands.push(`if [ -z "$APP_FILE" ] && [ -n "\${${primaryEnv}:-}" ] && [ -f "$${primaryEnv}" ]; then`);
110
- commands.push(` APP_FILE="$${primaryEnv}"`);
111
- commands.push('fi');
112
- commands.push(`if [ -z "$APP_FILE" ] && [ -n "\${${fallbackEnv}:-}" ] && [ -f "$${fallbackEnv}" ]; then`);
113
- commands.push(` APP_FILE="$${fallbackEnv}"`);
114
- commands.push('fi');
115
- commands.push('');
116
- commands.push('if [ -z "$APP_FILE" ]; then');
117
- commands.push(' echo "❌ Error: No APK or AAB file found."');
118
- commands.push(' echo " Set app_path input or ensure CIBUILD_APK_PATH / CIBUILD_AAB_PATH is set."');
119
- commands.push(' exit 1');
120
- commands.push('fi');
121
- commands.push('');
122
- commands.push('echo "App file: $APP_FILE"');
123
- commands.push('');
124
- // Detect AAB vs APK
125
- commands.push('# Detect format: AAB or APK');
126
- commands.push('APP_FLAG=""');
127
- commands.push('if [[ "$APP_FILE" == *.aab ]]; then');
128
- commands.push(' APP_FLAG="--aab"');
129
- commands.push(' echo "Format: AAB (Android App Bundle)"');
130
- commands.push('else');
131
- commands.push(' APP_FLAG="--apk"');
132
- commands.push(' echo "Format: APK"');
133
- commands.push('fi');
134
- commands.push('');
135
- // Resolve mapping file at runtime
136
- commands.push('# Resolve mapping file');
137
- commands.push(`MAPPING_FILE="${this.escapeBash(mappingFile)}"`);
138
- commands.push('MAPPING_FLAG=""');
139
- commands.push('if [ -n "$MAPPING_FILE" ] && [ -f "$MAPPING_FILE" ]; then');
140
- commands.push(' MAPPING_FLAG="--mapping \\"$MAPPING_FILE\\""');
141
- commands.push(' echo "Mapping file: $MAPPING_FILE"');
142
- commands.push('fi');
143
- commands.push('');
144
- // Build fastlane supply command
145
- commands.push('# Build fastlane supply command');
146
- commands.push(`TRACK="${this.escapeBash(track)}"`);
147
- commands.push('');
148
- commands.push('SUPPLY_CMD="fastlane supply"');
149
- commands.push('SUPPLY_CMD="$SUPPLY_CMD --json_key \\"$SERVICE_ACCOUNT_KEY\\""');
150
- commands.push('SUPPLY_CMD="$SUPPLY_CMD --package_name \\"$PACKAGE_NAME\\""');
151
- commands.push('SUPPLY_CMD="$SUPPLY_CMD $APP_FLAG \\"$APP_FILE\\""');
152
- commands.push('SUPPLY_CMD="$SUPPLY_CMD --track \\"$TRACK\\""');
153
- commands.push('');
154
- if (status) {
155
- commands.push(`SUPPLY_CMD="$SUPPLY_CMD --release_status \\"${this.escapeBash(status)}\\""`);
156
- }
157
- if (userFraction) {
158
- commands.push(`SUPPLY_CMD="$SUPPLY_CMD --rollout \\"${this.escapeBash(userFraction)}\\""`);
159
- }
160
- if (whatsnewsDir) {
161
- commands.push(`SUPPLY_CMD="$SUPPLY_CMD --whatsnew_paths \\"${this.escapeBash(whatsnewsDir)}\\""`);
162
- }
163
- commands.push('if [ -n "$MAPPING_FLAG" ]; then');
164
- commands.push(' SUPPLY_CMD="$SUPPLY_CMD $MAPPING_FLAG"');
165
- commands.push('fi');
166
- commands.push('');
167
- if (verboseLog === 'true') {
168
- commands.push('SUPPLY_CMD="$SUPPLY_CMD --verbose"');
169
- }
170
- if (dryRun === 'true') {
171
- commands.push('SUPPLY_CMD="$SUPPLY_CMD --dry_run"');
172
- }
173
- commands.push('');
174
- commands.push('echo "Running: $SUPPLY_CMD"');
175
- commands.push('echo ""');
176
- commands.push('');
177
- commands.push('# Execute fastlane supply');
178
- commands.push('eval "$SUPPLY_CMD"');
179
- commands.push('SUPPLY_EXIT=$?');
180
- commands.push('');
181
- commands.push('if [ $SUPPLY_EXIT -eq 0 ]; then');
182
- commands.push(' echo ""');
183
- commands.push(' echo "✅ Successfully deployed to Google Play (track: $TRACK)"');
184
- commands.push('else');
185
- commands.push(' echo ""');
186
- commands.push(' echo "❌ Failed to deploy to Google Play (exit code: $SUPPLY_EXIT)"');
187
- commands.push(' exit 1');
188
- commands.push('fi');
189
- const script = this.createBashScriptFromCommands(commands, stepName);
190
- return this.createScriptStep(script, stepName);
191
- }
192
- }
193
- //# sourceMappingURL=google-play-deploy.js.map
@@ -1,5 +0,0 @@
1
- /**
2
- * Unit tests for Google Play deploy step
3
- */
4
- export {};
5
- //# sourceMappingURL=google-play-deploy.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"google-play-deploy.test.d.ts","sourceRoot":"","sources":["../../../../src/yaml/steps/google-play-deploy.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,310 +0,0 @@
1
- /**
2
- * Unit tests for Google Play deploy step
3
- */
4
- import { describe, test, expect } from '@jest/globals';
5
- import { GooglePlayDeployStepExecutor } from './google-play-deploy.js';
6
- describe('GooglePlayDeployStepExecutor', () => {
7
- const mockConfig = {
8
- artifactsDir: '/ci/artifacts',
9
- interpreters: {
10
- python: '/usr/bin/python3',
11
- ruby: '/usr/bin/ruby',
12
- node: '/usr/bin/node',
13
- bash: '/bin/bash',
14
- },
15
- maxConcurrentJobs: 4,
16
- paths: {
17
- buildsDir: '/ci/builds',
18
- cacheDir: '/ci/cache',
19
- derivedDataDir: '/ci/derived_data',
20
- },
21
- };
22
- const localConfig = { ...mockConfig, local: true };
23
- describe('Basic functionality', () => {
24
- test('should create a script step with correct name', async () => {
25
- const executor = new GooglePlayDeployStepExecutor();
26
- const result = await executor.execute({ service_account_json_key_path: '/keys/service.json', package_name: 'com.example.app' }, {}, mockConfig);
27
- expect(result.kind).toBe('script');
28
- expect(result.name).toBe('google-play-deploy');
29
- });
30
- test('should call fastlane supply', async () => {
31
- const executor = new GooglePlayDeployStepExecutor();
32
- const result = await executor.execute({ service_account_json_key_path: '/keys/service.json', package_name: 'com.example.app' }, {}, mockConfig);
33
- expect(result.script).toContain('fastlane supply');
34
- });
35
- test('should include step label', async () => {
36
- const executor = new GooglePlayDeployStepExecutor();
37
- const result = await executor.execute({ service_account_json_key_path: '/keys/service.json', package_name: 'com.example.app' }, {}, mockConfig);
38
- expect(result.script).toContain('google-play-deploy step → fastlane supply');
39
- });
40
- });
41
- describe('Local mode', () => {
42
- test('should skip in local mode', async () => {
43
- const executor = new GooglePlayDeployStepExecutor();
44
- const result = await executor.execute({}, {}, localConfig);
45
- expect(result.script).toContain('skipped in local mode');
46
- expect(result.script).not.toContain('fastlane supply');
47
- });
48
- test('isSkippedInLocalMode should return true', () => {
49
- const executor = new GooglePlayDeployStepExecutor();
50
- expect(executor.isSkippedInLocalMode()).toBe(true);
51
- });
52
- });
53
- describe('Required input validation', () => {
54
- test('should error if service_account_json_key_path is empty', async () => {
55
- const executor = new GooglePlayDeployStepExecutor();
56
- const result = await executor.execute({ package_name: 'com.example.app' }, {}, mockConfig);
57
- expect(result.script).toContain('service_account_json_key_path is required');
58
- expect(result.script).toContain('exit 1');
59
- });
60
- test('should check that service account key file exists on disk', async () => {
61
- const executor = new GooglePlayDeployStepExecutor();
62
- const result = await executor.execute({ service_account_json_key_path: '/keys/service.json', package_name: 'com.example.app' }, {}, mockConfig);
63
- expect(result.script).toContain('Service account key file not found');
64
- expect(result.script).toContain('if [ ! -f "$SERVICE_ACCOUNT_KEY" ]');
65
- });
66
- test('should error if package_name is empty', async () => {
67
- const executor = new GooglePlayDeployStepExecutor();
68
- const result = await executor.execute({ service_account_json_key_path: '/keys/service.json' }, {}, mockConfig);
69
- expect(result.script).toContain('package_name is required');
70
- expect(result.script).toContain('exit 1');
71
- });
72
- });
73
- describe('App file handling', () => {
74
- test('should use provided app_path', async () => {
75
- const executor = new GooglePlayDeployStepExecutor();
76
- const result = await executor.execute({
77
- service_account_json_key_path: '/keys/service.json',
78
- package_name: 'com.example.app',
79
- app_path: '/build/app-release.apk',
80
- }, {}, mockConfig);
81
- expect(result.script).toContain('/build/app-release.apk');
82
- });
83
- test('should fall back to CIBUILD_AAB_PATH env var', async () => {
84
- const executor = new GooglePlayDeployStepExecutor();
85
- const result = await executor.execute({ service_account_json_key_path: '/keys/service.json', package_name: 'com.example.app' }, {}, mockConfig);
86
- expect(result.script).toContain('CIBUILD_AAB_PATH');
87
- });
88
- test('should fall back to CIBUILD_APK_PATH env var', async () => {
89
- const executor = new GooglePlayDeployStepExecutor();
90
- const result = await executor.execute({ service_account_json_key_path: '/keys/service.json', package_name: 'com.example.app' }, {}, mockConfig);
91
- expect(result.script).toContain('CIBUILD_APK_PATH');
92
- });
93
- test('should error if no app file found', async () => {
94
- const executor = new GooglePlayDeployStepExecutor();
95
- const result = await executor.execute({ service_account_json_key_path: '/keys/service.json', package_name: 'com.example.app' }, {}, mockConfig);
96
- expect(result.script).toContain('No APK or AAB file found');
97
- expect(result.script).toContain('exit 1');
98
- });
99
- });
100
- describe('AAB vs APK detection', () => {
101
- test('should use --aab flag for .aab files', async () => {
102
- const executor = new GooglePlayDeployStepExecutor();
103
- const result = await executor.execute({
104
- service_account_json_key_path: '/keys/service.json',
105
- package_name: 'com.example.app',
106
- app_path: '/build/app-release.aab',
107
- }, {}, mockConfig);
108
- expect(result.script).toContain('APP_FLAG="--aab"');
109
- expect(result.script).toContain('*.aab');
110
- });
111
- test('should use --apk flag for non-.aab files', async () => {
112
- const executor = new GooglePlayDeployStepExecutor();
113
- const result = await executor.execute({
114
- service_account_json_key_path: '/keys/service.json',
115
- package_name: 'com.example.app',
116
- app_path: '/build/app-release.apk',
117
- }, {}, mockConfig);
118
- expect(result.script).toContain('APP_FLAG="--apk"');
119
- });
120
- });
121
- describe('Track input', () => {
122
- test('should default to alpha track', async () => {
123
- const executor = new GooglePlayDeployStepExecutor();
124
- const result = await executor.execute({ service_account_json_key_path: '/keys/service.json', package_name: 'com.example.app' }, {}, mockConfig);
125
- expect(result.script).toContain('TRACK="alpha"');
126
- });
127
- test('should use provided track value', async () => {
128
- const executor = new GooglePlayDeployStepExecutor();
129
- const result = await executor.execute({
130
- service_account_json_key_path: '/keys/service.json',
131
- package_name: 'com.example.app',
132
- track: 'production',
133
- }, {}, mockConfig);
134
- expect(result.script).toContain('TRACK="production"');
135
- });
136
- test('should pass track to fastlane supply', async () => {
137
- const executor = new GooglePlayDeployStepExecutor();
138
- const result = await executor.execute({
139
- service_account_json_key_path: '/keys/service.json',
140
- package_name: 'com.example.app',
141
- track: 'internal',
142
- }, {}, mockConfig);
143
- expect(result.script).toContain('--track \\"$TRACK\\"');
144
- });
145
- });
146
- describe('Optional inputs', () => {
147
- test('should pass user_fraction for staged rollout', async () => {
148
- const executor = new GooglePlayDeployStepExecutor();
149
- const result = await executor.execute({
150
- service_account_json_key_path: '/keys/service.json',
151
- package_name: 'com.example.app',
152
- user_fraction: '0.1',
153
- }, {}, mockConfig);
154
- expect(result.script).toContain('--rollout \\"0.1\\"');
155
- });
156
- test('should pass status when provided', async () => {
157
- const executor = new GooglePlayDeployStepExecutor();
158
- const result = await executor.execute({
159
- service_account_json_key_path: '/keys/service.json',
160
- package_name: 'com.example.app',
161
- status: 'draft',
162
- }, {}, mockConfig);
163
- expect(result.script).toContain('--release_status \\"draft\\"');
164
- });
165
- test('should pass whatsnews_dir when provided', async () => {
166
- const executor = new GooglePlayDeployStepExecutor();
167
- const result = await executor.execute({
168
- service_account_json_key_path: '/keys/service.json',
169
- package_name: 'com.example.app',
170
- whatsnews_dir: './changelogs',
171
- }, {}, mockConfig);
172
- expect(result.script).toContain('--whatsnew_paths \\"./changelogs\\"');
173
- });
174
- test('should attempt to resolve mapping_file', async () => {
175
- const executor = new GooglePlayDeployStepExecutor();
176
- const result = await executor.execute({
177
- service_account_json_key_path: '/keys/service.json',
178
- package_name: 'com.example.app',
179
- mapping_file: './mapping.txt',
180
- }, {}, mockConfig);
181
- expect(result.script).toContain('MAPPING_FILE="./mapping.txt"');
182
- expect(result.script).toContain('--mapping');
183
- });
184
- test('should not pass user_fraction if not provided', async () => {
185
- const executor = new GooglePlayDeployStepExecutor();
186
- const result = await executor.execute({ service_account_json_key_path: '/keys/service.json', package_name: 'com.example.app' }, {}, mockConfig);
187
- expect(result.script).not.toContain('--rollout');
188
- });
189
- });
190
- describe('Dry run', () => {
191
- test('should pass --dry_run when dry_run is true', async () => {
192
- const executor = new GooglePlayDeployStepExecutor();
193
- const result = await executor.execute({
194
- service_account_json_key_path: '/keys/service.json',
195
- package_name: 'com.example.app',
196
- dry_run: 'true',
197
- }, {}, mockConfig);
198
- expect(result.script).toContain('--dry_run');
199
- });
200
- test('should not pass --dry_run by default', async () => {
201
- const executor = new GooglePlayDeployStepExecutor();
202
- const result = await executor.execute({ service_account_json_key_path: '/keys/service.json', package_name: 'com.example.app' }, {}, mockConfig);
203
- expect(result.script).not.toContain('--dry_run');
204
- });
205
- });
206
- describe('Verbose logging', () => {
207
- test('should pass --verbose when verbose_log is true', async () => {
208
- const executor = new GooglePlayDeployStepExecutor();
209
- const result = await executor.execute({
210
- service_account_json_key_path: '/keys/service.json',
211
- package_name: 'com.example.app',
212
- verbose_log: 'true',
213
- }, {}, mockConfig);
214
- expect(result.script).toContain('--verbose');
215
- });
216
- test('should not pass --verbose by default', async () => {
217
- const executor = new GooglePlayDeployStepExecutor();
218
- const result = await executor.execute({ service_account_json_key_path: '/keys/service.json', package_name: 'com.example.app' }, {}, mockConfig);
219
- expect(result.script).not.toContain('--verbose');
220
- });
221
- });
222
- describe('Script structure', () => {
223
- test('should include bash error handling directives', async () => {
224
- const executor = new GooglePlayDeployStepExecutor();
225
- const result = await executor.execute({ service_account_json_key_path: '/keys/service.json', package_name: 'com.example.app' }, {}, mockConfig);
226
- expect(result.script).toContain('#!/bin/bash');
227
- expect(result.script).toContain('set -e');
228
- expect(result.script).toContain('set -o pipefail');
229
- });
230
- test('should include success message', async () => {
231
- const executor = new GooglePlayDeployStepExecutor();
232
- const result = await executor.execute({ service_account_json_key_path: '/keys/service.json', package_name: 'com.example.app' }, {}, mockConfig);
233
- expect(result.script).toContain('Successfully deployed to Google Play');
234
- });
235
- test('should include failure message and exit 1', async () => {
236
- const executor = new GooglePlayDeployStepExecutor();
237
- const result = await executor.execute({ service_account_json_key_path: '/keys/service.json', package_name: 'com.example.app' }, {}, mockConfig);
238
- expect(result.script).toContain('Failed to deploy to Google Play');
239
- expect(result.script).toContain('exit 1');
240
- });
241
- });
242
- describe('Validation requirements', () => {
243
- test('should require service_account_json_key_path input when secret is not set', () => {
244
- const executor = new GooglePlayDeployStepExecutor();
245
- const requirements = executor.getValidationRequirements({}, {}, mockConfig);
246
- const inputReqs = requirements.filter(r => r.category === 'input');
247
- expect(inputReqs.some(r => r.name === 'service_account_json_key_path')).toBe(true);
248
- });
249
- test('should not require service_account_json_key_path when GOOGLE_PLAY_SERVICE_ACCOUNT_JSON is set', () => {
250
- const executor = new GooglePlayDeployStepExecutor();
251
- const requirements = executor.getValidationRequirements({}, { GOOGLE_PLAY_SERVICE_ACCOUNT_JSON: '{"type":"service_account"}' }, mockConfig);
252
- const inputReqs = requirements.filter(r => r.category === 'input');
253
- expect(inputReqs.some(r => r.name === 'service_account_json_key_path')).toBe(false);
254
- });
255
- test('should not require service_account_json_key_path when custom service_account_json_var secret is set', () => {
256
- const executor = new GooglePlayDeployStepExecutor();
257
- const requirements = executor.getValidationRequirements({ service_account_json_var: 'MY_CUSTOM_SA_JSON' }, { MY_CUSTOM_SA_JSON: '{"type":"service_account"}' }, mockConfig);
258
- const inputReqs = requirements.filter(r => r.category === 'input');
259
- expect(inputReqs.some(r => r.name === 'service_account_json_key_path')).toBe(false);
260
- });
261
- test('should require package_name input', () => {
262
- const executor = new GooglePlayDeployStepExecutor();
263
- const requirements = executor.getValidationRequirements({}, {}, mockConfig);
264
- const inputReqs = requirements.filter(r => r.category === 'input');
265
- expect(inputReqs.some(r => r.name === 'package_name')).toBe(true);
266
- });
267
- test('should require fastlane command', () => {
268
- const executor = new GooglePlayDeployStepExecutor();
269
- const requirements = executor.getValidationRequirements({}, {}, mockConfig);
270
- const commandReqs = requirements.filter(r => r.category === 'command');
271
- expect(commandReqs.some(r => r.name === 'fastlane')).toBe(true);
272
- });
273
- });
274
- describe('GOOGLE_PLAY_SERVICE_ACCOUNT_JSON secret', () => {
275
- const jsonSecret = '{"type":"service_account","project_id":"my-project"}';
276
- test('should write secret to temp file when GOOGLE_PLAY_SERVICE_ACCOUNT_JSON is set', async () => {
277
- const executor = new GooglePlayDeployStepExecutor();
278
- const result = await executor.execute({ package_name: 'com.example.app' }, { GOOGLE_PLAY_SERVICE_ACCOUNT_JSON: jsonSecret }, mockConfig);
279
- expect(result.script).toContain('GOOGLE_PLAY_SERVICE_ACCOUNT_JSON secret');
280
- expect(result.script).toContain('mktemp');
281
- expect(result.script).toContain('base64 -d');
282
- expect(result.script).toContain('SERVICE_ACCOUNT_KEY="$_SA_TEMP_FILE"');
283
- });
284
- test('should embed base64-encoded JSON content in the script', async () => {
285
- const executor = new GooglePlayDeployStepExecutor();
286
- const result = await executor.execute({ package_name: 'com.example.app' }, { GOOGLE_PLAY_SERVICE_ACCOUNT_JSON: jsonSecret }, mockConfig);
287
- const expected = Buffer.from(jsonSecret).toString('base64');
288
- expect(result.script).toContain(expected);
289
- });
290
- test('should set up EXIT trap to clean up temp file', async () => {
291
- const executor = new GooglePlayDeployStepExecutor();
292
- const result = await executor.execute({ package_name: 'com.example.app' }, { GOOGLE_PLAY_SERVICE_ACCOUNT_JSON: jsonSecret }, mockConfig);
293
- expect(result.script).toContain('trap _cleanup_sa EXIT');
294
- expect(result.script).toContain('rm -f "$_SA_TEMP_FILE"');
295
- });
296
- test('should not require service_account_json_key_path when secret is provided', async () => {
297
- const executor = new GooglePlayDeployStepExecutor();
298
- const result = await executor.execute({ package_name: 'com.example.app' }, { GOOGLE_PLAY_SERVICE_ACCOUNT_JSON: jsonSecret }, mockConfig);
299
- // Should still call fastlane supply successfully (no early exit from missing path)
300
- expect(result.script).toContain('fastlane supply');
301
- });
302
- test('should still use file path when secret is not set', async () => {
303
- const executor = new GooglePlayDeployStepExecutor();
304
- const result = await executor.execute({ service_account_json_key_path: '/keys/service.json', package_name: 'com.example.app' }, {}, mockConfig);
305
- expect(result.script).toContain('SERVICE_ACCOUNT_KEY="/keys/service.json"');
306
- expect(result.script).not.toContain('mktemp');
307
- });
308
- });
309
- });
310
- //# sourceMappingURL=google-play-deploy.test.js.map