@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.
- package/dist/chunk-35SI42CD.mjs +1 -0
- package/dist/chunk-IC45KVLJ.mjs +1 -0
- package/dist/chunk-XDY4V23V.mjs +1 -0
- package/dist/cli.cjs +14 -14
- package/dist/commands.mjs +1 -0
- package/dist/lib.mjs +3934 -0
- package/package.json +6 -10
- package/dist/src/cli.d.ts +0 -3
- package/dist/src/cli.d.ts.map +0 -1
- package/dist/src/cli.js +0 -399
- package/dist/src/commands/a-credential-target-follows-the-flavor-source-set.test.d.ts +0 -38
- package/dist/src/commands/a-credential-target-follows-the-flavor-source-set.test.d.ts.map +0 -1
- package/dist/src/commands/a-credential-target-follows-the-flavor-source-set.test.js +0 -222
- package/dist/src/commands/a-credential-two-workflows-cannot-share-is-declared-per-workflow.test.d.ts +0 -41
- package/dist/src/commands/a-credential-two-workflows-cannot-share-is-declared-per-workflow.test.d.ts.map +0 -1
- package/dist/src/commands/a-credential-two-workflows-cannot-share-is-declared-per-workflow.test.js +0 -324
- package/dist/src/commands/a-properties-stand-in-declares-the-keys-the-build-reads.test.d.ts +0 -2
- package/dist/src/commands/a-properties-stand-in-declares-the-keys-the-build-reads.test.d.ts.map +0 -1
- package/dist/src/commands/a-properties-stand-in-declares-the-keys-the-build-reads.test.js +0 -382
- package/dist/src/commands/an-already-stored-value-does-not-answer-the-target-question.test.d.ts +0 -29
- package/dist/src/commands/an-already-stored-value-does-not-answer-the-target-question.test.d.ts.map +0 -1
- package/dist/src/commands/an-already-stored-value-does-not-answer-the-target-question.test.js +0 -160
- package/dist/src/commands/android-gms-guard.test.d.ts +0 -9
- package/dist/src/commands/android-gms-guard.test.d.ts.map +0 -1
- package/dist/src/commands/android-gms-guard.test.js +0 -78
- package/dist/src/commands/android-java-version.test.d.ts +0 -12
- package/dist/src/commands/android-java-version.test.d.ts.map +0 -1
- package/dist/src/commands/android-java-version.test.js +0 -209
- package/dist/src/commands/android-scanner-java.test.d.ts +0 -2
- package/dist/src/commands/android-scanner-java.test.d.ts.map +0 -1
- package/dist/src/commands/android-scanner-java.test.js +0 -130
- package/dist/src/commands/android-scanner.d.ts +0 -250
- package/dist/src/commands/android-scanner.d.ts.map +0 -1
- package/dist/src/commands/android-scanner.js +0 -1639
- package/dist/src/commands/build.d.ts +0 -215
- package/dist/src/commands/build.d.ts.map +0 -1
- package/dist/src/commands/build.js +0 -1433
- package/dist/src/commands/build.test.d.ts +0 -13
- package/dist/src/commands/build.test.d.ts.map +0 -1
- package/dist/src/commands/build.test.js +0 -121
- package/dist/src/commands/detect-platform.d.ts +0 -13
- package/dist/src/commands/detect-platform.d.ts.map +0 -1
- package/dist/src/commands/detect-platform.js +0 -51
- package/dist/src/commands/detect-project.d.ts +0 -7
- package/dist/src/commands/detect-project.d.ts.map +0 -1
- package/dist/src/commands/detect-project.js +0 -12
- package/dist/src/commands/each-flavor-is-asked-for-its-own-properties-file.test.d.ts +0 -26
- package/dist/src/commands/each-flavor-is-asked-for-its-own-properties-file.test.d.ts.map +0 -1
- package/dist/src/commands/each-flavor-is-asked-for-its-own-properties-file.test.js +0 -196
- package/dist/src/commands/edit.d.ts +0 -12
- package/dist/src/commands/edit.d.ts.map +0 -1
- package/dist/src/commands/edit.js +0 -652
- package/dist/src/commands/edit.test.d.ts +0 -6
- package/dist/src/commands/edit.test.d.ts.map +0 -1
- package/dist/src/commands/edit.test.js +0 -45
- package/dist/src/commands/fidelity-trim.d.ts +0 -13
- package/dist/src/commands/fidelity-trim.d.ts.map +0 -1
- package/dist/src/commands/fidelity-trim.js +0 -21
- package/dist/src/commands/fidelity-trim.test.d.ts +0 -8
- package/dist/src/commands/fidelity-trim.test.d.ts.map +0 -1
- package/dist/src/commands/fidelity-trim.test.js +0 -79
- package/dist/src/commands/file-secret-collector.d.ts +0 -50
- package/dist/src/commands/file-secret-collector.d.ts.map +0 -1
- package/dist/src/commands/file-secret-collector.js +0 -217
- package/dist/src/commands/flavors-a-convention-plugin-creates-are-still-found.test.d.ts +0 -38
- package/dist/src/commands/flavors-a-convention-plugin-creates-are-still-found.test.d.ts.map +0 -1
- package/dist/src/commands/flavors-a-convention-plugin-creates-are-still-found.test.js +0 -300
- package/dist/src/commands/github-workflow.d.ts +0 -5
- package/dist/src/commands/github-workflow.d.ts.map +0 -1
- package/dist/src/commands/github-workflow.js +0 -45
- package/dist/src/commands/index.d.ts +0 -33
- package/dist/src/commands/index.d.ts.map +0 -1
- package/dist/src/commands/index.js +0 -33
- package/dist/src/commands/init.d.ts +0 -20
- package/dist/src/commands/init.d.ts.map +0 -1
- package/dist/src/commands/init.js +0 -264
- package/dist/src/commands/ios-scanner.d.ts +0 -104
- package/dist/src/commands/ios-scanner.d.ts.map +0 -1
- package/dist/src/commands/ios-scanner.js +0 -492
- package/dist/src/commands/ios-scheme-ranking.test.d.ts +0 -2
- package/dist/src/commands/ios-scheme-ranking.test.d.ts.map +0 -1
- package/dist/src/commands/ios-scheme-ranking.test.js +0 -264
- package/dist/src/commands/local-properties-reaches-every-workflow.test.d.ts +0 -30
- package/dist/src/commands/local-properties-reaches-every-workflow.test.d.ts.map +0 -1
- package/dist/src/commands/local-properties-reaches-every-workflow.test.js +0 -146
- package/dist/src/commands/reset.d.ts +0 -7
- package/dist/src/commands/reset.d.ts.map +0 -1
- package/dist/src/commands/reset.js +0 -81
- package/dist/src/commands/run.d.ts +0 -22
- package/dist/src/commands/run.d.ts.map +0 -1
- package/dist/src/commands/run.js +0 -141
- package/dist/src/commands/secrets-sync-workflow.d.ts +0 -15
- package/dist/src/commands/secrets-sync-workflow.d.ts.map +0 -1
- package/dist/src/commands/secrets-sync-workflow.js +0 -255
- package/dist/src/commands/secrets-upload.d.ts +0 -21
- package/dist/src/commands/secrets-upload.d.ts.map +0 -1
- package/dist/src/commands/secrets-upload.js +0 -177
- package/dist/src/commands/secrets-upload.test.d.ts +0 -5
- package/dist/src/commands/secrets-upload.test.d.ts.map +0 -1
- package/dist/src/commands/secrets-upload.test.js +0 -60
- package/dist/src/commands/validate.d.ts +0 -10
- package/dist/src/commands/validate.d.ts.map +0 -1
- package/dist/src/commands/validate.js +0 -46
- package/dist/src/config.d.ts +0 -3
- package/dist/src/config.d.ts.map +0 -1
- package/dist/src/config.js +0 -47
- package/dist/src/envman/cli.d.ts +0 -21
- package/dist/src/envman/cli.d.ts.map +0 -1
- package/dist/src/envman/cli.js +0 -240
- package/dist/src/envman/envman.d.ts +0 -83
- package/dist/src/envman/envman.d.ts.map +0 -1
- package/dist/src/envman/envman.js +0 -361
- package/dist/src/envman/envman.test.d.ts +0 -5
- package/dist/src/envman/envman.test.d.ts.map +0 -1
- package/dist/src/envman/envman.test.js +0 -236
- package/dist/src/envman/envstore-round-trip.test.d.ts +0 -27
- package/dist/src/envman/envstore-round-trip.test.d.ts.map +0 -1
- package/dist/src/envman/envstore-round-trip.test.js +0 -130
- package/dist/src/envman/index.d.ts +0 -23
- package/dist/src/envman/index.d.ts.map +0 -1
- package/dist/src/envman/index.js +0 -23
- package/dist/src/envman/shim.d.ts +0 -16
- package/dist/src/envman/shim.d.ts.map +0 -1
- package/dist/src/envman/shim.js +0 -66
- package/dist/src/envman/types.d.ts +0 -55
- package/dist/src/envman/types.d.ts.map +0 -1
- package/dist/src/envman/types.js +0 -12
- package/dist/src/lib.d.ts +0 -33
- package/dist/src/lib.d.ts.map +0 -1
- package/dist/src/lib.js +0 -37
- package/dist/src/pipeline.d.ts +0 -3
- package/dist/src/pipeline.d.ts.map +0 -1
- package/dist/src/pipeline.js +0 -57
- package/dist/src/runner-node-step.test.d.ts +0 -12
- package/dist/src/runner-node-step.test.d.ts.map +0 -1
- package/dist/src/runner-node-step.test.js +0 -61
- package/dist/src/runner.d.ts +0 -31
- package/dist/src/runner.d.ts.map +0 -1
- package/dist/src/runner.js +0 -240
- package/dist/src/shared/detect-project.d.ts +0 -57
- package/dist/src/shared/detect-project.d.ts.map +0 -1
- package/dist/src/shared/detect-project.js +0 -219
- package/dist/src/shared/detect-project.test.d.ts +0 -2
- package/dist/src/shared/detect-project.test.d.ts.map +0 -1
- package/dist/src/shared/detect-project.test.js +0 -161
- package/dist/src/shared/git.d.ts +0 -25
- package/dist/src/shared/git.d.ts.map +0 -1
- package/dist/src/shared/git.js +0 -53
- package/dist/src/shared/git.test.d.ts +0 -9
- package/dist/src/shared/git.test.d.ts.map +0 -1
- package/dist/src/shared/git.test.js +0 -66
- package/dist/src/shared/gitignore.d.ts +0 -6
- package/dist/src/shared/gitignore.d.ts.map +0 -1
- package/dist/src/shared/gitignore.js +0 -26
- package/dist/src/shared/gradle-settings.d.ts +0 -49
- package/dist/src/shared/gradle-settings.d.ts.map +0 -1
- package/dist/src/shared/gradle-settings.js +0 -138
- package/dist/src/shared/gradle-settings.test.d.ts +0 -2
- package/dist/src/shared/gradle-settings.test.d.ts.map +0 -1
- package/dist/src/shared/gradle-settings.test.js +0 -65
- package/dist/src/shared/prompts.d.ts +0 -30
- package/dist/src/shared/prompts.d.ts.map +0 -1
- package/dist/src/shared/prompts.js +0 -121
- package/dist/src/shared/xcode-container.test.d.ts +0 -2
- package/dist/src/shared/xcode-container.test.d.ts.map +0 -1
- package/dist/src/shared/xcode-container.test.js +0 -123
- package/dist/src/step-marker.d.ts +0 -12
- package/dist/src/step-marker.d.ts.map +0 -1
- package/dist/src/step-marker.js +0 -29
- package/dist/src/step-marker.test.d.ts +0 -11
- package/dist/src/step-marker.test.d.ts.map +0 -1
- package/dist/src/step-marker.test.js +0 -45
- package/dist/src/types.d.ts +0 -58
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js +0 -2
- package/dist/src/yaml/a-cache-path-must-not-swallow-a-credential.test.d.ts +0 -28
- package/dist/src/yaml/a-cache-path-must-not-swallow-a-credential.test.d.ts.map +0 -1
- package/dist/src/yaml/a-cache-path-must-not-swallow-a-credential.test.js +0 -223
- package/dist/src/yaml/a-declared-secret-reaches-the-file-step.test.d.ts +0 -20
- package/dist/src/yaml/a-declared-secret-reaches-the-file-step.test.d.ts.map +0 -1
- package/dist/src/yaml/a-declared-secret-reaches-the-file-step.test.js +0 -201
- package/dist/src/yaml/a-declared-slot-may-name-the-workflow-it-belongs-to.test.d.ts +0 -37
- package/dist/src/yaml/a-declared-slot-may-name-the-workflow-it-belongs-to.test.d.ts.map +0 -1
- package/dist/src/yaml/a-declared-slot-may-name-the-workflow-it-belongs-to.test.js +0 -255
- package/dist/src/yaml/a-missing-credential-is-loud.test.d.ts +0 -32
- package/dist/src/yaml/a-missing-credential-is-loud.test.d.ts.map +0 -1
- package/dist/src/yaml/a-missing-credential-is-loud.test.js +0 -301
- package/dist/src/yaml/a-runtime-requirement-names-a-real-provider.test.d.ts +0 -18
- package/dist/src/yaml/a-runtime-requirement-names-a-real-provider.test.d.ts.map +0 -1
- package/dist/src/yaml/a-runtime-requirement-names-a-real-provider.test.js +0 -66
- package/dist/src/yaml/a-scoped-slot-must-name-a-workflow-the-pipeline-has.test.d.ts +0 -34
- package/dist/src/yaml/a-scoped-slot-must-name-a-workflow-the-pipeline-has.test.d.ts.map +0 -1
- package/dist/src/yaml/a-scoped-slot-must-name-a-workflow-the-pipeline-has.test.js +0 -218
- package/dist/src/yaml/a-value-this-instance-stored-is-a-value-it-has.test.d.ts +0 -27
- package/dist/src/yaml/a-value-this-instance-stored-is-a-value-it-has.test.d.ts.map +0 -1
- package/dist/src/yaml/a-value-this-instance-stored-is-a-value-it-has.test.js +0 -126
- package/dist/src/yaml/bitrise-compat.d.ts +0 -65
- package/dist/src/yaml/bitrise-compat.d.ts.map +0 -1
- package/dist/src/yaml/bitrise-compat.js +0 -206
- package/dist/src/yaml/bitrise-compat.test.d.ts +0 -5
- package/dist/src/yaml/bitrise-compat.test.d.ts.map +0 -1
- package/dist/src/yaml/bitrise-compat.test.js +0 -347
- package/dist/src/yaml/cache-key-missing-file.test.d.ts +0 -12
- package/dist/src/yaml/cache-key-missing-file.test.d.ts.map +0 -1
- package/dist/src/yaml/cache-key-missing-file.test.js +0 -116
- package/dist/src/yaml/converter.d.ts +0 -103
- package/dist/src/yaml/converter.d.ts.map +0 -1
- package/dist/src/yaml/converter.js +0 -420
- package/dist/src/yaml/converter.test.d.ts +0 -5
- package/dist/src/yaml/converter.test.d.ts.map +0 -1
- package/dist/src/yaml/converter.test.js +0 -548
- package/dist/src/yaml/e2e.test.d.ts +0 -6
- package/dist/src/yaml/e2e.test.d.ts.map +0 -1
- package/dist/src/yaml/e2e.test.js +0 -446
- package/dist/src/yaml/env-resolver.d.ts +0 -218
- package/dist/src/yaml/env-resolver.d.ts.map +0 -1
- package/dist/src/yaml/env-resolver.js +0 -591
- package/dist/src/yaml/env-resolver.test.d.ts +0 -5
- package/dist/src/yaml/env-resolver.test.d.ts.map +0 -1
- package/dist/src/yaml/env-resolver.test.js +0 -502
- package/dist/src/yaml/every-build-log-witnesses-the-commit-on-disk.test.d.ts +0 -16
- package/dist/src/yaml/every-build-log-witnesses-the-commit-on-disk.test.d.ts.map +0 -1
- package/dist/src/yaml/every-build-log-witnesses-the-commit-on-disk.test.js +0 -126
- package/dist/src/yaml/fidelity-input-digest.d.ts +0 -37
- package/dist/src/yaml/fidelity-input-digest.d.ts.map +0 -1
- package/dist/src/yaml/fidelity-input-digest.js +0 -208
- package/dist/src/yaml/fidelity-input-digest.test.d.ts +0 -2
- package/dist/src/yaml/fidelity-input-digest.test.d.ts.map +0 -1
- package/dist/src/yaml/fidelity-input-digest.test.js +0 -167
- package/dist/src/yaml/fidelity-manifest.d.ts +0 -126
- package/dist/src/yaml/fidelity-manifest.d.ts.map +0 -1
- package/dist/src/yaml/fidelity-manifest.js +0 -134
- package/dist/src/yaml/fidelity-manifest.test.d.ts +0 -12
- package/dist/src/yaml/fidelity-manifest.test.d.ts.map +0 -1
- package/dist/src/yaml/fidelity-manifest.test.js +0 -251
- package/dist/src/yaml/interactive-prompts.d.ts +0 -71
- package/dist/src/yaml/interactive-prompts.d.ts.map +0 -1
- package/dist/src/yaml/interactive-prompts.js +0 -260
- package/dist/src/yaml/meta-helpers.d.ts +0 -28
- package/dist/src/yaml/meta-helpers.d.ts.map +0 -1
- package/dist/src/yaml/meta-helpers.js +0 -46
- package/dist/src/yaml/missing-env-handler.d.ts +0 -45
- package/dist/src/yaml/missing-env-handler.d.ts.map +0 -1
- package/dist/src/yaml/missing-env-handler.js +0 -64
- package/dist/src/yaml/parser.d.ts +0 -33
- package/dist/src/yaml/parser.d.ts.map +0 -1
- package/dist/src/yaml/parser.js +0 -148
- package/dist/src/yaml/parser.test.d.ts +0 -5
- package/dist/src/yaml/parser.test.d.ts.map +0 -1
- package/dist/src/yaml/parser.test.js +0 -83
- package/dist/src/yaml/pipeline-with-secrets.d.ts +0 -25
- package/dist/src/yaml/pipeline-with-secrets.d.ts.map +0 -1
- package/dist/src/yaml/pipeline-with-secrets.js +0 -76
- package/dist/src/yaml/platform-detector.d.ts +0 -83
- package/dist/src/yaml/platform-detector.d.ts.map +0 -1
- package/dist/src/yaml/platform-detector.js +0 -189
- package/dist/src/yaml/platform-detector.test.d.ts +0 -5
- package/dist/src/yaml/platform-detector.test.d.ts.map +0 -1
- package/dist/src/yaml/platform-detector.test.js +0 -525
- package/dist/src/yaml/preflight-validation.d.ts +0 -29
- package/dist/src/yaml/preflight-validation.d.ts.map +0 -1
- package/dist/src/yaml/preflight-validation.js +0 -21
- package/dist/src/yaml/secrets-manager.d.ts +0 -87
- package/dist/src/yaml/secrets-manager.d.ts.map +0 -1
- package/dist/src/yaml/secrets-manager.js +0 -230
- package/dist/src/yaml/shell-assignments.d.ts +0 -40
- package/dist/src/yaml/shell-assignments.d.ts.map +0 -1
- package/dist/src/yaml/shell-assignments.js +0 -77
- package/dist/src/yaml/step-validator-check-failure.test.d.ts +0 -24
- package/dist/src/yaml/step-validator-check-failure.test.d.ts.map +0 -1
- package/dist/src/yaml/step-validator-check-failure.test.js +0 -130
- package/dist/src/yaml/step-validator-self-assigned.test.d.ts +0 -23
- package/dist/src/yaml/step-validator-self-assigned.test.d.ts.map +0 -1
- package/dist/src/yaml/step-validator-self-assigned.test.js +0 -191
- package/dist/src/yaml/step-validator.d.ts +0 -67
- package/dist/src/yaml/step-validator.d.ts.map +0 -1
- package/dist/src/yaml/step-validator.js +0 -466
- package/dist/src/yaml/step-validator.test.d.ts +0 -18
- package/dist/src/yaml/step-validator.test.d.ts.map +0 -1
- package/dist/src/yaml/step-validator.test.js +0 -140
- package/dist/src/yaml/steps/android-sign.d.ts +0 -35
- package/dist/src/yaml/steps/android-sign.d.ts.map +0 -1
- package/dist/src/yaml/steps/android-sign.js +0 -147
- package/dist/src/yaml/steps/android-variant-resolution.test.d.ts +0 -2
- package/dist/src/yaml/steps/android-variant-resolution.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/android-variant-resolution.test.js +0 -260
- package/dist/src/yaml/steps/android-version.d.ts +0 -26
- package/dist/src/yaml/steps/android-version.d.ts.map +0 -1
- package/dist/src/yaml/steps/android-version.js +0 -128
- package/dist/src/yaml/steps/android-version.test.d.ts +0 -5
- package/dist/src/yaml/steps/android-version.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/android-version.test.js +0 -196
- package/dist/src/yaml/steps/android.d.ts +0 -156
- package/dist/src/yaml/steps/android.d.ts.map +0 -1
- package/dist/src/yaml/steps/android.js +0 -1084
- package/dist/src/yaml/steps/app-store-deploy.d.ts +0 -48
- package/dist/src/yaml/steps/app-store-deploy.d.ts.map +0 -1
- package/dist/src/yaml/steps/app-store-deploy.js +0 -167
- package/dist/src/yaml/steps/base.d.ts +0 -263
- package/dist/src/yaml/steps/base.d.ts.map +0 -1
- package/dist/src/yaml/steps/base.js +0 -380
- package/dist/src/yaml/steps/bitrise-android-tools.d.ts +0 -26
- package/dist/src/yaml/steps/bitrise-android-tools.d.ts.map +0 -1
- package/dist/src/yaml/steps/bitrise-android-tools.js +0 -200
- package/dist/src/yaml/steps/bitrise-android-tools.test.d.ts +0 -5
- package/dist/src/yaml/steps/bitrise-android-tools.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/bitrise-android-tools.test.js +0 -280
- package/dist/src/yaml/steps/bitrise-apk-info.d.ts +0 -22
- package/dist/src/yaml/steps/bitrise-apk-info.d.ts.map +0 -1
- package/dist/src/yaml/steps/bitrise-apk-info.js +0 -144
- package/dist/src/yaml/steps/bitrise-apk-info.test.d.ts +0 -5
- package/dist/src/yaml/steps/bitrise-apk-info.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/bitrise-apk-info.test.js +0 -331
- package/dist/src/yaml/steps/bitrise-slack.d.ts +0 -49
- package/dist/src/yaml/steps/bitrise-slack.d.ts.map +0 -1
- package/dist/src/yaml/steps/bitrise-slack.js +0 -280
- package/dist/src/yaml/steps/bitrise-slack.test.d.ts +0 -5
- package/dist/src/yaml/steps/bitrise-slack.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/bitrise-slack.test.js +0 -484
- package/dist/src/yaml/steps/bitrise-ssh.d.ts +0 -27
- package/dist/src/yaml/steps/bitrise-ssh.d.ts.map +0 -1
- package/dist/src/yaml/steps/bitrise-ssh.js +0 -134
- package/dist/src/yaml/steps/bitrise-ssh.test.d.ts +0 -5
- package/dist/src/yaml/steps/bitrise-ssh.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/bitrise-ssh.test.js +0 -205
- package/dist/src/yaml/steps/cache-pull-daemon.test.d.ts +0 -27
- package/dist/src/yaml/steps/cache-pull-daemon.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/cache-pull-daemon.test.js +0 -212
- package/dist/src/yaml/steps/cache-pull-restore-roots.test.d.ts +0 -42
- package/dist/src/yaml/steps/cache-pull-restore-roots.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/cache-pull-restore-roots.test.js +0 -209
- package/dist/src/yaml/steps/cache-push-daemon.test.d.ts +0 -27
- package/dist/src/yaml/steps/cache-push-daemon.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/cache-push-daemon.test.js +0 -171
- package/dist/src/yaml/steps/cache.d.ts +0 -59
- package/dist/src/yaml/steps/cache.d.ts.map +0 -1
- package/dist/src/yaml/steps/cache.js +0 -1027
- package/dist/src/yaml/steps/cocoapods-deployment-floor.d.ts +0 -42
- package/dist/src/yaml/steps/cocoapods-deployment-floor.d.ts.map +0 -1
- package/dist/src/yaml/steps/cocoapods-deployment-floor.js +0 -140
- package/dist/src/yaml/steps/cocoapods-deployment-floor.test.d.ts +0 -11
- package/dist/src/yaml/steps/cocoapods-deployment-floor.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/cocoapods-deployment-floor.test.js +0 -176
- package/dist/src/yaml/steps/cocoapods-install-emits-valid-bash.test.d.ts +0 -22
- package/dist/src/yaml/steps/cocoapods-install-emits-valid-bash.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/cocoapods-install-emits-valid-bash.test.js +0 -97
- package/dist/src/yaml/steps/cocoapods-locked-bundler.test.d.ts +0 -17
- package/dist/src/yaml/steps/cocoapods-locked-bundler.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/cocoapods-locked-bundler.test.js +0 -282
- package/dist/src/yaml/steps/cocoapods-skip-if-absent.test.d.ts +0 -17
- package/dist/src/yaml/steps/cocoapods-skip-if-absent.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/cocoapods-skip-if-absent.test.js +0 -132
- package/dist/src/yaml/steps/envstore-loader.test.d.ts +0 -15
- package/dist/src/yaml/steps/envstore-loader.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/envstore-loader.test.js +0 -143
- package/dist/src/yaml/steps/fastlane.d.ts +0 -27
- package/dist/src/yaml/steps/fastlane.d.ts.map +0 -1
- package/dist/src/yaml/steps/fastlane.js +0 -79
- package/dist/src/yaml/steps/fidelity-aspect-guard.d.ts +0 -53
- package/dist/src/yaml/steps/fidelity-aspect-guard.d.ts.map +0 -1
- package/dist/src/yaml/steps/fidelity-aspect-guard.js +0 -72
- package/dist/src/yaml/steps/fidelity-aspect-guard.test.d.ts +0 -11
- package/dist/src/yaml/steps/fidelity-aspect-guard.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/fidelity-aspect-guard.test.js +0 -50
- package/dist/src/yaml/steps/fidelity-reference-provenance.d.ts +0 -87
- package/dist/src/yaml/steps/fidelity-reference-provenance.d.ts.map +0 -1
- package/dist/src/yaml/steps/fidelity-reference-provenance.js +0 -111
- package/dist/src/yaml/steps/fidelity-reference-provenance.test.d.ts +0 -22
- package/dist/src/yaml/steps/fidelity-reference-provenance.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/fidelity-reference-provenance.test.js +0 -118
- package/dist/src/yaml/steps/file.d.ts +0 -52
- package/dist/src/yaml/steps/file.d.ts.map +0 -1
- package/dist/src/yaml/steps/file.js +0 -108
- package/dist/src/yaml/steps/flutter.d.ts +0 -63
- package/dist/src/yaml/steps/flutter.d.ts.map +0 -1
- package/dist/src/yaml/steps/flutter.js +0 -215
- package/dist/src/yaml/steps/git-clone-names-the-inputs-it-ignores.test.d.ts +0 -16
- package/dist/src/yaml/steps/git-clone-names-the-inputs-it-ignores.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/git-clone-names-the-inputs-it-ignores.test.js +0 -127
- package/dist/src/yaml/steps/git-clone.d.ts +0 -32
- package/dist/src/yaml/steps/git-clone.d.ts.map +0 -1
- package/dist/src/yaml/steps/git-clone.js +0 -171
- package/dist/src/yaml/steps/git-fetch-retry-exec.test.d.ts +0 -10
- package/dist/src/yaml/steps/git-fetch-retry-exec.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/git-fetch-retry-exec.test.js +0 -162
- package/dist/src/yaml/steps/git-fetch-retry.d.ts +0 -62
- package/dist/src/yaml/steps/git-fetch-retry.d.ts.map +0 -1
- package/dist/src/yaml/steps/git-fetch-retry.js +0 -155
- package/dist/src/yaml/steps/git-fetch-retry.test.d.ts +0 -5
- package/dist/src/yaml/steps/git-fetch-retry.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/git-fetch-retry.test.js +0 -86
- package/dist/src/yaml/steps/google-play-deploy.d.ts +0 -37
- package/dist/src/yaml/steps/google-play-deploy.d.ts.map +0 -1
- package/dist/src/yaml/steps/google-play-deploy.js +0 -193
- package/dist/src/yaml/steps/google-play-deploy.test.d.ts +0 -5
- package/dist/src/yaml/steps/google-play-deploy.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/google-play-deploy.test.js +0 -310
- package/dist/src/yaml/steps/gradle-memory.d.ts +0 -61
- package/dist/src/yaml/steps/gradle-memory.d.ts.map +0 -1
- package/dist/src/yaml/steps/gradle-memory.js +0 -311
- package/dist/src/yaml/steps/gradle-memory.test.d.ts +0 -2
- package/dist/src/yaml/steps/gradle-memory.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/gradle-memory.test.js +0 -297
- package/dist/src/yaml/steps/gradle-sdk-cmake.d.ts +0 -28
- package/dist/src/yaml/steps/gradle-sdk-cmake.d.ts.map +0 -1
- package/dist/src/yaml/steps/gradle-sdk-cmake.js +0 -107
- package/dist/src/yaml/steps/gradle-sdk-cmake.test.d.ts +0 -2
- package/dist/src/yaml/steps/gradle-sdk-cmake.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/gradle-sdk-cmake.test.js +0 -183
- package/dist/src/yaml/steps/index.d.ts +0 -10
- package/dist/src/yaml/steps/index.d.ts.map +0 -1
- package/dist/src/yaml/steps/index.js +0 -1461
- package/dist/src/yaml/steps/ios-deps.d.ts +0 -78
- package/dist/src/yaml/steps/ios-deps.d.ts.map +0 -1
- package/dist/src/yaml/steps/ios-deps.js +0 -279
- package/dist/src/yaml/steps/ios-deps.test.d.ts +0 -5
- package/dist/src/yaml/steps/ios-deps.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/ios-deps.test.js +0 -90
- package/dist/src/yaml/steps/ios-signing.d.ts +0 -31
- package/dist/src/yaml/steps/ios-signing.d.ts.map +0 -1
- package/dist/src/yaml/steps/ios-signing.js +0 -144
- package/dist/src/yaml/steps/ios-version.d.ts +0 -47
- package/dist/src/yaml/steps/ios-version.d.ts.map +0 -1
- package/dist/src/yaml/steps/ios-version.js +0 -151
- package/dist/src/yaml/steps/java-home-version-spec.test.d.ts +0 -10
- package/dist/src/yaml/steps/java-home-version-spec.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/java-home-version-spec.test.js +0 -58
- package/dist/src/yaml/steps/linting.d.ts +0 -47
- package/dist/src/yaml/steps/linting.d.ts.map +0 -1
- package/dist/src/yaml/steps/linting.js +0 -148
- package/dist/src/yaml/steps/phase2.test.d.ts +0 -6
- package/dist/src/yaml/steps/phase2.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/phase2.test.js +0 -197
- package/dist/src/yaml/steps/phase3.test.d.ts +0 -5
- package/dist/src/yaml/steps/phase3.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/phase3.test.js +0 -144
- package/dist/src/yaml/steps/phase4.test.d.ts +0 -5
- package/dist/src/yaml/steps/phase4.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/phase4.test.js +0 -166
- package/dist/src/yaml/steps/phase5.test.d.ts +0 -6
- package/dist/src/yaml/steps/phase5.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/phase5.test.js +0 -263
- package/dist/src/yaml/steps/registry.d.ts +0 -88
- package/dist/src/yaml/steps/registry.d.ts.map +0 -1
- package/dist/src/yaml/steps/registry.js +0 -125
- package/dist/src/yaml/steps/registry.test.d.ts +0 -5
- package/dist/src/yaml/steps/registry.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/registry.test.js +0 -235
- package/dist/src/yaml/steps/release.d.ts +0 -50
- package/dist/src/yaml/steps/release.d.ts.map +0 -1
- package/dist/src/yaml/steps/release.js +0 -154
- package/dist/src/yaml/steps/render-post-processor.d.ts +0 -100
- package/dist/src/yaml/steps/render-post-processor.d.ts.map +0 -1
- package/dist/src/yaml/steps/render-post-processor.js +0 -270
- package/dist/src/yaml/steps/render-post-processor.test.d.ts +0 -13
- package/dist/src/yaml/steps/render-post-processor.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/render-post-processor.test.js +0 -220
- package/dist/src/yaml/steps/script.d.ts +0 -23
- package/dist/src/yaml/steps/script.d.ts.map +0 -1
- package/dist/src/yaml/steps/script.js +0 -63
- package/dist/src/yaml/steps/spec-validation.test.d.ts +0 -6
- package/dist/src/yaml/steps/spec-validation.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/spec-validation.test.js +0 -130
- package/dist/src/yaml/steps/steps.test.d.ts +0 -6
- package/dist/src/yaml/steps/steps.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/steps.test.js +0 -881
- package/dist/src/yaml/steps/structural-facts.d.ts +0 -992
- package/dist/src/yaml/steps/structural-facts.d.ts.map +0 -1
- package/dist/src/yaml/steps/structural-facts.js +0 -3276
- package/dist/src/yaml/steps/structural-facts.test.d.ts +0 -12
- package/dist/src/yaml/steps/structural-facts.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/structural-facts.test.js +0 -3039
- package/dist/src/yaml/steps/test-config.d.ts +0 -5
- package/dist/src/yaml/steps/test-config.d.ts.map +0 -1
- package/dist/src/yaml/steps/test-config.js +0 -25
- package/dist/src/yaml/steps/trim-align-corpus.test.d.ts +0 -28
- package/dist/src/yaml/steps/trim-align-corpus.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/trim-align-corpus.test.js +0 -383
- package/dist/src/yaml/steps/trim-align.d.ts +0 -87
- package/dist/src/yaml/steps/trim-align.d.ts.map +0 -1
- package/dist/src/yaml/steps/trim-align.js +0 -367
- package/dist/src/yaml/steps/trim-align.test.d.ts +0 -11
- package/dist/src/yaml/steps/trim-align.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/trim-align.test.js +0 -261
- package/dist/src/yaml/steps/ui-fidelity-preview-android.d.ts +0 -66
- package/dist/src/yaml/steps/ui-fidelity-preview-android.d.ts.map +0 -1
- package/dist/src/yaml/steps/ui-fidelity-preview-android.js +0 -251
- package/dist/src/yaml/steps/ui-fidelity-preview-android.test.d.ts +0 -13
- package/dist/src/yaml/steps/ui-fidelity-preview-android.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/ui-fidelity-preview-android.test.js +0 -302
- package/dist/src/yaml/steps/ui-fidelity-preview.d.ts +0 -134
- package/dist/src/yaml/steps/ui-fidelity-preview.d.ts.map +0 -1
- package/dist/src/yaml/steps/ui-fidelity-preview.js +0 -173
- package/dist/src/yaml/steps/ui-fidelity-preview.test.d.ts +0 -11
- package/dist/src/yaml/steps/ui-fidelity-preview.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/ui-fidelity-preview.test.js +0 -210
- package/dist/src/yaml/steps/ui-fidelity-render-android.d.ts +0 -155
- package/dist/src/yaml/steps/ui-fidelity-render-android.d.ts.map +0 -1
- package/dist/src/yaml/steps/ui-fidelity-render-android.js +0 -1389
- package/dist/src/yaml/steps/ui-fidelity-render-android.test.d.ts +0 -2
- package/dist/src/yaml/steps/ui-fidelity-render-android.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/ui-fidelity-render-android.test.js +0 -1106
- package/dist/src/yaml/steps/ui-fidelity-render.d.ts +0 -230
- package/dist/src/yaml/steps/ui-fidelity-render.d.ts.map +0 -1
- package/dist/src/yaml/steps/ui-fidelity-render.js +0 -1597
- package/dist/src/yaml/steps/ui-fidelity-render.test.d.ts +0 -18
- package/dist/src/yaml/steps/ui-fidelity-render.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/ui-fidelity-render.test.js +0 -1871
- package/dist/src/yaml/steps/xcode-app-product.d.ts +0 -90
- package/dist/src/yaml/steps/xcode-app-product.d.ts.map +0 -1
- package/dist/src/yaml/steps/xcode-app-product.js +0 -247
- package/dist/src/yaml/steps/xcode-app-product.test.d.ts +0 -2
- package/dist/src/yaml/steps/xcode-app-product.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/xcode-app-product.test.js +0 -202
- package/dist/src/yaml/steps/xcode-derived-data.test.d.ts +0 -30
- package/dist/src/yaml/steps/xcode-derived-data.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/xcode-derived-data.test.js +0 -253
- package/dist/src/yaml/steps/xcode-destination.d.ts +0 -47
- package/dist/src/yaml/steps/xcode-destination.d.ts.map +0 -1
- package/dist/src/yaml/steps/xcode-destination.js +0 -202
- package/dist/src/yaml/steps/xcode-destination.test.d.ts +0 -9
- package/dist/src/yaml/steps/xcode-destination.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/xcode-destination.test.js +0 -227
- package/dist/src/yaml/steps/xcode-new.test.d.ts +0 -5
- package/dist/src/yaml/steps/xcode-new.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/xcode-new.test.js +0 -211
- package/dist/src/yaml/steps/xcode-resolve-retry.test.d.ts +0 -9
- package/dist/src/yaml/steps/xcode-resolve-retry.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/xcode-resolve-retry.test.js +0 -146
- package/dist/src/yaml/steps/xcode-simulator-archs.d.ts +0 -53
- package/dist/src/yaml/steps/xcode-simulator-archs.d.ts.map +0 -1
- package/dist/src/yaml/steps/xcode-simulator-archs.js +0 -98
- package/dist/src/yaml/steps/xcode-simulator-archs.test.d.ts +0 -21
- package/dist/src/yaml/steps/xcode-simulator-archs.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/xcode-simulator-archs.test.js +0 -155
- package/dist/src/yaml/steps/xcode.d.ts +0 -230
- package/dist/src/yaml/steps/xcode.d.ts.map +0 -1
- package/dist/src/yaml/steps/xcode.js +0 -1340
- package/dist/src/yaml/types.d.ts +0 -76
- package/dist/src/yaml/types.d.ts.map +0 -1
- package/dist/src/yaml/types.js +0 -5
- package/dist/src/yaml/validation-types.d.ts +0 -102
- package/dist/src/yaml/validation-types.d.ts.map +0 -1
- package/dist/src/yaml/validation-types.js +0 -8
- package/dist/src/yaml/yaml-updater.d.ts +0 -24
- package/dist/src/yaml/yaml-updater.d.ts.map +0 -1
- package/dist/src/yaml/yaml-updater.js +0 -128
|
@@ -1,230 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Universal secrets management for CI Build
|
|
3
|
-
* Stores sensitive values by exact variable name — no UUIDs, no YAML modification
|
|
4
|
-
* Supports per-workflow scoping with global fallback
|
|
5
|
-
*
|
|
6
|
-
* File format:
|
|
7
|
-
* {
|
|
8
|
-
* "global": { "VAR_NAME": "value" },
|
|
9
|
-
* "workflows": {
|
|
10
|
-
* "staging-java-17": { "VAR_NAME": "value" }
|
|
11
|
-
* }
|
|
12
|
-
* }
|
|
13
|
-
*/
|
|
14
|
-
import * as fs from 'fs';
|
|
15
|
-
import * as path from 'path';
|
|
16
|
-
import { decodeSecretName } from '../commands/secrets-upload.js';
|
|
17
|
-
export class SecretsManager {
|
|
18
|
-
secretsFilePath;
|
|
19
|
-
data;
|
|
20
|
-
fileLoaded = false;
|
|
21
|
-
constructor(secretsFilePath) {
|
|
22
|
-
this.secretsFilePath = secretsFilePath || path.join(process.cwd(), '.cibuild-secrets.json');
|
|
23
|
-
this.data = { global: {}, workflows: {} };
|
|
24
|
-
this.loadSecrets();
|
|
25
|
-
}
|
|
26
|
-
loadSecrets() {
|
|
27
|
-
try {
|
|
28
|
-
if (fs.existsSync(this.secretsFilePath)) {
|
|
29
|
-
const content = fs.readFileSync(this.secretsFilePath, 'utf-8');
|
|
30
|
-
const parsed = JSON.parse(content);
|
|
31
|
-
this.fileLoaded = true;
|
|
32
|
-
// Support both new format and legacy flat format
|
|
33
|
-
if (parsed.global !== undefined || parsed.workflows !== undefined) {
|
|
34
|
-
this.data = {
|
|
35
|
-
global: parsed.global || {},
|
|
36
|
-
workflows: parsed.workflows || {},
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
// Legacy flat format: treat all keys as global
|
|
41
|
-
this.data.global = {};
|
|
42
|
-
for (const [key, value] of Object.entries(parsed)) {
|
|
43
|
-
if (typeof value === 'string') {
|
|
44
|
-
this.data.global[key] = value;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
// No file — try loading from structured env vars (GitHub environment secrets)
|
|
51
|
-
const envData = this.getStructuredEnvSecrets();
|
|
52
|
-
if (Object.keys(envData.global).length > 0 ||
|
|
53
|
-
Object.keys(envData.workflows).length > 0) {
|
|
54
|
-
this.data = envData;
|
|
55
|
-
this.fileLoaded = true;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
catch (error) {
|
|
60
|
-
console.warn(`Warning: Could not load secrets file: ${error instanceof Error ? error.message : String(error)}`);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Reads structured env vars (CIBUILD_S__* and CIBUILD_SW__*) and decodes them
|
|
65
|
-
* back into a SecretsFile structure. Used when running in CI where secrets
|
|
66
|
-
* were uploaded via `ci secrets upload`.
|
|
67
|
-
*/
|
|
68
|
-
getStructuredEnvSecrets() {
|
|
69
|
-
const result = { global: {}, workflows: {} };
|
|
70
|
-
for (const [key, value] of Object.entries(process.env)) {
|
|
71
|
-
if (value === undefined)
|
|
72
|
-
continue;
|
|
73
|
-
const decoded = decodeSecretName(key);
|
|
74
|
-
if (!decoded)
|
|
75
|
-
continue;
|
|
76
|
-
if (decoded.workflow) {
|
|
77
|
-
if (!result.workflows[decoded.workflow]) {
|
|
78
|
-
result.workflows[decoded.workflow] = {};
|
|
79
|
-
}
|
|
80
|
-
result.workflows[decoded.workflow][decoded.varName] = value;
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
result.global[decoded.varName] = value;
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
return result;
|
|
87
|
-
}
|
|
88
|
-
saveSecrets() {
|
|
89
|
-
const dir = path.dirname(this.secretsFilePath);
|
|
90
|
-
if (!fs.existsSync(dir)) {
|
|
91
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
92
|
-
}
|
|
93
|
-
fs.writeFileSync(this.secretsFilePath, JSON.stringify(this.data, null, 2), {
|
|
94
|
-
mode: 0o600,
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Store a secret by variable name, optionally scoped to a workflow.
|
|
99
|
-
* @returns The variable name (used as the key)
|
|
100
|
-
*/
|
|
101
|
-
storeSecret(name, value, workflow) {
|
|
102
|
-
if (workflow) {
|
|
103
|
-
if (!this.data.workflows[workflow]) {
|
|
104
|
-
this.data.workflows[workflow] = {};
|
|
105
|
-
}
|
|
106
|
-
this.data.workflows[workflow][name] = value;
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
this.data.global[name] = value;
|
|
110
|
-
}
|
|
111
|
-
this.saveSecrets();
|
|
112
|
-
return name;
|
|
113
|
-
}
|
|
114
|
-
static ENV_PREFIX = 'CIBUILD_';
|
|
115
|
-
/**
|
|
116
|
-
* Reads all CIBUILD_-prefixed env vars, stripping the prefix from the keys.
|
|
117
|
-
* e.g. CIBUILD_SSH_RSA_PRIVATE_KEY → SSH_RSA_PRIVATE_KEY
|
|
118
|
-
*/
|
|
119
|
-
getEnvSecrets() {
|
|
120
|
-
const secrets = {};
|
|
121
|
-
for (const [key, value] of Object.entries(process.env)) {
|
|
122
|
-
if (key.startsWith(SecretsManager.ENV_PREFIX) && value !== undefined) {
|
|
123
|
-
secrets[key.slice(SecretsManager.ENV_PREFIX.length)] = value;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
return secrets;
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Get a secret value by variable name.
|
|
130
|
-
* Workflow-specific value takes precedence over global.
|
|
131
|
-
* Falls back to CIBUILD_-prefixed env vars when no secrets file is present.
|
|
132
|
-
*
|
|
133
|
-
* The stored data is consulted before that fallback, and not only when a
|
|
134
|
-
* file was loaded. `storeSecret` writes the file but cannot make it one this
|
|
135
|
-
* instance *loaded*, so a value collected by `ci init` on a repository that
|
|
136
|
-
* had no store — which is the only kind of run that collects anything — read
|
|
137
|
-
* back as absent from the instance that had just stored it. `ci init`'s own
|
|
138
|
-
* `getSecret('KEYSTORE_PROPERTIES', wf)`, which is how a workflow's keystore
|
|
139
|
-
* target is taken from `storeFile=`, returned undefined on every fresh
|
|
140
|
-
* repository because of it.
|
|
141
|
-
*/
|
|
142
|
-
getSecret(name, workflow) {
|
|
143
|
-
if (workflow && this.data.workflows[workflow]?.[name] !== undefined) {
|
|
144
|
-
return this.data.workflows[workflow][name];
|
|
145
|
-
}
|
|
146
|
-
if (this.data.global[name] !== undefined) {
|
|
147
|
-
return this.data.global[name];
|
|
148
|
-
}
|
|
149
|
-
if (!this.fileLoaded) {
|
|
150
|
-
return process.env[SecretsManager.ENV_PREFIX + name];
|
|
151
|
-
}
|
|
152
|
-
return undefined;
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* Get all secrets merged: global + workflow-specific (workflow overrides global).
|
|
156
|
-
* Falls back to CIBUILD_-prefixed env vars when no secrets file is present —
|
|
157
|
-
* for the keys the store does not hold. See `getSecret`.
|
|
158
|
-
*/
|
|
159
|
-
getAll(workflow) {
|
|
160
|
-
const merged = this.fileLoaded ? {} : this.getEnvSecrets();
|
|
161
|
-
Object.assign(merged, this.data.global);
|
|
162
|
-
if (workflow && this.data.workflows[workflow]) {
|
|
163
|
-
Object.assign(merged, this.data.workflows[workflow]);
|
|
164
|
-
}
|
|
165
|
-
return merged;
|
|
166
|
-
}
|
|
167
|
-
/**
|
|
168
|
-
* Returns the variable name if a secret exists for it, undefined otherwise.
|
|
169
|
-
* Checks workflow scope first, then global, then the CIBUILD_-prefixed env
|
|
170
|
-
* vars when no secrets file is present. See `getSecret`.
|
|
171
|
-
*/
|
|
172
|
-
getSecretIdByName(name, workflow) {
|
|
173
|
-
if (workflow && this.data.workflows[workflow]?.[name] !== undefined) {
|
|
174
|
-
return name;
|
|
175
|
-
}
|
|
176
|
-
if (this.data.global[name] !== undefined) {
|
|
177
|
-
return name;
|
|
178
|
-
}
|
|
179
|
-
if (!this.fileLoaded) {
|
|
180
|
-
return process.env[SecretsManager.ENV_PREFIX + name] !== undefined ? name : undefined;
|
|
181
|
-
}
|
|
182
|
-
return undefined;
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Returns the name itself (API compatibility).
|
|
186
|
-
*/
|
|
187
|
-
getSecretName(id) {
|
|
188
|
-
return this.getSecretIdByName(id) ? id : undefined;
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Check if a secret exists by variable name (global or any workflow).
|
|
192
|
-
*/
|
|
193
|
-
hasSecret(name, workflow) {
|
|
194
|
-
return this.getSecretIdByName(name, workflow) !== undefined;
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* Get all stored variable names (global + all workflows, deduplicated).
|
|
198
|
-
*/
|
|
199
|
-
getAllSecretNames() {
|
|
200
|
-
const names = new Set(Object.keys(this.data.global));
|
|
201
|
-
for (const vars of Object.values(this.data.workflows)) {
|
|
202
|
-
for (const key of Object.keys(vars))
|
|
203
|
-
names.add(key);
|
|
204
|
-
}
|
|
205
|
-
return Array.from(names);
|
|
206
|
-
}
|
|
207
|
-
/**
|
|
208
|
-
* Delete a secret by variable name (from workflow scope or global).
|
|
209
|
-
*/
|
|
210
|
-
deleteSecret(name, workflow) {
|
|
211
|
-
let deleted = false;
|
|
212
|
-
if (workflow && this.data.workflows[workflow]) {
|
|
213
|
-
if (name in this.data.workflows[workflow]) {
|
|
214
|
-
delete this.data.workflows[workflow][name];
|
|
215
|
-
deleted = true;
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
else if (name in this.data.global) {
|
|
219
|
-
delete this.data.global[name];
|
|
220
|
-
deleted = true;
|
|
221
|
-
}
|
|
222
|
-
if (deleted)
|
|
223
|
-
this.saveSecrets();
|
|
224
|
-
return deleted;
|
|
225
|
-
}
|
|
226
|
-
getSecretsFilePath() {
|
|
227
|
-
return this.secretsFilePath;
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
//# sourceMappingURL=secrets-manager.js.map
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Which names a shell snippet binds for itself.
|
|
3
|
-
*
|
|
4
|
-
* Two different parts of this codebase scan a step's inputs for `$UPPERCASE`
|
|
5
|
-
* and act on every hit — the pre-execution validator, which demands each one
|
|
6
|
-
* be supplied, and the env resolver, which *substitutes* each one. For a
|
|
7
|
-
* `script` step the inputs are the shell body, so a variable the script
|
|
8
|
-
* computes is indistinguishable from one it needs handed to it. Both were
|
|
9
|
-
* wrong about the same thing, so they share one answer.
|
|
10
|
-
*
|
|
11
|
-
* A generated multiplatform pipeline made it plain. Its prepare step opens
|
|
12
|
-
*
|
|
13
|
-
* INTEGRATION="$KMM_IOS_INTEGRATION"
|
|
14
|
-
* IOS_DIR=$(dirname "$IOS_PROJECT_PATH")
|
|
15
|
-
* for WORKSPACE in "$IOS_DIR"/*.xcworkspace; do …
|
|
16
|
-
*
|
|
17
|
-
* and no build could start: the validator refused for three values nothing was
|
|
18
|
-
* meant to provide, and the resolver would have gone further and *rewritten*
|
|
19
|
-
* the body, replacing `"$IOS_DIR"` with a pipeline value instead of the one
|
|
20
|
-
* `dirname` had just computed. Substituting a shell local is not a missing
|
|
21
|
-
* value at all; it is a corrupted script.
|
|
22
|
-
*
|
|
23
|
-
* **Only the assignment target is collected, never the right-hand side.** That
|
|
24
|
-
* is what keeps this from being a hole: `INTEGRATION="$KMM_IOS_INTEGRATION"`
|
|
25
|
-
* still needs `KMM_IOS_INTEGRATION`, so a script cannot excuse itself from a
|
|
26
|
-
* value it reads by mentioning it.
|
|
27
|
-
*
|
|
28
|
-
* Assignment order is deliberately not modelled. A snippet that reads a
|
|
29
|
-
* variable before setting it is a bug in the snippet, and guessing about it
|
|
30
|
-
* here would trade one wrong answer for another; "does the script set this
|
|
31
|
-
* itself?" is the question worth asking.
|
|
32
|
-
*/
|
|
33
|
-
/** The names one snippet of shell assigns to itself. */
|
|
34
|
-
export declare function shellAssignedNamesIn(text: string): Set<string>;
|
|
35
|
-
/**
|
|
36
|
-
* The same question asked of a whole inputs object, walked recursively — what
|
|
37
|
-
* the validator needs, because it reasons about a step rather than a string.
|
|
38
|
-
*/
|
|
39
|
-
export declare function shellAssignedNames(obj: unknown): Set<string>;
|
|
40
|
-
//# sourceMappingURL=shell-assignments.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shell-assignments.d.ts","sourceRoot":"","sources":["../../../src/yaml/shell-assignments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAaH,wDAAwD;AACxD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAa9D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAa5D"}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Which names a shell snippet binds for itself.
|
|
3
|
-
*
|
|
4
|
-
* Two different parts of this codebase scan a step's inputs for `$UPPERCASE`
|
|
5
|
-
* and act on every hit — the pre-execution validator, which demands each one
|
|
6
|
-
* be supplied, and the env resolver, which *substitutes* each one. For a
|
|
7
|
-
* `script` step the inputs are the shell body, so a variable the script
|
|
8
|
-
* computes is indistinguishable from one it needs handed to it. Both were
|
|
9
|
-
* wrong about the same thing, so they share one answer.
|
|
10
|
-
*
|
|
11
|
-
* A generated multiplatform pipeline made it plain. Its prepare step opens
|
|
12
|
-
*
|
|
13
|
-
* INTEGRATION="$KMM_IOS_INTEGRATION"
|
|
14
|
-
* IOS_DIR=$(dirname "$IOS_PROJECT_PATH")
|
|
15
|
-
* for WORKSPACE in "$IOS_DIR"/*.xcworkspace; do …
|
|
16
|
-
*
|
|
17
|
-
* and no build could start: the validator refused for three values nothing was
|
|
18
|
-
* meant to provide, and the resolver would have gone further and *rewritten*
|
|
19
|
-
* the body, replacing `"$IOS_DIR"` with a pipeline value instead of the one
|
|
20
|
-
* `dirname` had just computed. Substituting a shell local is not a missing
|
|
21
|
-
* value at all; it is a corrupted script.
|
|
22
|
-
*
|
|
23
|
-
* **Only the assignment target is collected, never the right-hand side.** That
|
|
24
|
-
* is what keeps this from being a hole: `INTEGRATION="$KMM_IOS_INTEGRATION"`
|
|
25
|
-
* still needs `KMM_IOS_INTEGRATION`, so a script cannot excuse itself from a
|
|
26
|
-
* value it reads by mentioning it.
|
|
27
|
-
*
|
|
28
|
-
* Assignment order is deliberately not modelled. A snippet that reads a
|
|
29
|
-
* variable before setting it is a bug in the snippet, and guessing about it
|
|
30
|
-
* here would trade one wrong answer for another; "does the script set this
|
|
31
|
-
* itself?" is the question worth asking.
|
|
32
|
-
*/
|
|
33
|
-
/** `NAME=…`, `export NAME=…`, `local/readonly/declare/typeset NAME=…`, `NAME+=…` */
|
|
34
|
-
const ASSIGNMENT = /(?:^|[\n;&|(]|\|\||&&)[ \t]*(?:(?:export|readonly|local|declare|typeset)[ \t]+)?([A-Z_][A-Z_0-9]*)\+?=/g;
|
|
35
|
-
/** `for NAME in …`, `select NAME in …` */
|
|
36
|
-
const LOOP = /(?:^|[\n;&|(])[ \t]*(?:for|select)[ \t]+([A-Z_][A-Z_0-9]*)[ \t]+in\b/g;
|
|
37
|
-
/** `read NAME`, `read -r NAME OTHER`, `while read -r NAME` */
|
|
38
|
-
const READ = /(?:^|[\n;&|(]|\|\||&&)[ \t]*(?:while[ \t]+)?read[ \t]+((?:-\S+[ \t]+)*)([A-Z_][A-Z_0-9]*(?:[ \t]+[A-Z_][A-Z_0-9]*)*)/g;
|
|
39
|
-
/** The names one snippet of shell assigns to itself. */
|
|
40
|
-
export function shellAssignedNamesIn(text) {
|
|
41
|
-
const names = new Set();
|
|
42
|
-
for (const re of [ASSIGNMENT, LOOP]) {
|
|
43
|
-
re.lastIndex = 0;
|
|
44
|
-
let m;
|
|
45
|
-
while ((m = re.exec(text)) !== null)
|
|
46
|
-
names.add(m[1]);
|
|
47
|
-
}
|
|
48
|
-
READ.lastIndex = 0;
|
|
49
|
-
let m;
|
|
50
|
-
while ((m = READ.exec(text)) !== null) {
|
|
51
|
-
for (const n of m[2].trim().split(/[ \t]+/))
|
|
52
|
-
names.add(n);
|
|
53
|
-
}
|
|
54
|
-
return names;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* The same question asked of a whole inputs object, walked recursively — what
|
|
58
|
-
* the validator needs, because it reasons about a step rather than a string.
|
|
59
|
-
*/
|
|
60
|
-
export function shellAssignedNames(obj) {
|
|
61
|
-
const names = new Set();
|
|
62
|
-
const walk = (value) => {
|
|
63
|
-
if (typeof value === 'string') {
|
|
64
|
-
for (const n of shellAssignedNamesIn(value))
|
|
65
|
-
names.add(n);
|
|
66
|
-
}
|
|
67
|
-
else if (Array.isArray(value)) {
|
|
68
|
-
value.forEach(walk);
|
|
69
|
-
}
|
|
70
|
-
else if (value && typeof value === 'object') {
|
|
71
|
-
Object.values(value).forEach(walk);
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
walk(obj);
|
|
75
|
-
return names;
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=shell-assignments.js.map
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Unit tests for what happens when a pre-execution check cannot run.
|
|
3
|
-
*
|
|
4
|
-
* A check that *ran* and found nothing, and a check that *threw* before it
|
|
5
|
-
* tested anything, are different events. Until 2026-09-01 they were reported
|
|
6
|
-
* identically: the throw was wrapped in a `Check failed:` message and carried
|
|
7
|
-
* the requirement's own declared severity. For the Java JDK requirement that
|
|
8
|
-
* severity is `info` — chosen because the check looks in several places and a
|
|
9
|
-
* miss is not fatal — so a check that never looked anywhere at all was
|
|
10
|
-
* reported as information and read as noise.
|
|
11
|
-
*
|
|
12
|
-
* It was not noise. The released macOS binary is built with `pkg`, which
|
|
13
|
-
* cannot evaluate a dynamic `import()` of a module it did not bundle; the JDK
|
|
14
|
-
* check opened with two of them and threw `Invalid host defined options` on
|
|
15
|
-
* every macOS build. It went unseen for as long as the fleet has existed.
|
|
16
|
-
*
|
|
17
|
-
* Two rules are pinned here:
|
|
18
|
-
* 1. a throw is reported at `warning`, whatever the requirement declares;
|
|
19
|
-
* 2. no check may reach for a Node builtin through a dynamic import, because
|
|
20
|
-
* nothing else in the test suite can see that failure — under plain
|
|
21
|
-
* `node`, and in the npm bundle, the code works.
|
|
22
|
-
*/
|
|
23
|
-
export {};
|
|
24
|
-
//# sourceMappingURL=step-validator-check-failure.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"step-validator-check-failure.test.d.ts","sourceRoot":"","sources":["../../../src/yaml/step-validator-check-failure.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG"}
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Unit tests for what happens when a pre-execution check cannot run.
|
|
3
|
-
*
|
|
4
|
-
* A check that *ran* and found nothing, and a check that *threw* before it
|
|
5
|
-
* tested anything, are different events. Until 2026-09-01 they were reported
|
|
6
|
-
* identically: the throw was wrapped in a `Check failed:` message and carried
|
|
7
|
-
* the requirement's own declared severity. For the Java JDK requirement that
|
|
8
|
-
* severity is `info` — chosen because the check looks in several places and a
|
|
9
|
-
* miss is not fatal — so a check that never looked anywhere at all was
|
|
10
|
-
* reported as information and read as noise.
|
|
11
|
-
*
|
|
12
|
-
* It was not noise. The released macOS binary is built with `pkg`, which
|
|
13
|
-
* cannot evaluate a dynamic `import()` of a module it did not bundle; the JDK
|
|
14
|
-
* check opened with two of them and threw `Invalid host defined options` on
|
|
15
|
-
* every macOS build. It went unseen for as long as the fleet has existed.
|
|
16
|
-
*
|
|
17
|
-
* Two rules are pinned here:
|
|
18
|
-
* 1. a throw is reported at `warning`, whatever the requirement declares;
|
|
19
|
-
* 2. no check may reach for a Node builtin through a dynamic import, because
|
|
20
|
-
* nothing else in the test suite can see that failure — under plain
|
|
21
|
-
* `node`, and in the npm bundle, the code works.
|
|
22
|
-
*/
|
|
23
|
-
import { describe, test, expect } from '@jest/globals';
|
|
24
|
-
import { readFileSync, readdirSync, statSync } from 'node:fs';
|
|
25
|
-
import { join } from 'node:path';
|
|
26
|
-
import { registerStep } from './steps/registry.js';
|
|
27
|
-
import { BaseStepExecutor } from './steps/base.js';
|
|
28
|
-
import { StepValidator } from './step-validator.js';
|
|
29
|
-
import { loadConfig } from '../config.js';
|
|
30
|
-
const config = loadConfig();
|
|
31
|
-
/** A step whose single requirement behaves however the test needs it to. */
|
|
32
|
-
function stepWhoseCheck(severity, check) {
|
|
33
|
-
const name = `probe-${Math.random().toString(36).slice(2)}`;
|
|
34
|
-
class ProbeStep extends BaseStepExecutor {
|
|
35
|
-
async execute() {
|
|
36
|
-
return this.createScriptStep('echo probe', name);
|
|
37
|
-
}
|
|
38
|
-
getValidationRequirements() {
|
|
39
|
-
return [
|
|
40
|
-
{
|
|
41
|
-
category: 'command',
|
|
42
|
-
name: 'probe-tool',
|
|
43
|
-
description: 'A tool the probe step needs',
|
|
44
|
-
timing: 'pre-execution',
|
|
45
|
-
severity,
|
|
46
|
-
check,
|
|
47
|
-
},
|
|
48
|
-
];
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
registerStep(name, new ProbeStep());
|
|
52
|
-
return name;
|
|
53
|
-
}
|
|
54
|
-
async function validate(stepName) {
|
|
55
|
-
const validator = new StepValidator({
|
|
56
|
-
format_version: '1',
|
|
57
|
-
meta: { invarn: { stack: 'macos-xcode-26.4' } },
|
|
58
|
-
workflows: { primary: { steps: [{ [`${stepName}@1.0.0`]: { inputs: {} } }] } },
|
|
59
|
-
}, 'primary', config);
|
|
60
|
-
return validator.validateWorkflow();
|
|
61
|
-
}
|
|
62
|
-
describe('a check that could not run', () => {
|
|
63
|
-
test('is reported as a warning even though the requirement declares info', async () => {
|
|
64
|
-
const name = stepWhoseCheck('info', async () => {
|
|
65
|
-
throw new Error('Invalid host defined options');
|
|
66
|
-
});
|
|
67
|
-
const result = await validate(name);
|
|
68
|
-
expect(result.counts).toMatchObject({ errors: 0, warnings: 1, info: 0 });
|
|
69
|
-
expect(result.issues[0].requirement.severity).toBe('warning');
|
|
70
|
-
expect(result.issues[0].result.message).toBe('Check failed: Invalid host defined options');
|
|
71
|
-
});
|
|
72
|
-
test('does not turn a hard requirement into a soft one', async () => {
|
|
73
|
-
const name = stepWhoseCheck('error', async () => {
|
|
74
|
-
throw new Error('boom');
|
|
75
|
-
});
|
|
76
|
-
const result = await validate(name);
|
|
77
|
-
// An `error` requirement whose check throws must not be downgraded — that
|
|
78
|
-
// would let a pipeline proceed past a requirement nothing verified.
|
|
79
|
-
expect(result.counts).toMatchObject({ errors: 1, warnings: 0, info: 0 });
|
|
80
|
-
expect(result.valid).toBe(false);
|
|
81
|
-
});
|
|
82
|
-
test('leaves a check that ran and failed at its declared severity', async () => {
|
|
83
|
-
const name = stepWhoseCheck('info', async () => ({
|
|
84
|
-
passed: false,
|
|
85
|
-
message: 'Java 17 not found',
|
|
86
|
-
}));
|
|
87
|
-
const result = await validate(name);
|
|
88
|
-
// The whole point of the distinction: this check *worked*. `info` is the
|
|
89
|
-
// right severity for it and must survive.
|
|
90
|
-
expect(result.counts).toMatchObject({ errors: 0, warnings: 0, info: 1 });
|
|
91
|
-
expect(result.issues[0].result.message).toBe('Java 17 not found');
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
/**
|
|
95
|
-
* The structural half.
|
|
96
|
-
*
|
|
97
|
-
* esbuild leaves a dynamic `import()` of a Node builtin in the bundle — the
|
|
98
|
-
* builtins are external — and `pkg` then cannot evaluate it. Relative
|
|
99
|
-
* specifiers are inlined by the bundler and are unaffected, which is why
|
|
100
|
-
* `envman` and `fidelity-trim` work while the JDK check did not.
|
|
101
|
-
*
|
|
102
|
-
* There is no runtime test that can catch this: it reproduces only in a
|
|
103
|
-
* `pkg`-built binary, and `./test.sh` runs under plain `node`. So the rule is
|
|
104
|
-
* enforced on the source.
|
|
105
|
-
*/
|
|
106
|
-
describe('no source file reaches for a Node builtin through a dynamic import', () => {
|
|
107
|
-
const BUILTIN = /await import\(\s*['"](?:node:)?(fs|path|os|child_process|readline|crypto|util|url|http|https|net|stream|zlib|tty|events)(?:\/[\w-]+)?['"]\s*\)/;
|
|
108
|
-
function sourceFiles(dir) {
|
|
109
|
-
return readdirSync(dir).flatMap((entry) => {
|
|
110
|
-
const full = join(dir, entry);
|
|
111
|
-
if (statSync(full).isDirectory())
|
|
112
|
-
return sourceFiles(full);
|
|
113
|
-
if (!full.endsWith('.ts') || full.endsWith('.test.ts'))
|
|
114
|
-
return [];
|
|
115
|
-
return [full];
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
test('src is clean', () => {
|
|
119
|
-
// Jest runs from the package root; `src` is the whole surface that gets
|
|
120
|
-
// bundled into the released binary.
|
|
121
|
-
const offenders = sourceFiles(join(process.cwd(), 'src'))
|
|
122
|
-
.flatMap((file) => readFileSync(file, 'utf8')
|
|
123
|
-
.split('\n')
|
|
124
|
-
.map((line, i) => ({ file, line: line.trim(), n: i + 1 }))
|
|
125
|
-
.filter(({ line }) => BUILTIN.test(line)))
|
|
126
|
-
.map(({ file, n, line }) => `${file.replace(/.*\/src\//, 'src/')}:${n} ${line}`);
|
|
127
|
-
expect(offenders).toEqual([]);
|
|
128
|
-
});
|
|
129
|
-
});
|
|
130
|
-
//# sourceMappingURL=step-validator-check-failure.test.js.map
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A step does not owe itself the variables its own shell sets.
|
|
3
|
-
*
|
|
4
|
-
* Pre-execution validation auto-discovers every `$UPPERCASE` in a step's
|
|
5
|
-
* inputs and treats it as a value the pipeline must supply. For a `script`
|
|
6
|
-
* step the inputs *are* the shell body, so a variable the script computes was
|
|
7
|
-
* indistinguishable from one it needed handed to it — and because the check
|
|
8
|
-
* cannot prompt in a sandbox, the pipeline was refused before step 1 for
|
|
9
|
-
* values nothing was ever meant to provide.
|
|
10
|
-
*
|
|
11
|
-
* A generated multiplatform pipeline hit exactly that. Its prepare step opens
|
|
12
|
-
* with `INTEGRATION="$KMM_IOS_INTEGRATION"`, `IOS_DIR=$(dirname
|
|
13
|
-
* "$IOS_PROJECT_PATH")` and `for WORKSPACE in "$IOS_DIR"/*.xcworkspace`, and
|
|
14
|
-
* the run died on "3 required value(s) missing — INTEGRATION, IOS_DIR,
|
|
15
|
-
* WORKSPACE" while the two variables it genuinely reads were both declared and
|
|
16
|
-
* present. The iOS templates do the same thing with `IOS_DIR` alone.
|
|
17
|
-
*
|
|
18
|
-
* The load-bearing half of these tests is the second half: only the assignment
|
|
19
|
-
* *target* is excused, never the right-hand side, so a script cannot exempt
|
|
20
|
-
* itself from a value it reads by mentioning it.
|
|
21
|
-
*/
|
|
22
|
-
import '../yaml/steps/index.js';
|
|
23
|
-
//# sourceMappingURL=step-validator-self-assigned.test.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"step-validator-self-assigned.test.d.ts","sourceRoot":"","sources":["../../../src/yaml/step-validator-self-assigned.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,wBAAwB,CAAC"}
|