@invarn/cibuild 2.9.6 → 2.9.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/a-missing-pinned-jdk-yields-for-every-gradle-run.test.d.ts +0 -2
- package/dist/src/yaml/steps/a-missing-pinned-jdk-yields-for-every-gradle-run.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/a-missing-pinned-jdk-yields-for-every-gradle-run.test.js +0 -96
- 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 -1100
- 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/capture-injection.d.ts +0 -30
- package/dist/src/yaml/steps/capture-injection.d.ts.map +0 -1
- package/dist/src/yaml/steps/capture-injection.js +0 -88
- package/dist/src/yaml/steps/capture-injection.test.d.ts +0 -2
- package/dist/src/yaml/steps/capture-injection.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/capture-injection.test.js +0 -163
- 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 -91
- package/dist/src/yaml/steps/gradle-memory.d.ts.map +0 -1
- package/dist/src/yaml/steps/gradle-memory.js +0 -495
- 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 -344
- 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/kotlin-metadata-compiles-on-a-daemon.test.d.ts +0 -2
- package/dist/src/yaml/steps/kotlin-metadata-compiles-on-a-daemon.test.d.ts.map +0 -1
- package/dist/src/yaml/steps/kotlin-metadata-compiles-on-a-daemon.test.js +0 -139
- 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 -279
- 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 -1350
- 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
package/dist/src/runner.js
DELETED
|
@@ -1,240 +0,0 @@
|
|
|
1
|
-
import { spawn } from "node:child_process";
|
|
2
|
-
import { dirname, join, resolve } from "node:path";
|
|
3
|
-
import { unlinkSync, existsSync, writeFileSync, chmodSync, mkdtempSync, rmSync, mkdirSync } from "node:fs";
|
|
4
|
-
import { tmpdir } from "node:os";
|
|
5
|
-
import { envmanShellFunction } from "./envman/shim.js";
|
|
6
|
-
import { formatStepMarker, shouldEmitStepMarker } from "./step-marker.js";
|
|
7
|
-
// Use absolute path for envstore so it works regardless of cd in scripts
|
|
8
|
-
const ENVMAN_ENVSTORE_PATH = resolve(process.cwd(), ".ci", ".envstore.json");
|
|
9
|
-
export class StepExecutionError extends Error {
|
|
10
|
-
stepId;
|
|
11
|
-
stepName;
|
|
12
|
-
exitCode;
|
|
13
|
-
constructor(stepId, stepName, exitCode) {
|
|
14
|
-
super(`Step "${stepName}" failed with exit code ${exitCode}`);
|
|
15
|
-
this.stepId = stepId;
|
|
16
|
-
this.stepName = stepName;
|
|
17
|
-
this.exitCode = exitCode;
|
|
18
|
-
this.name = "StepExecutionError";
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
export class PipelineRunner {
|
|
22
|
-
config;
|
|
23
|
-
constructor(config) {
|
|
24
|
-
this.config = config;
|
|
25
|
-
}
|
|
26
|
-
async runStep(step, stepNumber) {
|
|
27
|
-
// Emit the INVARN_STEP marker before any other output so the
|
|
28
|
-
// dashboard's step-progress parser sees a step boundary even when
|
|
29
|
-
// the step's own logs are silent. Pairs with the parser at
|
|
30
|
-
// `lib/shared/step-progress.ts` in the Invarn repo. `stepNumber`
|
|
31
|
-
// is optional to keep `runStep` backward-compatible for direct
|
|
32
|
-
// callers (lib consumers) that don't run inside a pipeline loop.
|
|
33
|
-
//
|
|
34
|
-
// Gated on INVARN_RUNNER=1: cibuild is a public npm package
|
|
35
|
-
// (@invarn/cibuild) and must not leak Invarn's log-parsing protocol
|
|
36
|
-
// into external users' stdout. The Invarn runner opts in by exporting
|
|
37
|
-
// the var into the sandbox; see cibuild-runner/src/runner.ts.
|
|
38
|
-
if (stepNumber != null && shouldEmitStepMarker()) {
|
|
39
|
-
console.log(formatStepMarker(stepNumber, step.name));
|
|
40
|
-
}
|
|
41
|
-
console.log(`\n[${step.id}] Running: ${step.name}`);
|
|
42
|
-
console.log("─".repeat(60));
|
|
43
|
-
const startTime = Date.now();
|
|
44
|
-
return new Promise((resolve, reject) => {
|
|
45
|
-
let cmd;
|
|
46
|
-
let args;
|
|
47
|
-
let tmpScriptPath;
|
|
48
|
-
switch (step.kind) {
|
|
49
|
-
case "script":
|
|
50
|
-
// Write script to a temporary file to avoid issues with nested command substitutions
|
|
51
|
-
// when passing complex scripts via -c
|
|
52
|
-
cmd = step.shell ?? this.config.interpreters.bash;
|
|
53
|
-
try {
|
|
54
|
-
const tmpDir = mkdtempSync(join(tmpdir(), 'cibuild-script-'));
|
|
55
|
-
tmpScriptPath = join(tmpDir, `step-${step.id || 'script'}.sh`);
|
|
56
|
-
// Prepend envman shell function that writes directly to the envstore JSON file.
|
|
57
|
-
// This avoids calling the ci binary (pkg binaries have issues with subcommands).
|
|
58
|
-
writeFileSync(tmpScriptPath, envmanShellFunction() + step.script, 'utf-8');
|
|
59
|
-
chmodSync(tmpScriptPath, 0o755);
|
|
60
|
-
args = ["-l", tmpScriptPath];
|
|
61
|
-
}
|
|
62
|
-
catch (err) {
|
|
63
|
-
reject(new Error(`Failed to create temporary script file: ${err}`));
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
break;
|
|
67
|
-
case "python":
|
|
68
|
-
cmd = this.config.interpreters.python;
|
|
69
|
-
args = ["-c", step.script];
|
|
70
|
-
break;
|
|
71
|
-
case "ruby":
|
|
72
|
-
cmd = this.config.interpreters.ruby;
|
|
73
|
-
args = ["-e", step.script];
|
|
74
|
-
break;
|
|
75
|
-
case "node":
|
|
76
|
-
// Write the script to a file instead of passing it via -e: the
|
|
77
|
-
// released ci binary is pkg-built, and pkg's bootstrap intercepts
|
|
78
|
-
// child spawns of `node`, re-executing the pkg binary itself —
|
|
79
|
-
// which resolves `-e` as an entrypoint path and dies with
|
|
80
|
-
// `Cannot find module '<cwd>/-e'`. A real file path executes
|
|
81
|
-
// under both a system node and the pkg bootstrap.
|
|
82
|
-
cmd = this.config.interpreters.node;
|
|
83
|
-
try {
|
|
84
|
-
const tmpDir = mkdtempSync(join(tmpdir(), 'cibuild-script-'));
|
|
85
|
-
tmpScriptPath = join(tmpDir, `step-${step.id || 'script'}.cjs`);
|
|
86
|
-
writeFileSync(tmpScriptPath, step.script, 'utf-8');
|
|
87
|
-
}
|
|
88
|
-
catch (err) {
|
|
89
|
-
reject(new Error(`Failed to create temporary script file: ${err}`));
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
args = [tmpScriptPath];
|
|
93
|
-
break;
|
|
94
|
-
default:
|
|
95
|
-
reject(new Error(`Unknown step kind: ${step.kind}`));
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
// Set envstore path so envman works regardless of cd in scripts
|
|
99
|
-
const env = {
|
|
100
|
-
...process.env,
|
|
101
|
-
ENVMAN_ENVSTORE_PATH,
|
|
102
|
-
};
|
|
103
|
-
const child = spawn(cmd, args, {
|
|
104
|
-
stdio: "inherit",
|
|
105
|
-
shell: false,
|
|
106
|
-
env,
|
|
107
|
-
});
|
|
108
|
-
const cleanupTmp = () => {
|
|
109
|
-
if (tmpScriptPath) {
|
|
110
|
-
try {
|
|
111
|
-
rmSync(dirname(tmpScriptPath), { recursive: true, force: true });
|
|
112
|
-
}
|
|
113
|
-
catch { }
|
|
114
|
-
}
|
|
115
|
-
};
|
|
116
|
-
child.on("error", (err) => {
|
|
117
|
-
cleanupTmp();
|
|
118
|
-
reject(new Error(`Failed to spawn ${cmd}: ${err.message}`));
|
|
119
|
-
});
|
|
120
|
-
child.on("exit", (code) => {
|
|
121
|
-
const duration = Date.now() - startTime;
|
|
122
|
-
const durationStr = this.formatDuration(duration);
|
|
123
|
-
cleanupTmp();
|
|
124
|
-
if (code === 0) {
|
|
125
|
-
console.log(`[${step.id}] ✓ Success (${durationStr})\n`);
|
|
126
|
-
resolve();
|
|
127
|
-
}
|
|
128
|
-
else {
|
|
129
|
-
reject(new StepExecutionError(step.id, step.name, code ?? 1));
|
|
130
|
-
}
|
|
131
|
-
});
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
formatDuration(ms) {
|
|
135
|
-
if (ms < 1000) {
|
|
136
|
-
return `${ms}ms`;
|
|
137
|
-
}
|
|
138
|
-
else if (ms < 60000) {
|
|
139
|
-
return `${(ms / 1000).toFixed(1)}s`;
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
const minutes = Math.floor(ms / 60000);
|
|
143
|
-
const seconds = Math.floor((ms % 60000) / 1000);
|
|
144
|
-
return `${minutes}m ${seconds}s`;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
validatePipeline(pipeline) {
|
|
148
|
-
const stepIds = new Set(pipeline.steps.map((s) => s.id));
|
|
149
|
-
const duplicates = pipeline.steps
|
|
150
|
-
.map((s) => s.id)
|
|
151
|
-
.filter((id, index, arr) => arr.indexOf(id) !== index);
|
|
152
|
-
if (duplicates.length > 0) {
|
|
153
|
-
throw new Error(`Duplicate step IDs found: ${duplicates.join(", ")}`);
|
|
154
|
-
}
|
|
155
|
-
for (const orderId of pipeline.stepsOrder) {
|
|
156
|
-
if (!stepIds.has(orderId)) {
|
|
157
|
-
throw new Error(`Step ID "${orderId}" in stepsOrder not found in steps`);
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
if (pipeline.stepsOrder.length !== pipeline.steps.length) {
|
|
161
|
-
const missingIds = pipeline.steps
|
|
162
|
-
.filter((s) => !pipeline.stepsOrder.includes(s.id))
|
|
163
|
-
.map((s) => s.id);
|
|
164
|
-
throw new Error(`Some steps are not in stepsOrder: ${missingIds.join(", ")}`);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
displayWarnings(warnings, skippedSteps) {
|
|
168
|
-
console.log("\n" + "═".repeat(60));
|
|
169
|
-
console.log("⚠️ UNSUPPORTED STEPS DETECTED");
|
|
170
|
-
console.log("═".repeat(60));
|
|
171
|
-
warnings.forEach((warning) => {
|
|
172
|
-
console.log(warning);
|
|
173
|
-
});
|
|
174
|
-
console.log("─".repeat(60));
|
|
175
|
-
console.log(`ℹ️ Skipped ${skippedSteps} unsupported step${skippedSteps !== 1 ? 's' : ''}. Build will continue.`);
|
|
176
|
-
console.log("═".repeat(60) + "\n");
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* The commit this build compiled, printed under the banner.
|
|
180
|
-
*
|
|
181
|
-
* Every build carries it, whatever steps it declares. The dashboard's sha is
|
|
182
|
-
* the one that was *dispatched*; this one was read off the disk the compiler
|
|
183
|
-
* is about to read, and it is what a later argument about which code shipped
|
|
184
|
-
* has to be settled against. It used to live only in `git-clone`'s echo,
|
|
185
|
-
* which is optional and no longer in the curated templates.
|
|
186
|
-
*
|
|
187
|
-
* Labels match that echo's on purpose — where both appear they are the same
|
|
188
|
-
* three facts, and they have to agree.
|
|
189
|
-
*/
|
|
190
|
-
displayCheckout(checkout) {
|
|
191
|
-
console.log(`Commit: ${checkout.commit}`);
|
|
192
|
-
if (checkout.author)
|
|
193
|
-
console.log(`Author: ${checkout.author}`);
|
|
194
|
-
if (checkout.subject)
|
|
195
|
-
console.log(`Message: ${checkout.subject}`);
|
|
196
|
-
console.log("");
|
|
197
|
-
}
|
|
198
|
-
async runPipeline(pipeline, warnings, skippedSteps, checkout) {
|
|
199
|
-
// Ensure .ci directory exists (envstore lives there)
|
|
200
|
-
mkdirSync(resolve(process.cwd(), ".ci"), { recursive: true });
|
|
201
|
-
// Clear envstore at the start of each build for a clean slate
|
|
202
|
-
if (existsSync(ENVMAN_ENVSTORE_PATH)) {
|
|
203
|
-
unlinkSync(ENVMAN_ENVSTORE_PATH);
|
|
204
|
-
}
|
|
205
|
-
console.log(`\n╔═════════════════════════════════════════════════════════╗`);
|
|
206
|
-
console.log(`║ Pipeline: ${pipeline.name.padEnd(42)} ║`);
|
|
207
|
-
console.log(`╚═════════════════════════════════════════════════════════╝\n`);
|
|
208
|
-
if (checkout) {
|
|
209
|
-
this.displayCheckout(checkout);
|
|
210
|
-
}
|
|
211
|
-
// Display warnings if provided
|
|
212
|
-
if (warnings && warnings.length > 0) {
|
|
213
|
-
this.displayWarnings(warnings, skippedSteps || 0);
|
|
214
|
-
}
|
|
215
|
-
this.validatePipeline(pipeline);
|
|
216
|
-
const stepsMap = new Map(pipeline.steps.map((s) => [s.id, s]));
|
|
217
|
-
for (let i = 0; i < pipeline.stepsOrder.length; i++) {
|
|
218
|
-
const stepId = pipeline.stepsOrder[i];
|
|
219
|
-
const step = stepsMap.get(stepId);
|
|
220
|
-
if (!step) {
|
|
221
|
-
throw new Error(`Step ${stepId} not found`);
|
|
222
|
-
}
|
|
223
|
-
try {
|
|
224
|
-
await this.runStep(step, i + 1);
|
|
225
|
-
}
|
|
226
|
-
catch (err) {
|
|
227
|
-
if (step.isSkippable && err instanceof StepExecutionError) {
|
|
228
|
-
console.log(`\n⚠️ [${step.id}] Step "${step.name}" failed but is marked skippable — continuing.\n`);
|
|
229
|
-
}
|
|
230
|
-
else {
|
|
231
|
-
throw err;
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
console.log("\n" + "═".repeat(60));
|
|
236
|
-
console.log("✓ Pipeline completed successfully");
|
|
237
|
-
console.log("═".repeat(60) + "\n");
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
//# sourceMappingURL=runner.js.map
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
export type MobileProjectType = "android" | "ios" | "kmm";
|
|
2
|
-
declare function isDirectory(path: string): boolean;
|
|
3
|
-
/**
|
|
4
|
-
* True when a path that is *named* like an Xcode container actually is one.
|
|
5
|
-
*
|
|
6
|
-
* **The** predicate — every question of the form "is this `.xcodeproj` a
|
|
7
|
-
* project" goes through here, and nothing else in cibuild joins a directory
|
|
8
|
-
* name to "there is a project there".
|
|
9
|
-
*
|
|
10
|
-
* A `.xcodeproj` is a directory whose whole content is `project.pbxproj`;
|
|
11
|
-
* without it `xcodebuild` refuses to open the project at all — "missing its
|
|
12
|
-
* project.pbxproj file". A `.xcworkspace` is `contents.xcworkspacedata` in
|
|
13
|
-
* the same way. Anything else ending in those suffixes is a directory with a
|
|
14
|
-
* suggestive name, and offering one is offering something Xcode would reject.
|
|
15
|
-
*
|
|
16
|
-
* `Uwi0/Oakane` is the row that found it. Its `iosApp/` ships two: a tracked
|
|
17
|
-
* `iosApp.xcodeproj` holding nothing but `project.xcworkspace/`, and the real
|
|
18
|
-
* `oakane.xcodeproj` beside it with a 20 217-byte `project.pbxproj`. The husk
|
|
19
|
-
* carries the name the KMM wizard gives, so the conventional name outranked
|
|
20
|
-
* the project that exists — and it supplied BOTH `IOS_PROJECT_PATH` and, via
|
|
21
|
-
* the scheme scan's project-name fallback, `IOS_SCHEME`. The build reached
|
|
22
|
-
* step 9 and died on "Unable to read project 'iosApp.xcodeproj'".
|
|
23
|
-
*
|
|
24
|
-
* This is the iOS twin of the Gradle module scan once treating "a directory
|
|
25
|
-
* holding a file called build.gradle" as a module: wrong in the same
|
|
26
|
-
* direction, and fixed the same way — one reader, used by everyone.
|
|
27
|
-
*
|
|
28
|
-
* The `.pbxproj` is deliberately NOT parsed. Its existence and non-emptiness
|
|
29
|
-
* is the whole question; a shared `.xcscheme` remains the oracle for what a
|
|
30
|
-
* project builds.
|
|
31
|
-
*/
|
|
32
|
-
export declare function isXcodeContainer(path: string): boolean;
|
|
33
|
-
/** The entries of `dir` that are real Xcode containers, in `readdir` order. */
|
|
34
|
-
export declare function xcodeContainersIn(dir: string): string[];
|
|
35
|
-
/**
|
|
36
|
-
* Detects whether the given directory is the root of an Android, iOS, or
|
|
37
|
-
* KMM project. Returns the detected project type, or null if none match.
|
|
38
|
-
*
|
|
39
|
-
* KMM is checked before Android because both have Gradle files, and it is
|
|
40
|
-
* decided by what the repository *is*: a module that applies the Kotlin
|
|
41
|
-
* Multiplatform plugin or declares a Kotlin/Native Apple target in its own
|
|
42
|
-
* build file (garfiec/Librechat-Mobile applies the plugin only through a
|
|
43
|
-
* convention plugin), and an Apple consumer within one directory of the
|
|
44
|
-
* root. The three conventional directory names (`shared`, `composeApp`,
|
|
45
|
-
* `iosApp`) used to be the whole rule, and were wrong in both directions —
|
|
46
|
-
* `joreilly/PeopleInSpace` (`common` + `PeopleInSpaceSwiftUI/`) and
|
|
47
|
-
* `openMF/mifos-pay` (`cmp-shared` + `cmp-ios/`) were detected `android`,
|
|
48
|
-
* while an Android-only project with a module *named* `shared` was detected
|
|
49
|
-
* KMM and given a pipeline with an xcodebuild step aimed at nothing.
|
|
50
|
-
*
|
|
51
|
-
* Without an Apple consumer it is Android: an Android-only Kotlin
|
|
52
|
-
* Multiplatform library builds perfectly well with the Android template.
|
|
53
|
-
*/
|
|
54
|
-
export declare function detectMobileProjectRoot(dir: string): MobileProjectType | null;
|
|
55
|
-
/** Kept for callers that only ask whether a path is a directory. */
|
|
56
|
-
export { isDirectory };
|
|
57
|
-
//# sourceMappingURL=detect-project.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"detect-project.d.ts","sourceRoot":"","sources":["../../../src/shared/detect-project.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC;AAoB1D,iBAAS,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAM1C;AAUD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAYtD;AAED,+EAA+E;AAC/E,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAYvD;AAwED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CA4B7E;AAED,oEAAoE;AACpE,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
|
|
2
|
-
import { resolve } from "node:path";
|
|
3
|
-
import { declaresKotlinMultiplatform, parseSettingsModules, } from "./gradle-settings.js";
|
|
4
|
-
/** Directories that hold a copy of a project rather than the source of it. */
|
|
5
|
-
const NON_SOURCE_DIRS = new Set([
|
|
6
|
-
".git",
|
|
7
|
-
".gradle",
|
|
8
|
-
".idea",
|
|
9
|
-
"build",
|
|
10
|
-
"DerivedData",
|
|
11
|
-
"Pods",
|
|
12
|
-
"node_modules",
|
|
13
|
-
]);
|
|
14
|
-
/**
|
|
15
|
-
* The module names the multiplatform wizards write. Tried first because
|
|
16
|
-
* they are right most of the time and cost two `existsSync` calls — but they
|
|
17
|
-
* are a fast path through the rule below, not the rule.
|
|
18
|
-
*/
|
|
19
|
-
const CONVENTIONAL_MULTIPLATFORM_MODULES = ["shared", "composeApp", "common"];
|
|
20
|
-
function isDirectory(path) {
|
|
21
|
-
try {
|
|
22
|
-
return statSync(path).isDirectory();
|
|
23
|
-
}
|
|
24
|
-
catch {
|
|
25
|
-
return false;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
function readOrNull(path) {
|
|
29
|
-
try {
|
|
30
|
-
return readFileSync(path, "utf-8");
|
|
31
|
-
}
|
|
32
|
-
catch {
|
|
33
|
-
return null;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* True when a path that is *named* like an Xcode container actually is one.
|
|
38
|
-
*
|
|
39
|
-
* **The** predicate — every question of the form "is this `.xcodeproj` a
|
|
40
|
-
* project" goes through here, and nothing else in cibuild joins a directory
|
|
41
|
-
* name to "there is a project there".
|
|
42
|
-
*
|
|
43
|
-
* A `.xcodeproj` is a directory whose whole content is `project.pbxproj`;
|
|
44
|
-
* without it `xcodebuild` refuses to open the project at all — "missing its
|
|
45
|
-
* project.pbxproj file". A `.xcworkspace` is `contents.xcworkspacedata` in
|
|
46
|
-
* the same way. Anything else ending in those suffixes is a directory with a
|
|
47
|
-
* suggestive name, and offering one is offering something Xcode would reject.
|
|
48
|
-
*
|
|
49
|
-
* `Uwi0/Oakane` is the row that found it. Its `iosApp/` ships two: a tracked
|
|
50
|
-
* `iosApp.xcodeproj` holding nothing but `project.xcworkspace/`, and the real
|
|
51
|
-
* `oakane.xcodeproj` beside it with a 20 217-byte `project.pbxproj`. The husk
|
|
52
|
-
* carries the name the KMM wizard gives, so the conventional name outranked
|
|
53
|
-
* the project that exists — and it supplied BOTH `IOS_PROJECT_PATH` and, via
|
|
54
|
-
* the scheme scan's project-name fallback, `IOS_SCHEME`. The build reached
|
|
55
|
-
* step 9 and died on "Unable to read project 'iosApp.xcodeproj'".
|
|
56
|
-
*
|
|
57
|
-
* This is the iOS twin of the Gradle module scan once treating "a directory
|
|
58
|
-
* holding a file called build.gradle" as a module: wrong in the same
|
|
59
|
-
* direction, and fixed the same way — one reader, used by everyone.
|
|
60
|
-
*
|
|
61
|
-
* The `.pbxproj` is deliberately NOT parsed. Its existence and non-emptiness
|
|
62
|
-
* is the whole question; a shared `.xcscheme` remains the oracle for what a
|
|
63
|
-
* project builds.
|
|
64
|
-
*/
|
|
65
|
-
export function isXcodeContainer(path) {
|
|
66
|
-
const manifest = path.endsWith(".xcworkspace")
|
|
67
|
-
? "contents.xcworkspacedata"
|
|
68
|
-
: path.endsWith(".xcodeproj")
|
|
69
|
-
? "project.pbxproj"
|
|
70
|
-
: null;
|
|
71
|
-
if (manifest === null)
|
|
72
|
-
return false;
|
|
73
|
-
try {
|
|
74
|
-
return statSync(resolve(path, manifest)).size > 0;
|
|
75
|
-
}
|
|
76
|
-
catch {
|
|
77
|
-
return false;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
/** The entries of `dir` that are real Xcode containers, in `readdir` order. */
|
|
81
|
-
export function xcodeContainersIn(dir) {
|
|
82
|
-
let entries;
|
|
83
|
-
try {
|
|
84
|
-
entries = readdirSync(dir);
|
|
85
|
-
}
|
|
86
|
-
catch {
|
|
87
|
-
return [];
|
|
88
|
-
}
|
|
89
|
-
return entries.filter((e) => (e.endsWith(".xcodeproj") || e.endsWith(".xcworkspace")) &&
|
|
90
|
-
isXcodeContainer(resolve(dir, e)));
|
|
91
|
-
}
|
|
92
|
-
/** True when this directory holds something an Apple build reads. */
|
|
93
|
-
function holdsAppleConsumer(dir) {
|
|
94
|
-
let entries;
|
|
95
|
-
try {
|
|
96
|
-
entries = readdirSync(dir);
|
|
97
|
-
}
|
|
98
|
-
catch {
|
|
99
|
-
return false;
|
|
100
|
-
}
|
|
101
|
-
if (xcodeContainersIn(dir).length > 0) {
|
|
102
|
-
return true;
|
|
103
|
-
}
|
|
104
|
-
if (entries.includes("Podfile"))
|
|
105
|
-
return true;
|
|
106
|
-
// An XcodeGen spec generates the project during the build, so the absence
|
|
107
|
-
// of a `.xcodeproj` says nothing about whether there is an iOS app.
|
|
108
|
-
if (entries.includes("project.yml")) {
|
|
109
|
-
const content = readOrNull(resolve(dir, "project.yml"));
|
|
110
|
-
return content !== null && /^\s*targets\s*:/m.test(content);
|
|
111
|
-
}
|
|
112
|
-
return false;
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* An Apple consumer at the root or one directory below it.
|
|
116
|
-
*
|
|
117
|
-
* One level, because that is where every KMM repository in the thirty-app
|
|
118
|
-
* study put its iOS app — under names as varied as `iosApp`,
|
|
119
|
-
* `PeopleInSpaceSwiftUI`, `cmp-ios` and `cmp-iosApp` — and because looking
|
|
120
|
-
* deeper starts finding sample apps inside library modules.
|
|
121
|
-
*/
|
|
122
|
-
function hasAppleConsumerWithinOneLevel(root) {
|
|
123
|
-
if (holdsAppleConsumer(root))
|
|
124
|
-
return true;
|
|
125
|
-
let entries;
|
|
126
|
-
try {
|
|
127
|
-
entries = readdirSync(root, { withFileTypes: true });
|
|
128
|
-
}
|
|
129
|
-
catch {
|
|
130
|
-
return false;
|
|
131
|
-
}
|
|
132
|
-
for (const entry of entries) {
|
|
133
|
-
if (!entry.isDirectory())
|
|
134
|
-
continue;
|
|
135
|
-
if (NON_SOURCE_DIRS.has(entry.name) || entry.name.startsWith("."))
|
|
136
|
-
continue;
|
|
137
|
-
if (entry.name.endsWith(".xcodeproj") || entry.name.endsWith(".xcworkspace"))
|
|
138
|
-
continue;
|
|
139
|
-
if (holdsAppleConsumer(resolve(root, entry.name)))
|
|
140
|
-
return true;
|
|
141
|
-
}
|
|
142
|
-
return false;
|
|
143
|
-
}
|
|
144
|
-
/** The plugin, or a Kotlin/Native Apple target, in the module's own build file. */
|
|
145
|
-
function moduleIsMultiplatform(root, module) {
|
|
146
|
-
for (const name of ["build.gradle.kts", "build.gradle"]) {
|
|
147
|
-
const content = readOrNull(resolve(root, module, name));
|
|
148
|
-
if (content !== null && declaresKotlinMultiplatform(content))
|
|
149
|
-
return true;
|
|
150
|
-
}
|
|
151
|
-
return false;
|
|
152
|
-
}
|
|
153
|
-
/** True when any module this build includes is Kotlin Multiplatform. */
|
|
154
|
-
function hasMultiplatformModule(root) {
|
|
155
|
-
for (const module of CONVENTIONAL_MULTIPLATFORM_MODULES) {
|
|
156
|
-
if (moduleIsMultiplatform(root, module))
|
|
157
|
-
return true;
|
|
158
|
-
}
|
|
159
|
-
for (const name of ["settings.gradle", "settings.gradle.kts"]) {
|
|
160
|
-
const content = readOrNull(resolve(root, name));
|
|
161
|
-
if (content === null)
|
|
162
|
-
continue;
|
|
163
|
-
for (const module of parseSettingsModules(content)) {
|
|
164
|
-
if (moduleIsMultiplatform(root, module))
|
|
165
|
-
return true;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
return false;
|
|
169
|
-
}
|
|
170
|
-
/**
|
|
171
|
-
* Detects whether the given directory is the root of an Android, iOS, or
|
|
172
|
-
* KMM project. Returns the detected project type, or null if none match.
|
|
173
|
-
*
|
|
174
|
-
* KMM is checked before Android because both have Gradle files, and it is
|
|
175
|
-
* decided by what the repository *is*: a module that applies the Kotlin
|
|
176
|
-
* Multiplatform plugin or declares a Kotlin/Native Apple target in its own
|
|
177
|
-
* build file (garfiec/Librechat-Mobile applies the plugin only through a
|
|
178
|
-
* convention plugin), and an Apple consumer within one directory of the
|
|
179
|
-
* root. The three conventional directory names (`shared`, `composeApp`,
|
|
180
|
-
* `iosApp`) used to be the whole rule, and were wrong in both directions —
|
|
181
|
-
* `joreilly/PeopleInSpace` (`common` + `PeopleInSpaceSwiftUI/`) and
|
|
182
|
-
* `openMF/mifos-pay` (`cmp-shared` + `cmp-ios/`) were detected `android`,
|
|
183
|
-
* while an Android-only project with a module *named* `shared` was detected
|
|
184
|
-
* KMM and given a pipeline with an xcodebuild step aimed at nothing.
|
|
185
|
-
*
|
|
186
|
-
* Without an Apple consumer it is Android: an Android-only Kotlin
|
|
187
|
-
* Multiplatform library builds perfectly well with the Android template.
|
|
188
|
-
*/
|
|
189
|
-
export function detectMobileProjectRoot(dir) {
|
|
190
|
-
const androidIndicators = [
|
|
191
|
-
"build.gradle",
|
|
192
|
-
"build.gradle.kts",
|
|
193
|
-
"settings.gradle",
|
|
194
|
-
"settings.gradle.kts",
|
|
195
|
-
"gradlew",
|
|
196
|
-
];
|
|
197
|
-
const hasAndroidIndicator = androidIndicators.some((f) => existsSync(resolve(dir, f)));
|
|
198
|
-
if (hasAndroidIndicator) {
|
|
199
|
-
if (hasAppleConsumerWithinOneLevel(dir) && hasMultiplatformModule(dir))
|
|
200
|
-
return "kmm";
|
|
201
|
-
return "android";
|
|
202
|
-
}
|
|
203
|
-
const iosFileIndicators = ["Podfile"];
|
|
204
|
-
const hasIosFile = iosFileIndicators.some((f) => existsSync(resolve(dir, f)));
|
|
205
|
-
if (!hasIosFile) {
|
|
206
|
-
// A husk — a directory named `*.xcodeproj` with no `project.pbxproj` —
|
|
207
|
-
// does not make this an iOS project root. Saying `ios` on the strength of
|
|
208
|
-
// one writes a pipeline aimed at something xcodebuild cannot open.
|
|
209
|
-
if (xcodeContainersIn(dir).length > 0)
|
|
210
|
-
return "ios";
|
|
211
|
-
}
|
|
212
|
-
else {
|
|
213
|
-
return "ios";
|
|
214
|
-
}
|
|
215
|
-
return null;
|
|
216
|
-
}
|
|
217
|
-
/** Kept for callers that only ask whether a path is a directory. */
|
|
218
|
-
export { isDirectory };
|
|
219
|
-
//# sourceMappingURL=detect-project.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"detect-project.test.d.ts","sourceRoot":"","sources":["../../../src/shared/detect-project.test.ts"],"names":[],"mappings":""}
|