@invarn/cibuild 1.3.16 → 1.3.18

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 (242) hide show
  1. package/dist/cli.cjs +1 -1
  2. package/dist/src/cli.d.ts +3 -0
  3. package/dist/src/cli.d.ts.map +1 -0
  4. package/dist/src/cli.js +987 -0
  5. package/dist/src/commands/android-scanner.d.ts +32 -0
  6. package/dist/src/commands/android-scanner.d.ts.map +1 -0
  7. package/dist/src/commands/android-scanner.js +667 -0
  8. package/dist/src/commands/build.d.ts +5 -0
  9. package/dist/src/commands/build.d.ts.map +1 -0
  10. package/dist/src/commands/build.js +1096 -0
  11. package/dist/src/commands/edit.d.ts +3 -0
  12. package/dist/src/commands/edit.d.ts.map +1 -0
  13. package/dist/src/commands/edit.js +651 -0
  14. package/dist/src/commands/file-secret-collector.d.ts +37 -0
  15. package/dist/src/commands/file-secret-collector.d.ts.map +1 -0
  16. package/dist/src/commands/file-secret-collector.js +199 -0
  17. package/dist/src/commands/github-workflow.d.ts +5 -0
  18. package/dist/src/commands/github-workflow.d.ts.map +1 -0
  19. package/dist/src/commands/github-workflow.js +45 -0
  20. package/dist/src/commands/ios-scanner.d.ts +27 -0
  21. package/dist/src/commands/ios-scanner.d.ts.map +1 -0
  22. package/dist/src/commands/ios-scanner.js +337 -0
  23. package/dist/src/commands/reset.d.ts +7 -0
  24. package/dist/src/commands/reset.d.ts.map +1 -0
  25. package/dist/src/commands/reset.js +81 -0
  26. package/dist/src/commands/secrets-sync-workflow.d.ts +15 -0
  27. package/dist/src/commands/secrets-sync-workflow.d.ts.map +1 -0
  28. package/dist/src/commands/secrets-sync-workflow.js +255 -0
  29. package/dist/src/commands/secrets-upload.d.ts +21 -0
  30. package/dist/src/commands/secrets-upload.d.ts.map +1 -0
  31. package/dist/src/commands/secrets-upload.js +177 -0
  32. package/dist/src/commands/secrets-upload.test.d.ts +5 -0
  33. package/dist/src/commands/secrets-upload.test.d.ts.map +1 -0
  34. package/dist/src/commands/secrets-upload.test.js +60 -0
  35. package/dist/src/config.d.ts +3 -0
  36. package/dist/src/config.d.ts.map +1 -0
  37. package/dist/src/config.js +47 -0
  38. package/dist/src/envman/cli.d.ts +21 -0
  39. package/dist/src/envman/cli.d.ts.map +1 -0
  40. package/dist/src/envman/cli.js +240 -0
  41. package/dist/src/envman/envman.d.ts +83 -0
  42. package/dist/src/envman/envman.d.ts.map +1 -0
  43. package/dist/src/envman/envman.js +361 -0
  44. package/dist/src/envman/envman.test.d.ts +5 -0
  45. package/dist/src/envman/envman.test.d.ts.map +1 -0
  46. package/dist/src/envman/envman.test.js +236 -0
  47. package/dist/src/envman/index.d.ts +23 -0
  48. package/dist/src/envman/index.d.ts.map +1 -0
  49. package/dist/src/envman/index.js +23 -0
  50. package/dist/src/envman/types.d.ts +55 -0
  51. package/dist/src/envman/types.d.ts.map +1 -0
  52. package/dist/src/envman/types.js +12 -0
  53. package/dist/src/lib.d.ts +27 -0
  54. package/dist/src/lib.d.ts.map +1 -0
  55. package/dist/src/lib.js +32 -0
  56. package/dist/src/pipeline.d.ts +3 -0
  57. package/dist/src/pipeline.d.ts.map +1 -0
  58. package/dist/src/pipeline.js +57 -0
  59. package/dist/src/runner.d.ts +17 -0
  60. package/dist/src/runner.d.ts.map +1 -0
  61. package/dist/src/runner.js +234 -0
  62. package/dist/src/types.d.ts +58 -0
  63. package/dist/src/types.d.ts.map +1 -0
  64. package/dist/src/types.js +2 -0
  65. package/dist/src/yaml/bitrise-compat.d.ts +65 -0
  66. package/dist/src/yaml/bitrise-compat.d.ts.map +1 -0
  67. package/dist/src/yaml/bitrise-compat.js +206 -0
  68. package/dist/src/yaml/bitrise-compat.test.d.ts +5 -0
  69. package/dist/src/yaml/bitrise-compat.test.d.ts.map +1 -0
  70. package/dist/src/yaml/bitrise-compat.test.js +347 -0
  71. package/dist/src/yaml/converter.d.ts +33 -0
  72. package/dist/src/yaml/converter.d.ts.map +1 -0
  73. package/dist/src/yaml/converter.js +222 -0
  74. package/dist/src/yaml/converter.test.d.ts +5 -0
  75. package/dist/src/yaml/converter.test.d.ts.map +1 -0
  76. package/dist/src/yaml/converter.test.js +348 -0
  77. package/dist/src/yaml/e2e.test.d.ts +6 -0
  78. package/dist/src/yaml/e2e.test.d.ts.map +1 -0
  79. package/dist/src/yaml/e2e.test.js +446 -0
  80. package/dist/src/yaml/env-resolver.d.ts +120 -0
  81. package/dist/src/yaml/env-resolver.d.ts.map +1 -0
  82. package/dist/src/yaml/env-resolver.js +405 -0
  83. package/dist/src/yaml/env-resolver.test.d.ts +5 -0
  84. package/dist/src/yaml/env-resolver.test.d.ts.map +1 -0
  85. package/dist/src/yaml/env-resolver.test.js +502 -0
  86. package/dist/src/yaml/interactive-prompts.d.ts +71 -0
  87. package/dist/src/yaml/interactive-prompts.d.ts.map +1 -0
  88. package/dist/src/yaml/interactive-prompts.js +258 -0
  89. package/dist/src/yaml/missing-env-handler.d.ts +45 -0
  90. package/dist/src/yaml/missing-env-handler.d.ts.map +1 -0
  91. package/dist/src/yaml/missing-env-handler.js +64 -0
  92. package/dist/src/yaml/parser.d.ts +33 -0
  93. package/dist/src/yaml/parser.d.ts.map +1 -0
  94. package/dist/src/yaml/parser.js +145 -0
  95. package/dist/src/yaml/pipeline-with-secrets.d.ts +25 -0
  96. package/dist/src/yaml/pipeline-with-secrets.d.ts.map +1 -0
  97. package/dist/src/yaml/pipeline-with-secrets.js +76 -0
  98. package/dist/src/yaml/platform-detector.d.ts +83 -0
  99. package/dist/src/yaml/platform-detector.d.ts.map +1 -0
  100. package/dist/src/yaml/platform-detector.js +188 -0
  101. package/dist/src/yaml/platform-detector.test.d.ts +5 -0
  102. package/dist/src/yaml/platform-detector.test.d.ts.map +1 -0
  103. package/dist/src/yaml/platform-detector.test.js +414 -0
  104. package/dist/src/yaml/preflight-validation.d.ts +40 -0
  105. package/dist/src/yaml/preflight-validation.d.ts.map +1 -0
  106. package/dist/src/yaml/preflight-validation.js +152 -0
  107. package/dist/src/yaml/secrets-manager.d.ts +77 -0
  108. package/dist/src/yaml/secrets-manager.d.ts.map +1 -0
  109. package/dist/src/yaml/secrets-manager.js +219 -0
  110. package/dist/src/yaml/step-validator.d.ts +54 -0
  111. package/dist/src/yaml/step-validator.d.ts.map +1 -0
  112. package/dist/src/yaml/step-validator.js +403 -0
  113. package/dist/src/yaml/steps/android-sign.d.ts +35 -0
  114. package/dist/src/yaml/steps/android-sign.d.ts.map +1 -0
  115. package/dist/src/yaml/steps/android-sign.js +147 -0
  116. package/dist/src/yaml/steps/android-version.d.ts +26 -0
  117. package/dist/src/yaml/steps/android-version.d.ts.map +1 -0
  118. package/dist/src/yaml/steps/android-version.js +128 -0
  119. package/dist/src/yaml/steps/android-version.test.d.ts +5 -0
  120. package/dist/src/yaml/steps/android-version.test.d.ts.map +1 -0
  121. package/dist/src/yaml/steps/android-version.test.js +196 -0
  122. package/dist/src/yaml/steps/android.d.ts +95 -0
  123. package/dist/src/yaml/steps/android.d.ts.map +1 -0
  124. package/dist/src/yaml/steps/android.js +916 -0
  125. package/dist/src/yaml/steps/app-store-deploy.d.ts +48 -0
  126. package/dist/src/yaml/steps/app-store-deploy.d.ts.map +1 -0
  127. package/dist/src/yaml/steps/app-store-deploy.js +162 -0
  128. package/dist/src/yaml/steps/base.d.ts +238 -0
  129. package/dist/src/yaml/steps/base.d.ts.map +1 -0
  130. package/dist/src/yaml/steps/base.js +345 -0
  131. package/dist/src/yaml/steps/bitrise-android-tools.d.ts +26 -0
  132. package/dist/src/yaml/steps/bitrise-android-tools.d.ts.map +1 -0
  133. package/dist/src/yaml/steps/bitrise-android-tools.js +198 -0
  134. package/dist/src/yaml/steps/bitrise-android-tools.test.d.ts +5 -0
  135. package/dist/src/yaml/steps/bitrise-android-tools.test.d.ts.map +1 -0
  136. package/dist/src/yaml/steps/bitrise-android-tools.test.js +280 -0
  137. package/dist/src/yaml/steps/bitrise-apk-info.d.ts +22 -0
  138. package/dist/src/yaml/steps/bitrise-apk-info.d.ts.map +1 -0
  139. package/dist/src/yaml/steps/bitrise-apk-info.js +144 -0
  140. package/dist/src/yaml/steps/bitrise-apk-info.test.d.ts +5 -0
  141. package/dist/src/yaml/steps/bitrise-apk-info.test.d.ts.map +1 -0
  142. package/dist/src/yaml/steps/bitrise-apk-info.test.js +331 -0
  143. package/dist/src/yaml/steps/bitrise-slack.d.ts +49 -0
  144. package/dist/src/yaml/steps/bitrise-slack.d.ts.map +1 -0
  145. package/dist/src/yaml/steps/bitrise-slack.js +280 -0
  146. package/dist/src/yaml/steps/bitrise-slack.test.d.ts +5 -0
  147. package/dist/src/yaml/steps/bitrise-slack.test.d.ts.map +1 -0
  148. package/dist/src/yaml/steps/bitrise-slack.test.js +484 -0
  149. package/dist/src/yaml/steps/bitrise-ssh.d.ts +27 -0
  150. package/dist/src/yaml/steps/bitrise-ssh.d.ts.map +1 -0
  151. package/dist/src/yaml/steps/bitrise-ssh.js +134 -0
  152. package/dist/src/yaml/steps/bitrise-ssh.test.d.ts +5 -0
  153. package/dist/src/yaml/steps/bitrise-ssh.test.d.ts.map +1 -0
  154. package/dist/src/yaml/steps/bitrise-ssh.test.js +205 -0
  155. package/dist/src/yaml/steps/cache.d.ts +52 -0
  156. package/dist/src/yaml/steps/cache.d.ts.map +1 -0
  157. package/dist/src/yaml/steps/cache.js +352 -0
  158. package/dist/src/yaml/steps/fastlane.d.ts +27 -0
  159. package/dist/src/yaml/steps/fastlane.d.ts.map +1 -0
  160. package/dist/src/yaml/steps/fastlane.js +79 -0
  161. package/dist/src/yaml/steps/file.d.ts +27 -0
  162. package/dist/src/yaml/steps/file.d.ts.map +1 -0
  163. package/dist/src/yaml/steps/file.js +35 -0
  164. package/dist/src/yaml/steps/flutter.d.ts +63 -0
  165. package/dist/src/yaml/steps/flutter.d.ts.map +1 -0
  166. package/dist/src/yaml/steps/flutter.js +215 -0
  167. package/dist/src/yaml/steps/git-clone.d.ts +26 -0
  168. package/dist/src/yaml/steps/git-clone.d.ts.map +1 -0
  169. package/dist/src/yaml/steps/git-clone.js +111 -0
  170. package/dist/src/yaml/steps/google-play-deploy.d.ts +37 -0
  171. package/dist/src/yaml/steps/google-play-deploy.d.ts.map +1 -0
  172. package/dist/src/yaml/steps/google-play-deploy.js +193 -0
  173. package/dist/src/yaml/steps/google-play-deploy.test.d.ts +5 -0
  174. package/dist/src/yaml/steps/google-play-deploy.test.d.ts.map +1 -0
  175. package/dist/src/yaml/steps/google-play-deploy.test.js +310 -0
  176. package/dist/src/yaml/steps/index.d.ts +10 -0
  177. package/dist/src/yaml/steps/index.d.ts.map +1 -0
  178. package/dist/src/yaml/steps/index.js +1361 -0
  179. package/dist/src/yaml/steps/ios-deps.d.ts +43 -0
  180. package/dist/src/yaml/steps/ios-deps.d.ts.map +1 -0
  181. package/dist/src/yaml/steps/ios-deps.js +141 -0
  182. package/dist/src/yaml/steps/ios-deps.test.d.ts +5 -0
  183. package/dist/src/yaml/steps/ios-deps.test.d.ts.map +1 -0
  184. package/dist/src/yaml/steps/ios-deps.test.js +90 -0
  185. package/dist/src/yaml/steps/ios-signing.d.ts +31 -0
  186. package/dist/src/yaml/steps/ios-signing.d.ts.map +1 -0
  187. package/dist/src/yaml/steps/ios-signing.js +144 -0
  188. package/dist/src/yaml/steps/ios-version.d.ts +47 -0
  189. package/dist/src/yaml/steps/ios-version.d.ts.map +1 -0
  190. package/dist/src/yaml/steps/ios-version.js +151 -0
  191. package/dist/src/yaml/steps/linting.d.ts +47 -0
  192. package/dist/src/yaml/steps/linting.d.ts.map +1 -0
  193. package/dist/src/yaml/steps/linting.js +148 -0
  194. package/dist/src/yaml/steps/phase2.test.d.ts +6 -0
  195. package/dist/src/yaml/steps/phase2.test.d.ts.map +1 -0
  196. package/dist/src/yaml/steps/phase2.test.js +197 -0
  197. package/dist/src/yaml/steps/phase3.test.d.ts +5 -0
  198. package/dist/src/yaml/steps/phase3.test.d.ts.map +1 -0
  199. package/dist/src/yaml/steps/phase3.test.js +144 -0
  200. package/dist/src/yaml/steps/phase4.test.d.ts +5 -0
  201. package/dist/src/yaml/steps/phase4.test.d.ts.map +1 -0
  202. package/dist/src/yaml/steps/phase4.test.js +166 -0
  203. package/dist/src/yaml/steps/phase5.test.d.ts +6 -0
  204. package/dist/src/yaml/steps/phase5.test.d.ts.map +1 -0
  205. package/dist/src/yaml/steps/phase5.test.js +263 -0
  206. package/dist/src/yaml/steps/registry.d.ts +88 -0
  207. package/dist/src/yaml/steps/registry.d.ts.map +1 -0
  208. package/dist/src/yaml/steps/registry.js +125 -0
  209. package/dist/src/yaml/steps/registry.test.d.ts +5 -0
  210. package/dist/src/yaml/steps/registry.test.d.ts.map +1 -0
  211. package/dist/src/yaml/steps/registry.test.js +235 -0
  212. package/dist/src/yaml/steps/release.d.ts +50 -0
  213. package/dist/src/yaml/steps/release.d.ts.map +1 -0
  214. package/dist/src/yaml/steps/release.js +154 -0
  215. package/dist/src/yaml/steps/script.d.ts +23 -0
  216. package/dist/src/yaml/steps/script.d.ts.map +1 -0
  217. package/dist/src/yaml/steps/script.js +63 -0
  218. package/dist/src/yaml/steps/spec-validation.test.d.ts +6 -0
  219. package/dist/src/yaml/steps/spec-validation.test.d.ts.map +1 -0
  220. package/dist/src/yaml/steps/spec-validation.test.js +130 -0
  221. package/dist/src/yaml/steps/steps.test.d.ts +6 -0
  222. package/dist/src/yaml/steps/steps.test.d.ts.map +1 -0
  223. package/dist/src/yaml/steps/steps.test.js +505 -0
  224. package/dist/src/yaml/steps/test-config.d.ts +3 -0
  225. package/dist/src/yaml/steps/test-config.d.ts.map +1 -0
  226. package/dist/src/yaml/steps/test-config.js +17 -0
  227. package/dist/src/yaml/steps/xcode-new.test.d.ts +5 -0
  228. package/dist/src/yaml/steps/xcode-new.test.d.ts.map +1 -0
  229. package/dist/src/yaml/steps/xcode-new.test.js +211 -0
  230. package/dist/src/yaml/steps/xcode.d.ts +222 -0
  231. package/dist/src/yaml/steps/xcode.d.ts.map +1 -0
  232. package/dist/src/yaml/steps/xcode.js +999 -0
  233. package/dist/src/yaml/types.d.ts +68 -0
  234. package/dist/src/yaml/types.d.ts.map +1 -0
  235. package/dist/src/yaml/types.js +5 -0
  236. package/dist/src/yaml/validation-types.d.ts +96 -0
  237. package/dist/src/yaml/validation-types.d.ts.map +1 -0
  238. package/dist/src/yaml/validation-types.js +8 -0
  239. package/dist/src/yaml/yaml-updater.d.ts +24 -0
  240. package/dist/src/yaml/yaml-updater.d.ts.map +1 -0
  241. package/dist/src/yaml/yaml-updater.js +128 -0
  242. package/package.json +16 -4
@@ -0,0 +1,48 @@
1
+ /**
2
+ * App Store Connect deploy step implementation
3
+ * Uploads IPA to App Store Connect / TestFlight using fastlane deliver
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 app-store-deploy step
10
+ */
11
+ export interface AppStoreDeployInputs {
12
+ /** Path to IPA file; defaults to $CIBUILD_IPA_PATH */
13
+ ipa_path?: string;
14
+ /** App Store Connect API key ID; defaults to $APPLE_API_KEY_ID */
15
+ api_key_id?: string;
16
+ /** API key issuer UUID; defaults to $APPLE_API_ISSUER_ID */
17
+ api_issuer?: string;
18
+ /** Base64-encoded .p8 key content; defaults to $APPLE_API_KEY_PATH */
19
+ api_key_path?: string;
20
+ /** Apple Team ID; defaults to $APPLE_TEAM_ID */
21
+ team_id?: string;
22
+ /** Numeric App Store Connect Apple ID (optional) */
23
+ app_id?: string;
24
+ /** App bundle ID (optional); defaults to $APP_BUNDLE_ID */
25
+ bundle_id?: string;
26
+ /** Platform (ios / macos / appletvos); default: ios */
27
+ platform?: string;
28
+ /** Skip metadata upload (yes/no); default: yes */
29
+ skip_metadata?: string;
30
+ /** Skip screenshot upload (yes/no); default: yes */
31
+ skip_screenshots?: string;
32
+ /** Auto-submit for review after upload (yes/no); default: no */
33
+ submit_for_review?: string;
34
+ /** Extra fastlane deliver flags */
35
+ options?: string;
36
+ /** Enable verbose fastlane output (yes/no); default: no */
37
+ verbose_log?: string;
38
+ }
39
+ /**
40
+ * App Store Connect deploy step executor
41
+ * Maps app-store-deploy to fastlane deliver
42
+ */
43
+ export declare class AppStoreDeployStepExecutor extends BaseStepExecutor {
44
+ isSkippedInLocalMode(): boolean;
45
+ getValidationRequirements(_inputs: AppStoreDeployInputs, _env: Record<string, string>, _config: CIConfig): ValidationRequirement[];
46
+ execute(inputs: AppStoreDeployInputs, _env: Record<string, string>, config: CIConfig): Promise<StepDef>;
47
+ }
48
+ //# sourceMappingURL=app-store-deploy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-store-deploy.d.ts","sourceRoot":"","sources":["../../../../src/yaml/steps/app-store-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,oBAAoB;IACnC,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gEAAgE;IAChE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mCAAmC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,qBAAa,0BAA2B,SAAQ,gBAAgB;IAC9D,oBAAoB,IAAI,OAAO;IAI/B,yBAAyB,CACvB,OAAO,EAAE,oBAAoB,EAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,OAAO,EAAE,QAAQ,GAChB,qBAAqB,EAAE;IAmBpB,OAAO,CAAC,MAAM,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;CAqJ9G"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * App Store Connect deploy step implementation
3
+ * Uploads IPA to App Store Connect / TestFlight using fastlane deliver
4
+ */
5
+ import { BaseStepExecutor } from './base.js';
6
+ /**
7
+ * App Store Connect deploy step executor
8
+ * Maps app-store-deploy to fastlane deliver
9
+ */
10
+ export class AppStoreDeployStepExecutor extends BaseStepExecutor {
11
+ isSkippedInLocalMode() {
12
+ return true;
13
+ }
14
+ getValidationRequirements(_inputs, _env, _config) {
15
+ const requirements = [];
16
+ requirements.push(this.requireCommand('fastlane', 'Fastlane for App Store deployment', 'Install with: gem install fastlane'));
17
+ requirements.push(this.runtimeRequirement('APPLE_API_KEY_ID', 'App Store Connect API key ID — set via: ci secrets add APPLE_API_KEY_ID -w release'));
18
+ requirements.push(this.runtimeRequirement('APPLE_API_ISSUER_ID', 'API key issuer UUID — set via: ci secrets add APPLE_API_ISSUER_ID -w release'));
19
+ requirements.push(this.runtimeRequirement('APPLE_API_KEY_PATH', 'Base64-encoded .p8 key content — set via: ci secrets add APPLE_API_KEY_PATH -w release'));
20
+ return requirements;
21
+ }
22
+ async execute(inputs, _env, config) {
23
+ const stepName = 'app-store-deploy';
24
+ const commands = [];
25
+ // In local mode, skip entirely — no App Store Connect credentials available
26
+ if (config.local) {
27
+ commands.push('echo "⏭️ app-store-deploy: skipped in local mode"');
28
+ commands.push('echo " App Store Connect upload requires CI credentials."');
29
+ const script = this.createBashScriptFromCommands(commands, stepName);
30
+ return this.createScriptStep(script, stepName);
31
+ }
32
+ const ipaPathInput = this.getInput(inputs, 'ipa_path', '');
33
+ const apiKeyIdInput = this.getInput(inputs, 'api_key_id', '');
34
+ const apiIssuerInput = this.getInput(inputs, 'api_issuer', '');
35
+ const apiKeyPathInput = this.getInput(inputs, 'api_key_path', '');
36
+ const teamIdInput = this.getInput(inputs, 'team_id', '');
37
+ const appId = this.getInput(inputs, 'app_id', '');
38
+ const bundleId = this.getInput(inputs, 'bundle_id', '');
39
+ const skipMetadataRaw = this.getInput(inputs, 'skip_metadata', 'yes');
40
+ const skipMetadata = skipMetadataRaw !== 'no' ? 'true' : 'false';
41
+ const skipScreenshotsRaw = this.getInput(inputs, 'skip_screenshots', 'yes');
42
+ const skipScreenshots = skipScreenshotsRaw !== 'no' ? 'true' : 'false';
43
+ const submitForReviewRaw = this.getInput(inputs, 'submit_for_review', 'no');
44
+ const submitForReview = submitForReviewRaw === 'yes';
45
+ const extraOptions = this.getInput(inputs, 'options', '');
46
+ const verboseLogRaw = this.getInput(inputs, 'verbose_log', 'no');
47
+ const verboseLog = verboseLogRaw === 'yes';
48
+ commands.push('# app-store-deploy step → fastlane deliver');
49
+ commands.push('echo "🚀 Deploying to App Store Connect..."');
50
+ commands.push('');
51
+ // Resolve IPA path
52
+ commands.push('# Locate IPA file');
53
+ if (ipaPathInput) {
54
+ commands.push(`IPA_PATH="${this.escapeBash(ipaPathInput)}"`);
55
+ }
56
+ else {
57
+ commands.push('IPA_PATH=""');
58
+ }
59
+ commands.push('if [ -z "$IPA_PATH" ] && [ -n "${CIBUILD_IPA_PATH:-}" ] && [ -f "$CIBUILD_IPA_PATH" ]; then');
60
+ commands.push(' IPA_PATH="$CIBUILD_IPA_PATH"');
61
+ commands.push('fi');
62
+ commands.push('if [ -z "$IPA_PATH" ] || [ ! -f "$IPA_PATH" ]; then');
63
+ commands.push(' echo "❌ Error: IPA file not found."');
64
+ commands.push(' echo " Set ipa_path input or ensure CIBUILD_IPA_PATH is set by a prior xcode-archive step."');
65
+ commands.push(' exit 1');
66
+ commands.push('fi');
67
+ commands.push('echo "IPA: $IPA_PATH"');
68
+ commands.push('');
69
+ // Resolve API key credentials (fall back to env vars at runtime)
70
+ commands.push('# Resolve Apple API key credentials');
71
+ commands.push(`API_KEY_ID="${this.escapeBash(apiKeyIdInput)}"`);
72
+ commands.push('if [ -z "$API_KEY_ID" ] && [ -n "${APPLE_API_KEY_ID:-}" ]; then API_KEY_ID="$APPLE_API_KEY_ID"; fi');
73
+ commands.push('');
74
+ commands.push(`API_ISSUER="${this.escapeBash(apiIssuerInput)}"`);
75
+ commands.push('if [ -z "$API_ISSUER" ] && [ -n "${APPLE_API_ISSUER_ID:-}" ]; then API_ISSUER="$APPLE_API_ISSUER_ID"; fi');
76
+ commands.push('');
77
+ commands.push(`API_KEY_B64="${this.escapeBash(apiKeyPathInput)}"`);
78
+ commands.push('if [ -z "$API_KEY_B64" ] && [ -n "${APPLE_API_KEY_PATH:-}" ]; then API_KEY_B64="$APPLE_API_KEY_PATH"; fi');
79
+ commands.push('');
80
+ commands.push(`TEAM_ID="${this.escapeBash(teamIdInput)}"`);
81
+ commands.push('if [ -z "$TEAM_ID" ] && [ -n "${APPLE_TEAM_ID:-}" ]; then TEAM_ID="$APPLE_TEAM_ID"; fi');
82
+ commands.push('');
83
+ // Validate credentials
84
+ commands.push('if [ -z "$API_KEY_ID" ] || [ -z "$API_ISSUER" ] || [ -z "$API_KEY_B64" ]; then');
85
+ commands.push(' echo "❌ Error: Apple API key credentials are missing."');
86
+ commands.push(' echo " Set the following secrets:"');
87
+ commands.push(' echo " ci secrets add APPLE_API_KEY_ID -w release"');
88
+ commands.push(' echo " ci secrets add APPLE_API_ISSUER_ID -w release"');
89
+ commands.push(' echo " ci secrets add APPLE_API_KEY_PATH -w release (base64-encoded .p8 file)"');
90
+ commands.push(' exit 1');
91
+ commands.push('fi');
92
+ commands.push('');
93
+ // Write temp .p8 and API key JSON
94
+ commands.push('# Write API key JSON (fastlane deliver requires JSON format, not raw .p8)');
95
+ commands.push('API_KEY_TEMP="$(mktemp /tmp/apple-api-key-XXXXXX.p8)"');
96
+ commands.push('API_KEY_JSON="$(mktemp /tmp/apple-api-key-XXXXXX.json)"');
97
+ commands.push('trap \'rm -f "$API_KEY_TEMP" "$API_KEY_JSON"\' EXIT');
98
+ commands.push('');
99
+ commands.push('printf \'%s\' "$API_KEY_B64" | base64 -d > "$API_KEY_TEMP"');
100
+ commands.push('');
101
+ commands.push('node -e "');
102
+ commands.push(' const fs = require(\'fs\');');
103
+ commands.push(' const key = fs.readFileSync(process.argv[1], \'utf-8\');');
104
+ commands.push(' fs.writeFileSync(process.argv[2], JSON.stringify({');
105
+ commands.push(' key_id: process.argv[3],');
106
+ commands.push(' issuer_id: process.argv[4],');
107
+ commands.push(' key: key,');
108
+ commands.push(' duration: 1200,');
109
+ commands.push(' in_house: false');
110
+ commands.push(' }));');
111
+ commands.push('" "$API_KEY_TEMP" "$API_KEY_JSON" "$API_KEY_ID" "$API_ISSUER"');
112
+ commands.push('');
113
+ // Build fastlane deliver command
114
+ commands.push('# Build fastlane deliver command');
115
+ commands.push('DELIVER_CMD="fastlane deliver"');
116
+ commands.push('DELIVER_CMD="$DELIVER_CMD --api_key_path \\"$API_KEY_JSON\\""');
117
+ commands.push('DELIVER_CMD="$DELIVER_CMD --ipa \\"$IPA_PATH\\""');
118
+ commands.push(`DELIVER_CMD="$DELIVER_CMD --skip_metadata ${skipMetadata}"`);
119
+ commands.push(`DELIVER_CMD="$DELIVER_CMD --skip_screenshots ${skipScreenshots}"`);
120
+ commands.push('[ -n "$TEAM_ID" ] && DELIVER_CMD="$DELIVER_CMD --team_id \\"$TEAM_ID\\""');
121
+ if (appId) {
122
+ commands.push(`DELIVER_CMD="$DELIVER_CMD --app \\"${this.escapeBash(appId)}\\""`);
123
+ }
124
+ else {
125
+ commands.push('[ -n "${APP_STORE_APP_ID:-}" ] && DELIVER_CMD="$DELIVER_CMD --app \\"$APP_STORE_APP_ID\\""');
126
+ }
127
+ if (bundleId) {
128
+ commands.push(`DELIVER_CMD="$DELIVER_CMD --bundle_id \\"${this.escapeBash(bundleId)}\\""`);
129
+ }
130
+ else {
131
+ commands.push('[ -n "${APP_BUNDLE_ID:-}" ] && DELIVER_CMD="$DELIVER_CMD --bundle_id \\"$APP_BUNDLE_ID\\""');
132
+ }
133
+ if (submitForReview) {
134
+ commands.push('DELIVER_CMD="$DELIVER_CMD --submit_for_review"');
135
+ }
136
+ if (verboseLog) {
137
+ commands.push('DELIVER_CMD="$DELIVER_CMD --verbose"');
138
+ }
139
+ if (extraOptions) {
140
+ commands.push(`DELIVER_CMD="$DELIVER_CMD ${this.escapeBash(extraOptions)}"`);
141
+ }
142
+ commands.push('');
143
+ commands.push('echo "Running: $DELIVER_CMD"');
144
+ commands.push('echo ""');
145
+ commands.push('');
146
+ commands.push('# Execute fastlane deliver');
147
+ commands.push('eval "$DELIVER_CMD"');
148
+ commands.push('DELIVER_EXIT=$?');
149
+ commands.push('');
150
+ commands.push('if [ $DELIVER_EXIT -eq 0 ]; then');
151
+ commands.push(' echo ""');
152
+ commands.push(' echo "✅ Successfully uploaded to App Store Connect"');
153
+ commands.push('else');
154
+ commands.push(' echo ""');
155
+ commands.push(' echo "❌ Failed to upload to App Store Connect (exit code: $DELIVER_EXIT)"');
156
+ commands.push(' exit 1');
157
+ commands.push('fi');
158
+ const script = this.createBashScriptFromCommands(commands, stepName);
159
+ return this.createScriptStep(script, stepName);
160
+ }
161
+ }
162
+ //# sourceMappingURL=app-store-deploy.js.map
@@ -0,0 +1,238 @@
1
+ /**
2
+ * Base interfaces and utilities for YAML step executors
3
+ */
4
+ import type { StepDef, CIConfig } from '../../types.js';
5
+ import type { ValidationRequirement, ValidationCheckResult, ValidationCategory, StepOutput } from '../validation-types.js';
6
+ /**
7
+ * Context provided to step executors
8
+ */
9
+ export interface StepExecutionContext {
10
+ workingDir: string;
11
+ env: Record<string, string>;
12
+ buildNumber?: string;
13
+ gitBranch?: string;
14
+ gitCommit?: string;
15
+ }
16
+ /**
17
+ * Step executor interface
18
+ * Each step implementation must provide an execute method
19
+ * that returns a StepDef compatible with the existing runner
20
+ */
21
+ export interface StepExecutor {
22
+ /**
23
+ * Executes the step and returns a StepDef for the runner
24
+ * @param inputs Step-specific inputs from YAML
25
+ * @param env Environment variables available to the step
26
+ * @param config CI configuration with path mappings
27
+ * @returns Promise resolving to StepDef
28
+ */
29
+ execute(inputs: any, env: Record<string, string>, config: CIConfig): Promise<StepDef>;
30
+ /**
31
+ * Returns validation requirements for this step (optional)
32
+ * These checks are READ-ONLY and safe to run on the user's machine
33
+ * @param inputs Step-specific inputs from YAML
34
+ * @param env Environment variables available to the step
35
+ * @param config CI configuration
36
+ * @returns Array of validation requirements
37
+ */
38
+ getValidationRequirements?(inputs: any, env: Record<string, string>, config: CIConfig): ValidationRequirement[];
39
+ /**
40
+ * Returns outputs this step provides to subsequent steps (optional)
41
+ * Used for dependency tracking during validation
42
+ * @returns Array of step outputs
43
+ */
44
+ getOutputs?(): StepOutput[];
45
+ /**
46
+ * Returns true if this step will be skipped entirely in local mode.
47
+ * When true, the validator skips all validation for this step.
48
+ */
49
+ isSkippedInLocalMode?(): boolean;
50
+ }
51
+ /**
52
+ * Base class for step executors providing common utilities
53
+ */
54
+ export declare abstract class BaseStepExecutor implements StepExecutor {
55
+ /**
56
+ * Abstract method that subclasses must implement
57
+ */
58
+ abstract execute(inputs: any, env: Record<string, string>, config: CIConfig): Promise<StepDef>;
59
+ /**
60
+ * Creates a script-based StepDef
61
+ * @param script Bash script content
62
+ * @param name Step name
63
+ * @returns StepDef with kind 'script'
64
+ */
65
+ protected createScriptStep(script: string, name: string): StepDef;
66
+ /**
67
+ * Creates a Python-based StepDef
68
+ * @param script Python script content
69
+ * @param name Step name
70
+ * @returns StepDef with kind 'python'
71
+ */
72
+ protected createPythonStep(script: string, name: string): StepDef;
73
+ /**
74
+ * Creates a Node.js-based StepDef
75
+ * @param script Node.js script content
76
+ * @param name Step name
77
+ * @returns StepDef with kind 'node'
78
+ */
79
+ protected createNodeStep(script: string, name: string): StepDef;
80
+ /**
81
+ * Creates a Ruby-based StepDef
82
+ * @param script Ruby script content
83
+ * @param name Step name
84
+ * @returns StepDef with kind 'ruby'
85
+ */
86
+ protected createRubyStep(script: string, name: string): StepDef;
87
+ /**
88
+ * Gets an input value with a default fallback
89
+ * @param inputs Input object
90
+ * @param key Input key
91
+ * @param defaultValue Default value if not found
92
+ * @returns Input value or default
93
+ */
94
+ protected getInput<T>(inputs: any, key: string, defaultValue: T): T;
95
+ /**
96
+ * Gets a required input value, throws if not found
97
+ * @param inputs Input object
98
+ * @param key Input key
99
+ * @param stepName Step name for error message
100
+ * @returns Input value
101
+ * @throws Error if input not found
102
+ */
103
+ protected getRequiredInput(inputs: any, key: string, stepName: string): any;
104
+ /**
105
+ * Escapes a string for safe use in bash scripts
106
+ * @param str String to escape
107
+ * @returns Escaped string safe for bash
108
+ */
109
+ protected escapeBash(str: string): string;
110
+ /**
111
+ * Interpolates environment variables in a string at runtime
112
+ * Supports ${VAR} and $VAR formats
113
+ * @param str String to interpolate
114
+ * @param env Environment variables
115
+ * @returns Interpolated string
116
+ */
117
+ protected interpolateString(str: string, env: Record<string, string>): string;
118
+ /**
119
+ * Creates a bash script with proper error handling
120
+ * Automatically sources envman store to load variables from previous steps
121
+ * @param scriptContent Main script content
122
+ * @param stepName Step name for error messages
123
+ * @returns Complete bash script with error handling
124
+ */
125
+ protected createBashScript(scriptContent: string, stepName: string): string;
126
+ /**
127
+ * Creates a multiline bash script from an array of commands
128
+ * @param commands Array of bash commands
129
+ * @param stepName Step name for error messages
130
+ * @returns Complete bash script
131
+ */
132
+ protected createBashScriptFromCommands(commands: string[], stepName: string): string;
133
+ /**
134
+ * Default implementation - no validation requirements
135
+ * Override in subclasses to add step-specific validations
136
+ */
137
+ getValidationRequirements(_inputs: any, _env: Record<string, string>, _config: CIConfig): ValidationRequirement[];
138
+ /**
139
+ * Default implementation - no outputs
140
+ * Override in subclasses to declare step outputs
141
+ */
142
+ getOutputs(): StepOutput[];
143
+ /**
144
+ * Returns true if this step will be skipped entirely in local mode.
145
+ * When true, the validator skips all validation (requirements + auto-discovery).
146
+ * Override in steps that check config.local in execute() and skip.
147
+ */
148
+ isSkippedInLocalMode(): boolean;
149
+ /**
150
+ * Creates a requirement for an external command to exist
151
+ * Uses 'which' to check - READ-ONLY operation
152
+ */
153
+ protected requireCommand(command: string, description: string, hint?: string): ValidationRequirement;
154
+ /**
155
+ * Creates a requirement for an environment variable to be set
156
+ * Reads process.env - READ-ONLY operation
157
+ */
158
+ protected requireEnvVar(varName: string, description: string, env: Record<string, string>, hint?: string): ValidationRequirement;
159
+ /**
160
+ * Creates a requirement for a file to exist
161
+ * Uses existsSync - READ-ONLY operation
162
+ */
163
+ protected requireFile(path: string, description: string, hint?: string): ValidationRequirement;
164
+ /**
165
+ * Creates a requirement for a directory to exist
166
+ * Uses existsSync - READ-ONLY operation
167
+ */
168
+ protected requireDirectory(path: string, description: string, hint?: string): ValidationRequirement;
169
+ /**
170
+ * Creates a requirement for a YAML input
171
+ * Just checks object property - READ-ONLY operation
172
+ */
173
+ protected requireInput(inputName: string, inputs: any, description: string, hint?: string): ValidationRequirement;
174
+ /**
175
+ * Creates a runtime-only requirement (checked at step execution time)
176
+ * Used for files/directories that will be created by earlier steps
177
+ */
178
+ protected runtimeRequirement(name: string, description: string, category?: ValidationCategory, providedBy?: string): ValidationRequirement;
179
+ /**
180
+ * Checks if a command exists on the system
181
+ * Uses 'which' command - READ-ONLY operation
182
+ */
183
+ protected checkCommandExists(command: string): Promise<ValidationCheckResult>;
184
+ /**
185
+ * Checks if Java is installed at a specific version
186
+ * Uses java_home or checks directory existence - READ-ONLY operation
187
+ */
188
+ protected checkJavaVersion(version: string): Promise<ValidationCheckResult>;
189
+ }
190
+ /**
191
+ * Metadata for a single input of a registered step.
192
+ * Used both for documentation and to drive the interactive 'add step' UX.
193
+ */
194
+ export interface StepInputMetadata {
195
+ description: string;
196
+ required: boolean;
197
+ default?: any;
198
+ /** Prompt style when collecting this input during 'ci edit add step' */
199
+ inputType?: 'text' | 'multiline' | 'password' | 'path';
200
+ /**
201
+ * Auto-suggest this input's initial value by transforming another field's
202
+ * already-collected value. e.g. deriveFrom: 'target_path' with
203
+ * deriveTransform: 'filename-to-env-var' turns "app/foo.json" → "FOO_JSON".
204
+ */
205
+ deriveFrom?: string;
206
+ deriveTransform?: 'filename-to-env-var';
207
+ /**
208
+ * If true, the collected value is stored as a CI secret (not written into
209
+ * the YAML step inputs). secretKeyField names the sibling input whose
210
+ * value holds the env-var name under which the secret is stored.
211
+ */
212
+ isSetupSecret?: boolean;
213
+ secretKeyField?: string;
214
+ }
215
+ /**
216
+ * Platform compatibility for a step.
217
+ * - 'ios' — only valid in iOS pipelines (Xcode, App Store, etc.)
218
+ * - 'android' — only valid in Android pipelines (Gradle, Play Store, etc.)
219
+ * - 'all' — valid in any pipeline (git, script, cache, notifications, etc.)
220
+ */
221
+ export type StepPlatform = 'ios' | 'android' | 'all';
222
+ /**
223
+ * Metadata about a registered step
224
+ */
225
+ export interface StepMetadata {
226
+ name: string;
227
+ description: string;
228
+ version?: string;
229
+ /**
230
+ * Platform this step is compatible with.
231
+ * Defaults to 'all' when not specified.
232
+ */
233
+ platform?: StepPlatform;
234
+ inputs?: {
235
+ [key: string]: StepInputMetadata;
236
+ };
237
+ }
238
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/yaml/steps/base.ts"],"names":[],"mappings":"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"}