@catladder/cli 0.0.0-next-e9e5af68 → 0.0.0-next-1c65899f
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/bundles/catenv/index.js +6990 -6861
- package/dist/bundles/cli/index.js +10953 -10889
- package/dist/bundles/skills/catladder-cli/references/commands.md +37 -2
- package/dist/bundles/skills/catladder-pipelines/SKILL.md +6 -6
- package/dist/bundles/skills/catladder-secrets/SKILL.md +42 -9
- package/dist/cli/src/adapters/baseContext.d.ts +18 -18
- package/dist/cli/src/adapters/baseContext.js +34 -34
- package/dist/cli/src/adapters/nonInteractive.d.ts +2 -2
- package/dist/cli/src/adapters/nonInteractive.js +20 -22
- package/dist/cli/src/adapters/programmatic.d.ts +12 -12
- package/dist/cli/src/adapters/programmatic.js +46 -51
- package/dist/cli/src/adapters/terminal.d.ts +15 -15
- package/dist/cli/src/adapters/terminal.js +154 -176
- package/dist/cli/src/adapters/vaultManagerAccess.d.ts +1 -1
- package/dist/cli/src/adapters/vaultManagerAccess.js +11 -16
- package/dist/cli/src/apps/catenv/catenv.d.ts +4 -4
- package/dist/cli/src/apps/catenv/catenv.js +20 -20
- package/dist/cli/src/apps/catenv/printVariables.d.ts +1 -1
- package/dist/cli/src/apps/catenv/printVariables.js +30 -33
- package/dist/cli/src/apps/catenv/types.d.ts +4 -4
- package/dist/cli/src/apps/catenv/types.js +2 -4
- package/dist/cli/src/apps/catenv/utils.d.ts +6 -9
- package/dist/cli/src/apps/catenv/utils.js +21 -25
- package/dist/cli/src/apps/catenv/verboseBanner.d.ts +1 -1
- package/dist/cli/src/apps/catenv/verboseBanner.js +24 -20
- package/dist/cli/src/apps/catenv/writeDotEnvFiles.d.ts +1 -1
- package/dist/cli/src/apps/catenv/writeDotEnvFiles.js +22 -25
- package/dist/cli/src/apps/catenv/writeEnvDTs.d.ts +1 -1
- package/dist/cli/src/apps/catenv/writeEnvDTs.js +32 -31
- package/dist/cli/src/apps/cli/commands/mongodb/utils/index.d.ts +6 -6
- package/dist/cli/src/apps/cli/commands/mongodb/utils/index.js +52 -56
- package/dist/cli/src/apps/cli/commands/project/doctor/DoctorReport.d.ts +13 -13
- package/dist/cli/src/apps/cli/commands/project/doctor/DoctorReport.js +50 -62
- package/dist/cli/src/apps/cli/commands/project/doctor/GcloudProjectInspector.d.ts +9 -9
- package/dist/cli/src/apps/cli/commands/project/doctor/GcloudProjectInspector.js +43 -44
- package/dist/cli/src/apps/cli/commands/project/doctor/checkCloudRun.d.ts +1 -1
- package/dist/cli/src/apps/cli/commands/project/doctor/checkCloudRun.js +75 -93
- package/dist/cli/src/apps/cli/commands/project/doctor/checkGithub.d.ts +1 -1
- package/dist/cli/src/apps/cli/commands/project/doctor/checkGithub.js +86 -78
- package/dist/cli/src/apps/cli/commands/project/doctor/checkGitlab.d.ts +1 -1
- package/dist/cli/src/apps/cli/commands/project/doctor/checkGitlab.js +58 -57
- package/dist/cli/src/apps/cli/commands/project/doctor/checkStore.d.ts +1 -1
- package/dist/cli/src/apps/cli/commands/project/doctor/checkStore.js +25 -30
- package/dist/cli/src/apps/cli/commands/project/doctor/index.d.ts +1 -1
- package/dist/cli/src/apps/cli/commands/project/doctor/index.js +24 -25
- package/dist/cli/src/apps/cli/commands/project/setup/ensureGcloudProjectNumbers.d.ts +1 -1
- package/dist/cli/src/apps/cli/commands/project/setup/ensureGcloudProjectNumbers.js +34 -45
- package/dist/cli/src/apps/cli/commands/project/setup/index.d.ts +1 -1
- package/dist/cli/src/apps/cli/commands/project/setup/index.js +31 -27
- package/dist/cli/src/apps/cli/commands/project/setup/logSection.d.ts +1 -1
- package/dist/cli/src/apps/cli/commands/project/setup/logSection.js +13 -15
- package/dist/cli/src/apps/cli/commands/project/setup/setupAccessTokens.d.ts +1 -1
- package/dist/cli/src/apps/cli/commands/project/setup/setupAccessTokens.js +34 -43
- package/dist/cli/src/apps/cli/commands/project/setup/setupAgents.d.ts +1 -1
- package/dist/cli/src/apps/cli/commands/project/setup/setupAgents.js +130 -137
- package/dist/cli/src/apps/cli/commands/project/setup/setupCloudRun.d.ts +3 -3
- package/dist/cli/src/apps/cli/commands/project/setup/setupCloudRun.js +49 -46
- package/dist/cli/src/apps/cli/commands/project/setup/setupContext.d.ts +1 -1
- package/dist/cli/src/apps/cli/commands/project/setup/setupContext.js +13 -15
- package/dist/cli/src/apps/cli/commands/project/setup/setupKubernetes.d.ts +1 -1
- package/dist/cli/src/apps/cli/commands/project/setup/setupKubernetes.js +69 -70
- package/dist/cli/src/apps/cli/commands/project/setup/setupTopic.d.ts +1 -1
- package/dist/cli/src/apps/cli/commands/project/setup/setupTopic.js +7 -15
- package/dist/cli/src/apps/cli/commands/project/utils/autocompletions.d.ts +1 -1
- package/dist/cli/src/apps/cli/commands/project/utils/autocompletions.js +16 -21
- package/dist/cli/src/apps/cli/commands/project/utils/ensureCluster.d.ts +1 -1
- package/dist/cli/src/apps/cli/commands/project/utils/ensureCluster.js +22 -26
- package/dist/cli/src/apps/cli/commands/project/utils/ensureNamespace.d.ts +1 -1
- package/dist/cli/src/apps/cli/commands/project/utils/ensureNamespace.js +30 -35
- package/dist/cli/src/apps/cli/utils/getGoogleAuthUserNumber.d.ts +1 -1
- package/dist/cli/src/apps/cli/utils/getGoogleAuthUserNumber.js +15 -17
- package/dist/cli/src/catci.d.ts +1 -1
- package/dist/cli/src/catci.js +63 -65
- package/dist/cli/src/catenv.d.ts +1 -1
- package/dist/cli/src/catenv.js +44 -31
- package/dist/cli/src/cli.d.ts +1 -1
- package/dist/cli/src/cli.js +185 -170
- package/dist/cli/src/commands/availability.d.ts +1 -1
- package/dist/cli/src/commands/availability.js +13 -16
- package/dist/cli/src/commands/cloudSQL/commandRestoreDb.d.ts +45 -45
- package/dist/cli/src/commands/cloudSQL/commandRestoreDb.js +92 -103
- package/dist/cli/src/commands/fun/commandDadjoke.d.ts +1 -1
- package/dist/cli/src/commands/fun/commandDadjoke.js +18 -24
- package/dist/cli/src/commands/fun/commandStarwars.d.ts +1 -1
- package/dist/cli/src/commands/fun/commandStarwars.js +12 -14
- package/dist/cli/src/commands/general/commandKubeCurrentContext.d.ts +1 -1
- package/dist/cli/src/commands/general/commandKubeCurrentContext.js +10 -12
- package/dist/cli/src/commands/general/commandKubeGetShell.d.ts +11 -11
- package/dist/cli/src/commands/general/commandKubeGetShell.js +26 -28
- package/dist/cli/src/commands/general/commandKubeListNamespaces.d.ts +1 -1
- package/dist/cli/src/commands/general/commandKubeListNamespaces.js +13 -15
- package/dist/cli/src/commands/general/commandKubeListPods.d.ts +6 -6
- package/dist/cli/src/commands/general/commandKubeListPods.js +19 -21
- package/dist/cli/src/commands/general/commandKubeListSecrets.d.ts +6 -6
- package/dist/cli/src/commands/general/commandKubeListSecrets.js +19 -21
- package/dist/cli/src/commands/general/commandKubePortForward.d.ts +19 -19
- package/dist/cli/src/commands/general/commandKubePortForward.js +29 -37
- package/dist/cli/src/commands/general/commandKubeStopPortforward.d.ts +6 -6
- package/dist/cli/src/commands/general/commandKubeStopPortforward.js +13 -19
- package/dist/cli/src/commands/index.d.ts +5 -1
- package/dist/cli/src/commands/index.js +52 -251
- package/dist/cli/src/commands/index.js.map +1 -1
- package/dist/cli/src/commands/mongodb/commandMongoDestroyMember.d.ts +15 -15
- package/dist/cli/src/commands/mongodb/commandMongoDestroyMember.js +76 -73
- package/dist/cli/src/commands/mongodb/commandMongoGetShell.d.ts +15 -15
- package/dist/cli/src/commands/mongodb/commandMongoGetShell.js +26 -28
- package/dist/cli/src/commands/mongodb/commandMongoPortForward.d.ts +20 -20
- package/dist/cli/src/commands/mongodb/commandMongoPortForward.js +45 -52
- package/dist/cli/src/commands/project/commandCloudSqlProxy.d.ts +12 -12
- package/dist/cli/src/commands/project/commandCloudSqlProxy.js +107 -110
- package/dist/cli/src/commands/project/commandConfigSecrets.d.ts +13 -8
- package/dist/cli/src/commands/project/commandConfigSecrets.js +71 -32
- package/dist/cli/src/commands/project/commandConfigSecrets.js.map +1 -1
- package/dist/cli/src/commands/project/commandDoctor.d.ts +7 -7
- package/dist/cli/src/commands/project/commandDoctor.js +18 -20
- package/dist/cli/src/commands/project/commandEnvVars.d.ts +7 -7
- package/dist/cli/src/commands/project/commandEnvVars.js +21 -26
- package/dist/cli/src/commands/project/commandGetMyTotalWorktime.d.ts +1 -1
- package/dist/cli/src/commands/project/commandGetMyTotalWorktime.js +12 -14
- package/dist/cli/src/commands/project/commandGitlabCi.d.ts +11 -11
- package/dist/cli/src/commands/project/commandGitlabCi.js +82 -91
- package/dist/cli/src/commands/project/commandOpenEnv.d.ts +7 -7
- package/dist/cli/src/commands/project/commandOpenEnv.js +24 -31
- package/dist/cli/src/commands/project/commandOpenGit.d.ts +1 -1
- package/dist/cli/src/commands/project/commandOpenGit.js +10 -12
- package/dist/cli/src/commands/project/commandOpenLogs.d.ts +7 -7
- package/dist/cli/src/commands/project/commandOpenLogs.js +34 -37
- package/dist/cli/src/commands/project/commandPortForward.d.ts +24 -24
- package/dist/cli/src/commands/project/commandPortForward.js +59 -78
- package/dist/cli/src/commands/project/commandProjectRestoreDb.d.ts +18 -18
- package/dist/cli/src/commands/project/commandProjectRestoreDb.js +156 -147
- package/dist/cli/src/commands/project/commandRenewToken.d.ts +1 -1
- package/dist/cli/src/commands/project/commandRenewToken.js +10 -12
- package/dist/cli/src/commands/project/commandSecretsClearBackups.d.ts +6 -6
- package/dist/cli/src/commands/project/commandSecretsClearBackups.js +17 -19
- package/dist/cli/src/commands/project/commandSecretsSyncGithub.d.ts +22 -22
- package/dist/cli/src/commands/project/commandSecretsSyncGithub.js +136 -144
- package/dist/cli/src/commands/project/commandSecurityEvaluate.d.ts +1 -1
- package/dist/cli/src/commands/project/commandSecurityEvaluate.js +17 -20
- package/dist/cli/src/commands/project/commandSetup.d.ts +7 -7
- package/dist/cli/src/commands/project/commandSetup.js +18 -20
- package/dist/cli/src/commands/project/k8s/commandDeletePods.d.ts +12 -12
- package/dist/cli/src/commands/project/k8s/commandDeletePods.js +38 -40
- package/dist/cli/src/commands/project/k8s/commandDeleteProject.d.ts +7 -7
- package/dist/cli/src/commands/project/k8s/commandDeleteProject.js +28 -35
- package/dist/cli/src/commands/project/k8s/commandGetShell.d.ts +12 -12
- package/dist/cli/src/commands/project/k8s/commandGetShell.js +31 -31
- package/dist/cli/src/commands/project/k8s/commandListPods.d.ts +7 -7
- package/dist/cli/src/commands/project/k8s/commandListPods.js +21 -23
- package/dist/cli/src/commands/project/k8s/commandNamespace.d.ts +7 -7
- package/dist/cli/src/commands/project/k8s/commandNamespace.js +19 -21
- package/dist/cli/src/commands/project/k8s/commandPauseProject.d.ts +7 -7
- package/dist/cli/src/commands/project/k8s/commandPauseProject.js +28 -35
- package/dist/cli/src/commands/project/k8s/commandTriggerCronjob.d.ts +22 -22
- package/dist/cli/src/commands/project/k8s/commandTriggerCronjob.js +67 -76
- package/dist/cli/src/commands/project/secrets/commandSecretsList.d.ts +24 -0
- package/dist/cli/src/commands/project/secrets/commandSecretsList.js +64 -0
- package/dist/cli/src/commands/project/secrets/commandSecretsList.js.map +1 -0
- package/dist/cli/src/commands/project/secrets/commandSecretsPull.d.ts +19 -0
- package/dist/cli/src/commands/project/secrets/commandSecretsPull.js +48 -0
- package/dist/cli/src/commands/project/secrets/commandSecretsPull.js.map +1 -0
- package/dist/cli/src/commands/project/secrets/commandSecretsPush.d.ts +19 -0
- package/dist/cli/src/commands/project/secrets/commandSecretsPush.js +74 -0
- package/dist/cli/src/commands/project/secrets/commandSecretsPush.js.map +1 -0
- package/dist/cli/src/commands/project/secrets/commandSecretsSet.d.ts +24 -0
- package/dist/cli/src/commands/project/secrets/commandSecretsSet.js +82 -0
- package/dist/cli/src/commands/project/secrets/commandSecretsSet.js.map +1 -0
- package/dist/cli/src/commands/project/secrets/document.d.ts +47 -0
- package/dist/cli/src/commands/project/secrets/document.js +180 -0
- package/dist/cli/src/commands/project/secrets/document.js.map +1 -0
- package/dist/cli/src/commands/project/secrets/parseKeysInput.d.ts +2 -0
- package/dist/cli/src/commands/project/secrets/parseKeysInput.js +10 -0
- package/dist/cli/src/commands/project/secrets/parseKeysInput.js.map +1 -0
- package/dist/cli/src/commands/project/secrets/scope.d.ts +35 -0
- package/dist/cli/src/commands/project/secrets/scope.js +113 -0
- package/dist/cli/src/commands/project/secrets/scope.js.map +1 -0
- package/dist/cli/src/commands/security/commandSecurityAuditCiJob.d.ts +26 -26
- package/dist/cli/src/commands/security/commandSecurityAuditCiJob.js +62 -73
- package/dist/cli/src/commands/security/commandSecurityAuditCreate.d.ts +21 -21
- package/dist/cli/src/commands/security/commandSecurityAuditCreate.js +47 -51
- package/dist/cli/src/commands/security/commandSecurityAuditEvaluate.d.ts +6 -6
- package/dist/cli/src/commands/security/commandSecurityAuditEvaluate.js +22 -29
- package/dist/cli/src/completion.d.ts +1 -1
- package/dist/cli/src/completion.js +130 -129
- package/dist/cli/src/config/getProjectConfig.d.ts +6 -8
- package/dist/cli/src/config/getProjectConfig.js +92 -94
- package/dist/cli/src/config/parseChoice.d.ts +3 -3
- package/dist/cli/src/config/parseChoice.js +6 -11
- package/dist/cli/src/core/defineCommand.d.ts +1 -1
- package/dist/cli/src/core/defineCommand.js +4 -6
- package/dist/cli/src/core/index.d.ts +3 -3
- package/dist/cli/src/core/index.js +9 -46
- package/dist/cli/src/core/registry.d.ts +1 -1
- package/dist/cli/src/core/registry.js +10 -12
- package/dist/cli/src/core/runner.d.ts +3 -3
- package/dist/cli/src/core/runner.js +8 -10
- package/dist/cli/src/core/types.d.ts +70 -70
- package/dist/cli/src/core/types.js +14 -15
- package/dist/cli/src/gcloud/artifactsRegistry.d.ts +3 -3
- package/dist/cli/src/gcloud/artifactsRegistry.js +11 -12
- package/dist/cli/src/gcloud/cloudRun/openCloudRunDashboards.d.ts +1 -1
- package/dist/cli/src/gcloud/cloudRun/openCloudRunDashboards.js +12 -19
- package/dist/cli/src/gcloud/cloudSql/copyDb.d.ts +9 -9
- package/dist/cli/src/gcloud/cloudSql/copyDb.js +20 -31
- package/dist/cli/src/gcloud/cloudSql/parseConnectionString.d.ts +1 -1
- package/dist/cli/src/gcloud/cloudSql/parseConnectionString.js +10 -12
- package/dist/cli/src/gcloud/cloudSql/startProxy.d.ts +4 -4
- package/dist/cli/src/gcloud/cloudSql/startProxy.js +39 -55
- package/dist/cli/src/gcloud/enableServices.d.ts +2 -2
- package/dist/cli/src/gcloud/enableServices.js +6 -8
- package/dist/cli/src/gcloud/getProjectNumber.d.ts +1 -1
- package/dist/cli/src/gcloud/getProjectNumber.js +10 -12
- package/dist/cli/src/gcloud/openDashboard.d.ts +1 -1
- package/dist/cli/src/gcloud/openDashboard.js +13 -17
- package/dist/cli/src/gcloud/serviceAccountNames.d.ts +11 -11
- package/dist/cli/src/gcloud/serviceAccountNames.js +27 -34
- package/dist/cli/src/gcloud/serviceAccounts.d.ts +6 -6
- package/dist/cli/src/gcloud/serviceAccounts.js +37 -46
- package/dist/cli/src/git/getGetMainBranch.d.ts +1 -1
- package/dist/cli/src/git/getGetMainBranch.js +5 -9
- package/dist/cli/src/git/gitConfig.d.ts +6 -11
- package/dist/cli/src/git/gitConfig.js +11 -17
- package/dist/cli/src/git/gitProjectInformation.d.ts +6 -6
- package/dist/cli/src/git/gitProjectInformation.js +20 -30
- package/dist/cli/src/git/index.d.ts +1 -1
- package/dist/cli/src/git/index.js +16 -23
- package/dist/cli/src/index.d.ts +1 -1
- package/dist/cli/src/index.js +2 -4
- package/dist/cli/src/k8sApi/index.d.ts +1 -1
- package/dist/cli/src/k8sApi/index.js +12 -14
- package/dist/cli/src/kubernetes/index.d.ts +1 -1
- package/dist/cli/src/kubernetes/index.js +17 -24
- package/dist/cli/src/kubernetes/openKubernetesDashboards.d.ts +1 -1
- package/dist/cli/src/kubernetes/openKubernetesDashboards.js +33 -35
- package/dist/cli/src/kubernetes/portForward.d.ts +1 -1
- package/dist/cli/src/kubernetes/portForward.js +5 -7
- package/dist/cli/src/packageInfos.d.ts +1 -1
- package/dist/cli/src/packageInfos.js +3 -5
- package/dist/cli/src/release/changesets.d.ts +4 -4
- package/dist/cli/src/release/changesets.js +68 -60
- package/dist/cli/src/release/changesetsReleaseJob.d.ts +1 -1
- package/dist/cli/src/release/changesetsReleaseJob.js +99 -99
- package/dist/cli/src/scripts/generateCliSkillReference.d.ts +1 -1
- package/dist/cli/src/scripts/generateCliSkillReference.js +85 -62
- package/dist/cli/src/security/auditDocument.d.ts +16 -16
- package/dist/cli/src/security/auditDocument.js +65 -54
- package/dist/cli/src/security/createSecurityAuditMergeRequest.d.ts +6 -11
- package/dist/cli/src/security/createSecurityAuditMergeRequest.js +43 -43
- package/dist/cli/src/security/evaluateSecurityAudit.d.ts +3 -5
- package/dist/cli/src/security/evaluateSecurityAudit.js +12 -16
- package/dist/cli/src/store/updateCatladderStore.d.ts +4 -4
- package/dist/cli/src/store/updateCatladderStore.js +12 -16
- package/dist/cli/src/types/types.d.ts +13 -13
- package/dist/cli/src/types/types.js +2 -4
- package/dist/cli/src/utils/boxWithAscii.d.ts +1 -1
- package/dist/cli/src/utils/boxWithAscii.js +10 -12
- package/dist/cli/src/utils/cluster.d.ts +1 -1
- package/dist/cli/src/utils/cluster.js +6 -8
- package/dist/cli/src/utils/concurrency.d.ts +1 -1
- package/dist/cli/src/utils/concurrency.js +13 -17
- package/dist/cli/src/utils/editAsFile.d.ts +1 -1
- package/dist/cli/src/utils/editAsFile.js +17 -25
- package/dist/cli/src/utils/files.d.ts +1 -1
- package/dist/cli/src/utils/files.js +12 -15
- package/dist/cli/src/utils/getEditor.d.ts +2 -2
- package/dist/cli/src/utils/getEditor.js +14 -20
- package/dist/cli/src/utils/github.d.ts +1 -1
- package/dist/cli/src/utils/github.js +60 -47
- package/dist/cli/src/utils/gitlab.d.ts +9 -9
- package/dist/cli/src/utils/gitlab.js +173 -189
- package/dist/cli/src/utils/log.d.ts +2 -2
- package/dist/cli/src/utils/log.js +16 -18
- package/dist/cli/src/utils/portForwards.d.ts +5 -5
- package/dist/cli/src/utils/portForwards.js +31 -32
- package/dist/cli/src/utils/preferences.d.ts +1 -1
- package/dist/cli/src/utils/preferences.js +36 -43
- package/dist/cli/src/utils/projects/index.d.ts +1 -1
- package/dist/cli/src/utils/projects/index.js +21 -24
- package/dist/cli/src/utils/promise.d.ts +1 -1
- package/dist/cli/src/utils/promise.js +6 -8
- package/dist/cli/src/utils/readStdin.d.ts +2 -0
- package/dist/cli/src/utils/readStdin.js +13 -0
- package/dist/cli/src/utils/readStdin.js.map +1 -0
- package/dist/cli/src/utils/shell.d.ts +1 -1
- package/dist/cli/src/utils/shell.js +19 -20
- package/dist/cli/src/vault/BitwardenVault.d.ts +20 -20
- package/dist/cli/src/vault/BitwardenVault.js +98 -84
- package/dist/cli/src/vault/GitlabVault.d.ts +4 -4
- package/dist/cli/src/vault/GitlabVault.js +13 -15
- package/dist/cli/src/vault/VaultManager.d.ts +32 -32
- package/dist/cli/src/vault/VaultManager.js +104 -98
- package/dist/cli/src/vault/bw.d.ts +3 -5
- package/dist/cli/src/vault/bw.js +54 -61
- package/dist/cli/src/vault/cache.d.ts +9 -9
- package/dist/cli/src/vault/cache.js +27 -33
- package/dist/cli/src/vault/index.d.ts +1 -1
- package/dist/cli/src/vault/index.js +18 -40
- package/dist/cli/src/vault/types.d.ts +16 -16
- package/dist/cli/src/vault/types.js +2 -4
- package/dist/pipeline/src/agentSkills/generateAgentSkills.d.ts +1 -1
- package/dist/pipeline/src/agentSkills/generateAgentSkills.js +47 -43
- package/dist/pipeline/src/agentSkills/index.d.ts +1 -1
- package/dist/pipeline/src/agentSkills/index.js +16 -23
- package/dist/pipeline/src/agentSkills/shippedSkills.d.ts +8 -8
- package/dist/pipeline/src/agentSkills/shippedSkills.js +38 -35
- package/dist/pipeline/src/agentSkills/types.d.ts +8 -8
- package/dist/pipeline/src/agentSkills/types.js +13 -14
- package/dist/pipeline/src/backends/github/GithubBackend.d.ts +9 -9
- package/dist/pipeline/src/backends/github/GithubBackend.js +253 -276
- package/dist/pipeline/src/backends/github/GithubBackend.js.map +1 -1
- package/dist/pipeline/src/backends/github/ciVariables.d.ts +1 -1
- package/dist/pipeline/src/backends/github/ciVariables.js +15 -17
- package/dist/pipeline/src/backends/github/createGithubJobs.d.ts +3 -3
- package/dist/pipeline/src/backends/github/createGithubJobs.js +316 -264
- package/dist/pipeline/src/backends/github/githubReleaseJobs.d.ts +3 -3
- package/dist/pipeline/src/backends/github/githubReleaseJobs.js +64 -71
- package/dist/pipeline/src/backends/github/index.d.ts +1 -1
- package/dist/pipeline/src/backends/github/index.js +16 -23
- package/dist/pipeline/src/backends/github/scriptFiles.d.ts +8 -8
- package/dist/pipeline/src/backends/github/scriptFiles.js +27 -29
- package/dist/pipeline/src/backends/github/scriptFunctions.d.ts +1 -1
- package/dist/pipeline/src/backends/github/scriptFunctions.js +10 -10
- package/dist/pipeline/src/backends/gitlab/GitlabBackend.d.ts +13 -13
- package/dist/pipeline/src/backends/gitlab/GitlabBackend.js +163 -178
- package/dist/pipeline/src/backends/gitlab/GitlabBackend.js.map +1 -1
- package/dist/pipeline/src/backends/gitlab/cache.d.ts +5 -5
- package/dist/pipeline/src/backends/gitlab/cache.js +24 -26
- package/dist/pipeline/src/backends/gitlab/ciVariables.d.ts +1 -1
- package/dist/pipeline/src/backends/gitlab/ciVariables.js +9 -11
- package/dist/pipeline/src/backends/gitlab/createGitlabJobs.d.ts +4 -4
- package/dist/pipeline/src/backends/gitlab/createGitlabJobs.js +277 -289
- package/dist/pipeline/src/backends/gitlab/createGitlabJobs.js.map +1 -1
- package/dist/pipeline/src/backends/gitlab/createGitlabPipeline.d.ts +2 -7
- package/dist/pipeline/src/backends/gitlab/createGitlabPipeline.js +66 -65
- package/dist/pipeline/src/backends/gitlab/createGitlabPipeline.js.map +1 -1
- package/dist/pipeline/src/backends/gitlab/getPipelineStages.d.ts +1 -1
- package/dist/pipeline/src/backends/gitlab/getPipelineStages.js +10 -8
- package/dist/pipeline/src/backends/gitlab/gitlabReleaseJobs.d.ts +34 -34
- package/dist/pipeline/src/backends/gitlab/gitlabReleaseJobs.js +55 -45
- package/dist/pipeline/src/backends/gitlab/index.d.ts +1 -1
- package/dist/pipeline/src/backends/gitlab/index.js +16 -23
- package/dist/pipeline/src/backends/gitlab/sortGitLabJobDefProps.d.ts +1 -1
- package/dist/pipeline/src/backends/gitlab/sortGitLabJobDefProps.js +40 -10
- package/dist/pipeline/src/backends/index.d.ts +1 -1
- package/dist/pipeline/src/backends/index.js +41 -56
- package/dist/pipeline/src/backends/types.d.ts +19 -19
- package/dist/pipeline/src/backends/types.js +2 -4
- package/dist/pipeline/src/bash/BashExpression.d.ts +18 -18
- package/dist/pipeline/src/bash/BashExpression.js +45 -44
- package/dist/pipeline/src/bash/bashEscape.d.ts +4 -6
- package/dist/pipeline/src/bash/bashEscape.js +77 -67
- package/dist/pipeline/src/bash/bashExpressionPerPipelineType.d.ts +5 -3
- package/dist/pipeline/src/bash/bashExpressionPerPipelineType.js +6 -7
- package/dist/pipeline/src/bash/bashYaml.d.ts +1 -1
- package/dist/pipeline/src/bash/bashYaml.js +46 -41
- package/dist/pipeline/src/bash/ciVariables.d.ts +2 -2
- package/dist/pipeline/src/bash/ciVariables.js +10 -12
- package/dist/pipeline/src/bash/getInjectVarsScript.d.ts +1 -1
- package/dist/pipeline/src/bash/getInjectVarsScript.js +14 -11
- package/dist/pipeline/src/bash/index.d.ts +1 -1
- package/dist/pipeline/src/bash/index.js +16 -23
- package/dist/pipeline/src/build/artifacts/createBuildJobArtifact.d.ts +1 -1
- package/dist/pipeline/src/build/artifacts/createBuildJobArtifact.js +49 -41
- package/dist/pipeline/src/build/base/constants.d.ts +4 -4
- package/dist/pipeline/src/build/base/constants.js +6 -8
- package/dist/pipeline/src/build/base/createAppBuildJob.d.ts +3 -3
- package/dist/pipeline/src/build/base/createAppBuildJob.js +53 -47
- package/dist/pipeline/src/build/base/createArtifactsConfig.d.ts +1 -1
- package/dist/pipeline/src/build/base/createArtifactsConfig.js +25 -16
- package/dist/pipeline/src/build/base/createBuildJobDefinition.d.ts +3 -3
- package/dist/pipeline/src/build/base/createBuildJobDefinition.js +22 -16
- package/dist/pipeline/src/build/base/index.d.ts +4 -4
- package/dist/pipeline/src/build/base/index.js +34 -15
- package/dist/pipeline/src/build/base/writeBuildInfo.d.ts +1 -1
- package/dist/pipeline/src/build/base/writeBuildInfo.js +7 -7
- package/dist/pipeline/src/build/base/writeDotEnv.d.ts +1 -1
- package/dist/pipeline/src/build/base/writeDotEnv.js +21 -19
- package/dist/pipeline/src/build/cache/createJobCache.d.ts +1 -1
- package/dist/pipeline/src/build/cache/createJobCache.js +55 -58
- package/dist/pipeline/src/build/cache/getAllCacheConfigsFromConfig.d.ts +1 -1
- package/dist/pipeline/src/build/cache/getAllCacheConfigsFromConfig.js +23 -16
- package/dist/pipeline/src/build/cache/transformLegacyJobCache.d.ts +1 -1
- package/dist/pipeline/src/build/cache/transformLegacyJobCache.js +12 -14
- package/dist/pipeline/src/build/custom/buildJob.d.ts +1 -1
- package/dist/pipeline/src/build/custom/buildJob.js +16 -16
- package/dist/pipeline/src/build/custom/index.d.ts +1 -1
- package/dist/pipeline/src/build/custom/index.js +8 -7
- package/dist/pipeline/src/build/custom/testJob.d.ts +2 -2
- package/dist/pipeline/src/build/custom/testJob.js +71 -67
- package/dist/pipeline/src/build/docker.d.ts +45 -51
- package/dist/pipeline/src/build/docker.js +139 -116
- package/dist/pipeline/src/build/index.d.ts +17 -13
- package/dist/pipeline/src/build/index.js +73 -80
- package/dist/pipeline/src/build/node/buildJob.d.ts +1 -1
- package/dist/pipeline/src/build/node/buildJob.js +45 -35
- package/dist/pipeline/src/build/node/cache.d.ts +1 -1
- package/dist/pipeline/src/build/node/cache.js +79 -52
- package/dist/pipeline/src/build/node/constants.d.ts +4 -4
- package/dist/pipeline/src/build/node/constants.js +6 -8
- package/dist/pipeline/src/build/node/index.d.ts +1 -1
- package/dist/pipeline/src/build/node/index.js +17 -13
- package/dist/pipeline/src/build/node/meteor.d.ts +1 -1
- package/dist/pipeline/src/build/node/meteor.js +59 -40
- package/dist/pipeline/src/build/node/testJob.d.ts +1 -1
- package/dist/pipeline/src/build/node/testJob.js +100 -75
- package/dist/pipeline/src/build/node/yarn.d.ts +2 -2
- package/dist/pipeline/src/build/node/yarn.js +51 -33
- package/dist/pipeline/src/build/rails/build.d.ts +1 -1
- package/dist/pipeline/src/build/rails/build.js +44 -37
- package/dist/pipeline/src/build/rails/index.d.ts +1 -1
- package/dist/pipeline/src/build/rails/index.js +8 -7
- package/dist/pipeline/src/build/rails/testJob.d.ts +1 -1
- package/dist/pipeline/src/build/rails/testJob.js +101 -71
- package/dist/pipeline/src/build/types.d.ts +324 -324
- package/dist/pipeline/src/build/types.js +10 -10
- package/dist/pipeline/src/catci/shippedCatci.d.ts +3 -3
- package/dist/pipeline/src/catci/shippedCatci.js +22 -21
- package/dist/pipeline/src/catenv/index.d.ts +3 -3
- package/dist/pipeline/src/catenv/index.js +8 -10
- package/dist/pipeline/src/config/configruedEnvs.d.ts +1 -1
- package/dist/pipeline/src/config/configruedEnvs.js +23 -18
- package/dist/pipeline/src/config/index.d.ts +1 -1
- package/dist/pipeline/src/config/index.js +16 -23
- package/dist/pipeline/src/config/readConfig.d.ts +4 -4
- package/dist/pipeline/src/config/readConfig.js +37 -42
- package/dist/pipeline/src/context/createAllComponentsContext.d.ts +4 -8
- package/dist/pipeline/src/context/createAllComponentsContext.js +16 -22
- package/dist/pipeline/src/context/createComponentContext.d.ts +6 -6
- package/dist/pipeline/src/context/createComponentContext.js +96 -87
- package/dist/pipeline/src/context/createWorkspaceContext.d.ts +8 -15
- package/dist/pipeline/src/context/createWorkspaceContext.js +28 -37
- package/dist/pipeline/src/context/getBuildInfoVariables.d.ts +2 -2
- package/dist/pipeline/src/context/getBuildInfoVariables.js +21 -22
- package/dist/pipeline/src/context/getEnvConfig.d.ts +1 -1
- package/dist/pipeline/src/context/getEnvConfig.js +28 -29
- package/dist/pipeline/src/context/getEnvType.d.ts +2 -2
- package/dist/pipeline/src/context/getEnvType.js +9 -10
- package/dist/pipeline/src/context/getEnvironment.d.ts +1 -1
- package/dist/pipeline/src/context/getEnvironment.js +16 -20
- package/dist/pipeline/src/context/getEnvironmentContext.d.ts +1 -6
- package/dist/pipeline/src/context/getEnvironmentContext.js +28 -35
- package/dist/pipeline/src/context/getEnvironmentVariables.d.ts +19 -19
- package/dist/pipeline/src/context/getEnvironmentVariables.js +95 -102
- package/dist/pipeline/src/context/getLabels.d.ts +7 -7
- package/dist/pipeline/src/context/getLabels.js +25 -26
- package/dist/pipeline/src/context/getReviewSlug.d.ts +1 -1
- package/dist/pipeline/src/context/getReviewSlug.js +12 -14
- package/dist/pipeline/src/context/index.d.ts +1 -1
- package/dist/pipeline/src/context/index.js +16 -23
- package/dist/pipeline/src/context/transformJobOnlyVars.d.ts +3 -3
- package/dist/pipeline/src/context/transformJobOnlyVars.js +21 -21
- package/dist/pipeline/src/context/utils/envVars.d.ts +3 -3
- package/dist/pipeline/src/context/utils/envVars.js +20 -26
- package/dist/pipeline/src/customImages/hash.d.ts +7 -7
- package/dist/pipeline/src/customImages/hash.js +53 -59
- package/dist/pipeline/src/customImages/jobImagesPlan.d.ts +44 -46
- package/dist/pipeline/src/customImages/jobImagesPlan.js +131 -145
- package/dist/pipeline/src/customImages/jobImagesPlan.js.map +1 -1
- package/dist/pipeline/src/customImages/shippedImages.d.ts +1 -10
- package/dist/pipeline/src/customImages/shippedImages.js +28 -38
- package/dist/pipeline/src/customImages/shippedImages.js.map +1 -1
- package/dist/pipeline/src/defaults/index.d.ts +1 -1
- package/dist/pipeline/src/defaults/index.js +4 -6
- package/dist/pipeline/src/deploy/base/deploy.d.ts +2 -2
- package/dist/pipeline/src/deploy/base/deploy.js +113 -92
- package/dist/pipeline/src/deploy/base/index.d.ts +4 -4
- package/dist/pipeline/src/deploy/base/index.js +10 -6
- package/dist/pipeline/src/deploy/base/rollback.d.ts +2 -2
- package/dist/pipeline/src/deploy/base/rollback.js +27 -31
- package/dist/pipeline/src/deploy/base/stop.d.ts +2 -2
- package/dist/pipeline/src/deploy/base/stop.js +26 -31
- package/dist/pipeline/src/deploy/base/variables.d.ts +4 -4
- package/dist/pipeline/src/deploy/base/variables.js +6 -8
- package/dist/pipeline/src/deploy/cloudRun/artifactsRegistry.d.ts +1 -1
- package/dist/pipeline/src/deploy/cloudRun/artifactsRegistry.js +67 -55
- package/dist/pipeline/src/deploy/cloudRun/cleanup.d.ts +1 -1
- package/dist/pipeline/src/deploy/cloudRun/cleanup.js +17 -16
- package/dist/pipeline/src/deploy/cloudRun/cloudRunRevisions.d.ts +1 -1
- package/dist/pipeline/src/deploy/cloudRun/cloudRunRevisions.js +41 -44
- package/dist/pipeline/src/deploy/cloudRun/createJobs/cloudRunJobs.d.ts +4 -4
- package/dist/pipeline/src/deploy/cloudRun/createJobs/cloudRunJobs.js +63 -58
- package/dist/pipeline/src/deploy/cloudRun/createJobs/cloudRunServices.d.ts +1 -1
- package/dist/pipeline/src/deploy/cloudRun/createJobs/cloudRunServices.js +73 -63
- package/dist/pipeline/src/deploy/cloudRun/createJobs/cloudRunWorkerPools.d.ts +1 -1
- package/dist/pipeline/src/deploy/cloudRun/createJobs/cloudRunWorkerPools.js +38 -38
- package/dist/pipeline/src/deploy/cloudRun/createJobs/common.d.ts +7 -7
- package/dist/pipeline/src/deploy/cloudRun/createJobs/common.js +37 -35
- package/dist/pipeline/src/deploy/cloudRun/createJobs/constants.d.ts +1 -1
- package/dist/pipeline/src/deploy/cloudRun/createJobs/constants.js +3 -5
- package/dist/pipeline/src/deploy/cloudRun/createJobs/execute/onDeploy.d.ts +1 -1
- package/dist/pipeline/src/deploy/cloudRun/createJobs/execute/onDeploy.js +67 -57
- package/dist/pipeline/src/deploy/cloudRun/createJobs/execute/schedules.d.ts +1 -1
- package/dist/pipeline/src/deploy/cloudRun/createJobs/execute/schedules.js +139 -130
- package/dist/pipeline/src/deploy/cloudRun/createJobs/getCloudRunDeployScripts.d.ts +1 -1
- package/dist/pipeline/src/deploy/cloudRun/createJobs/getCloudRunDeployScripts.js +29 -10
- package/dist/pipeline/src/deploy/cloudRun/createJobs/getCloudRunStopScripts.d.ts +1 -1
- package/dist/pipeline/src/deploy/cloudRun/createJobs/getCloudRunStopScripts.js +23 -9
- package/dist/pipeline/src/deploy/cloudRun/createJobs/healthCheck.d.ts +3 -3
- package/dist/pipeline/src/deploy/cloudRun/createJobs/healthCheck.js +39 -36
- package/dist/pipeline/src/deploy/cloudRun/createJobs/index.d.ts +1 -1
- package/dist/pipeline/src/deploy/cloudRun/createJobs/index.js +37 -36
- package/dist/pipeline/src/deploy/cloudRun/createJobs/volumes.d.ts +1 -1
- package/dist/pipeline/src/deploy/cloudRun/createJobs/volumes.js +13 -19
- package/dist/pipeline/src/deploy/cloudRun/index.d.ts +1 -1
- package/dist/pipeline/src/deploy/cloudRun/index.js +100 -91
- package/dist/pipeline/src/deploy/cloudRun/utils/cloudRunExecutionUrl.d.ts +5 -9
- package/dist/pipeline/src/deploy/cloudRun/utils/cloudRunExecutionUrl.js +7 -13
- package/dist/pipeline/src/deploy/cloudRun/utils/createArgsString.d.ts +1 -1
- package/dist/pipeline/src/deploy/cloudRun/utils/createArgsString.js +17 -13
- package/dist/pipeline/src/deploy/cloudRun/utils/database.d.ts +5 -5
- package/dist/pipeline/src/deploy/cloudRun/utils/database.js +82 -49
- package/dist/pipeline/src/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.d.ts +1 -1
- package/dist/pipeline/src/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.js +6 -6
- package/dist/pipeline/src/deploy/cloudRun/utils/getJobOrServiceArgs.d.ts +1 -1
- package/dist/pipeline/src/deploy/cloudRun/utils/getJobOrServiceArgs.js +9 -7
- package/dist/pipeline/src/deploy/cloudRun/utils/getServiceName.d.ts +1 -1
- package/dist/pipeline/src/deploy/cloudRun/utils/getServiceName.js +5 -7
- package/dist/pipeline/src/deploy/cloudRun/utils/jobName.d.ts +1 -1
- package/dist/pipeline/src/deploy/cloudRun/utils/jobName.js +3 -5
- package/dist/pipeline/src/deploy/cloudRun/utils/removeFirstLinesFromCommandOutput.d.ts +1 -1
- package/dist/pipeline/src/deploy/cloudRun/utils/removeFirstLinesFromCommandOutput.js +4 -6
- package/dist/pipeline/src/deploy/cloudSql/utils.d.ts +1 -1
- package/dist/pipeline/src/deploy/cloudSql/utils.js +9 -7
- package/dist/pipeline/src/deploy/custom/deployJob.d.ts +1 -1
- package/dist/pipeline/src/deploy/custom/deployJob.js +34 -30
- package/dist/pipeline/src/deploy/custom/index.d.ts +1 -1
- package/dist/pipeline/src/deploy/custom/index.js +7 -9
- package/dist/pipeline/src/deploy/dockerTag/deployJob.d.ts +1 -1
- package/dist/pipeline/src/deploy/dockerTag/deployJob.js +22 -18
- package/dist/pipeline/src/deploy/dockerTag/index.d.ts +1 -1
- package/dist/pipeline/src/deploy/dockerTag/index.js +7 -9
- package/dist/pipeline/src/deploy/index.d.ts +13 -11
- package/dist/pipeline/src/deploy/index.js +20 -27
- package/dist/pipeline/src/deploy/kubernetes/additionalSecretKeys.d.ts +3 -5
- package/dist/pipeline/src/deploy/kubernetes/additionalSecretKeys.js +19 -25
- package/dist/pipeline/src/deploy/kubernetes/cloudSql/index.d.ts +7 -7
- package/dist/pipeline/src/deploy/kubernetes/cloudSql/index.js +35 -36
- package/dist/pipeline/src/deploy/kubernetes/deployJob.d.ts +1 -1
- package/dist/pipeline/src/deploy/kubernetes/deployJob.js +61 -46
- package/dist/pipeline/src/deploy/kubernetes/index.d.ts +1 -1
- package/dist/pipeline/src/deploy/kubernetes/index.js +45 -54
- package/dist/pipeline/src/deploy/kubernetes/kubeEnv.d.ts +3 -3
- package/dist/pipeline/src/deploy/kubernetes/kubeEnv.js +34 -35
- package/dist/pipeline/src/deploy/kubernetes/kubeValues.d.ts +84 -84
- package/dist/pipeline/src/deploy/kubernetes/kubeValues.js +63 -70
- package/dist/pipeline/src/deploy/kubernetes/mongodb.d.ts +28 -28
- package/dist/pipeline/src/deploy/kubernetes/mongodb.js +93 -88
- package/dist/pipeline/src/deploy/types/base.d.ts +27 -27
- package/dist/pipeline/src/deploy/types/base.js +2 -4
- package/dist/pipeline/src/deploy/types/custom.d.ts +25 -25
- package/dist/pipeline/src/deploy/types/custom.js +2 -4
- package/dist/pipeline/src/deploy/types/dockerTag.d.ts +10 -10
- package/dist/pipeline/src/deploy/types/dockerTag.js +2 -4
- package/dist/pipeline/src/deploy/types/executeBase.d.ts +15 -15
- package/dist/pipeline/src/deploy/types/executeBase.js +2 -4
- package/dist/pipeline/src/deploy/types/googleCloudRun.d.ts +439 -439
- package/dist/pipeline/src/deploy/types/googleCloudRun.js +14 -16
- package/dist/pipeline/src/deploy/types/index.d.ts +6 -6
- package/dist/pipeline/src/deploy/types/index.js +21 -27
- package/dist/pipeline/src/deploy/types/kubernetes.d.ts +255 -255
- package/dist/pipeline/src/deploy/types/kubernetes.js +2 -4
- package/dist/pipeline/src/deploy/utils.d.ts +1 -1
- package/dist/pipeline/src/deploy/utils.js +21 -23
- package/dist/pipeline/src/globalScriptFunctions/index.d.ts +6 -6
- package/dist/pipeline/src/globalScriptFunctions/index.js +19 -21
- package/dist/pipeline/src/index.d.ts +1 -1
- package/dist/pipeline/src/index.js +16 -23
- package/dist/pipeline/src/pipeline/agent/createAgentContext.d.ts +19 -19
- package/dist/pipeline/src/pipeline/agent/createAgentContext.js +37 -41
- package/dist/pipeline/src/pipeline/agent/createAgentEventJob.d.ts +2 -2
- package/dist/pipeline/src/pipeline/agent/createAgentEventJob.js +27 -26
- package/dist/pipeline/src/pipeline/agent/createAgentReviewJob.d.ts +2 -2
- package/dist/pipeline/src/pipeline/agent/createAgentReviewJob.js +43 -35
- package/dist/pipeline/src/pipeline/agent/createJobsForAgentContext.d.ts +1 -1
- package/dist/pipeline/src/pipeline/agent/createJobsForAgentContext.js +5 -7
- package/dist/pipeline/src/pipeline/agent/prompts.d.ts +2 -2
- package/dist/pipeline/src/pipeline/agent/prompts.js +14 -32
- package/dist/pipeline/src/pipeline/agent/shared.d.ts +4 -6
- package/dist/pipeline/src/pipeline/agent/shared.js +34 -36
- package/dist/pipeline/src/pipeline/agent/utils.d.ts +1 -1
- package/dist/pipeline/src/pipeline/agent/utils.js +9 -11
- package/dist/pipeline/src/pipeline/createAllJobs.d.ts +13 -17
- package/dist/pipeline/src/pipeline/createAllJobs.js +44 -56
- package/dist/pipeline/src/pipeline/createJobsForComponent.d.ts +1 -1
- package/dist/pipeline/src/pipeline/createJobsForComponent.js +30 -27
- package/dist/pipeline/src/pipeline/createJobsForWorkspace.d.ts +1 -1
- package/dist/pipeline/src/pipeline/createJobsForWorkspace.js +6 -8
- package/dist/pipeline/src/pipeline/generatePipelineFiles.d.ts +1 -1
- package/dist/pipeline/src/pipeline/generatePipelineFiles.js +35 -45
- package/dist/pipeline/src/pipeline/index.d.ts +1 -1
- package/dist/pipeline/src/pipeline/index.js +16 -23
- package/dist/pipeline/src/pipeline/packageManager.d.ts +1 -1
- package/dist/pipeline/src/pipeline/packageManager.js +59 -47
- package/dist/pipeline/src/pipeline/resolveRequirements.d.ts +1 -1
- package/dist/pipeline/src/pipeline/resolveRequirements.js +63 -66
- package/dist/pipeline/src/release/index.d.ts +11 -11
- package/dist/pipeline/src/release/index.js +12 -17
- package/dist/pipeline/src/rules/index.d.ts +1 -1
- package/dist/pipeline/src/rules/index.js +15 -15
- package/dist/pipeline/src/runner/index.d.ts +5 -10
- package/dist/pipeline/src/runner/index.js +9 -14
- package/dist/pipeline/src/runner/index.js.map +1 -1
- package/dist/pipeline/src/store/index.d.ts +5 -5
- package/dist/pipeline/src/store/index.js +31 -31
- package/dist/pipeline/src/types/agent.d.ts +15 -15
- package/dist/pipeline/src/types/agent.js +2 -4
- package/dist/pipeline/src/types/config.d.ts +244 -248
- package/dist/pipeline/src/types/config.js +28 -24
- package/dist/pipeline/src/types/context.d.ts +104 -104
- package/dist/pipeline/src/types/context.js +7 -9
- package/dist/pipeline/src/types/environmentContext.d.ts +25 -25
- package/dist/pipeline/src/types/environmentContext.js +2 -4
- package/dist/pipeline/src/types/github-types.d.ts +41 -41
- package/dist/pipeline/src/types/github-types.js +2 -4
- package/dist/pipeline/src/types/gitlab-ci-yml.d.ts +497 -497
- package/dist/pipeline/src/types/gitlab-ci-yml.js +2 -4
- package/dist/pipeline/src/types/gitlab-types.d.ts +15 -15
- package/dist/pipeline/src/types/gitlab-types.js +2 -4
- package/dist/pipeline/src/types/hooks.d.ts +26 -26
- package/dist/pipeline/src/types/hooks.js +2 -4
- package/dist/pipeline/src/types/index.d.ts +1 -1
- package/dist/pipeline/src/types/index.js +16 -23
- package/dist/pipeline/src/types/jobDefinition.d.ts +3 -3
- package/dist/pipeline/src/types/jobDefinition.js +2 -4
- package/dist/pipeline/src/types/jobs.d.ts +172 -171
- package/dist/pipeline/src/types/jobs.js +28 -15
- package/dist/pipeline/src/types/pipeline.d.ts +1 -1
- package/dist/pipeline/src/types/pipeline.js +2 -4
- package/dist/pipeline/src/types/release.d.ts +11 -11
- package/dist/pipeline/src/types/release.js +2 -4
- package/dist/pipeline/src/types/utils.d.ts +3 -1
- package/dist/pipeline/src/types/utils.js +2 -4
- package/dist/pipeline/src/utils/gitlab.d.ts +7 -7
- package/dist/pipeline/src/utils/gitlab.js +15 -12
- package/dist/pipeline/src/utils/index.d.ts +1 -1
- package/dist/pipeline/src/utils/index.js +9 -12
- package/dist/pipeline/src/utils/jsonParse.d.ts +1 -1
- package/dist/pipeline/src/utils/jsonParse.js +10 -11
- package/dist/pipeline/src/utils/measureTime.d.ts +4 -4
- package/dist/pipeline/src/utils/measureTime.js +34 -39
- package/dist/pipeline/src/utils/removeUndefined.d.ts +1 -1
- package/dist/pipeline/src/utils/removeUndefined.js +4 -6
- package/dist/pipeline/src/utils/writeFiles.d.ts +16 -16
- package/dist/pipeline/src/utils/writeFiles.js +67 -61
- package/dist/pipeline/src/variables/VariableValue.d.ts +1 -1
- package/dist/pipeline/src/variables/VariableValue.js +2 -4
- package/dist/pipeline/src/variables/VariableValueContainingReferences.d.ts +12 -12
- package/dist/pipeline/src/variables/VariableValueContainingReferences.js +51 -45
- package/dist/pipeline/src/variables/resolveAllReferences.d.ts +1 -1
- package/dist/pipeline/src/variables/resolveAllReferences.js +18 -17
- package/dist/pipeline/src/variables/resolveAllReferencesOnce.d.ts +2 -2
- package/dist/pipeline/src/variables/resolveAllReferencesOnce.js +17 -14
- package/dist/pipeline/src/variables/resolveReferencesOnce.d.ts +3 -3
- package/dist/pipeline/src/variables/resolveReferencesOnce.js +16 -17
- package/dist/pipeline/src/verify/createVerifyJobs.d.ts +1 -1
- package/dist/pipeline/src/verify/createVerifyJobs.js +62 -55
- package/dist/pipeline/src/verify/index.d.ts +1 -1
- package/dist/pipeline/src/verify/index.js +16 -23
- package/dist/pipeline/src/verify/types.d.ts +11 -11
- package/dist/pipeline/src/verify/types.js +2 -4
- package/dist/skills/catladder-cli/references/commands.md +37 -2
- package/dist/skills/catladder-pipelines/SKILL.md +6 -6
- package/dist/skills/catladder-secrets/SKILL.md +42 -9
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -7
- package/src/commands/index.ts +4 -0
- package/src/commands/project/commandConfigSecrets.ts +76 -15
- package/src/commands/project/secrets/__tests__/document.test.ts +122 -0
- package/src/commands/project/secrets/commandSecretsList.ts +75 -0
- package/src/commands/project/secrets/commandSecretsPull.ts +55 -0
- package/src/commands/project/secrets/commandSecretsPush.ts +100 -0
- package/src/commands/project/secrets/commandSecretsSet.ts +102 -0
- package/src/commands/project/secrets/document.ts +269 -0
- package/src/commands/project/secrets/parseKeysInput.ts +8 -0
- package/src/commands/project/secrets/scope.ts +151 -0
- package/src/utils/readStdin.ts +8 -0
- package/babel-inline.json +0 -11
- package/dist/bundles/runner-images/semantic-release-central.Dockerfile +0 -36
- package/dist/cli/src/apps/cli/commands/project/commandConfigSecrets.d.ts +0 -2
- package/dist/cli/src/apps/cli/commands/project/commandConfigSecrets.js +0 -192
- package/dist/cli/src/apps/cli/commands/project/commandConfigSecrets.js.map +0 -1
- package/dist/pipeline/src/constants.d.ts +0 -2
- package/dist/pipeline/src/constants.js +0 -8
- package/dist/pipeline/src/constants.js.map +0 -1
- package/dist/runner-images/semantic-release-central.Dockerfile +0 -36
- package/src/apps/cli/commands/project/commandConfigSecrets.ts +0 -322
package/package.json
CHANGED
|
@@ -53,13 +53,12 @@
|
|
|
53
53
|
}
|
|
54
54
|
],
|
|
55
55
|
"license": "MIT",
|
|
56
|
-
"version": "0.0.0-next-
|
|
56
|
+
"version": "0.0.0-next-1c65899f",
|
|
57
57
|
"scripts": {
|
|
58
58
|
"lint": "eslint \"src/**/*.ts\"",
|
|
59
59
|
"lint:fix": "eslint \"src/**/*.ts\" --fix",
|
|
60
60
|
"test": "yarn run lint",
|
|
61
|
-
"build": "yarn build:compile && yarn build:
|
|
62
|
-
"build:inline-variables": "yarn babel --keep-file-extension --extensions \".ts,.js\" --config-file ./babel-inline.json dist --out-dir dist",
|
|
61
|
+
"build": "yarn build:compile && yarn build:bundle && yarn build:copy-images && yarn build:skill-cli-reference && yarn build:copy-skills",
|
|
63
62
|
"build:bundle": "./scripts/bundle",
|
|
64
63
|
"build:copy-images": "rm -rf dist/runner-images dist/bundles/runner-images && cp -R ../runner-images dist/runner-images && cp -R ../runner-images dist/bundles/runner-images",
|
|
65
64
|
"build:copy-skills": "rm -rf dist/skills dist/bundles/skills && cp -R ../skills dist/skills && cp -R ../skills dist/bundles/skills",
|
|
@@ -78,9 +77,6 @@
|
|
|
78
77
|
"node": ">=18.0.0"
|
|
79
78
|
},
|
|
80
79
|
"devDependencies": {
|
|
81
|
-
"@babel/cli": "^7.28.6",
|
|
82
|
-
"@babel/core": "^7.29.0",
|
|
83
|
-
"@babel/plugin-syntax-typescript": "^7.28.6",
|
|
84
80
|
"@changesets/parse": "^0.4.3",
|
|
85
81
|
"@gitbeaker/rest": "^39.28.0",
|
|
86
82
|
"@inquirer/prompts": "^8.4.3",
|
|
@@ -96,7 +92,6 @@
|
|
|
96
92
|
"@types/update-notifier": "^2.5.0",
|
|
97
93
|
"@types/websocket": "^0.0.40",
|
|
98
94
|
"@types/yargs": "^17.0.33",
|
|
99
|
-
"babel-plugin-transform-inline-environment-variables": "^0.4.4",
|
|
100
95
|
"child-process-promise": "^2.2.1",
|
|
101
96
|
"clipboardy": "^2.0.0",
|
|
102
97
|
"command-exists-promise": "^2.0.2",
|
package/src/commands/index.ts
CHANGED
|
@@ -14,6 +14,10 @@ export { commandOpenEnv } from "./project/commandOpenEnv";
|
|
|
14
14
|
export { commandOpenGit } from "./project/commandOpenGit";
|
|
15
15
|
export { commandCloudSqlProxy } from "./project/commandCloudSqlProxy";
|
|
16
16
|
export { commandConfigSecrets } from "./project/commandConfigSecrets";
|
|
17
|
+
export { commandSecretsPull } from "./project/secrets/commandSecretsPull";
|
|
18
|
+
export { commandSecretsPush } from "./project/secrets/commandSecretsPush";
|
|
19
|
+
export { commandSecretsSet } from "./project/secrets/commandSecretsSet";
|
|
20
|
+
export { commandSecretsList } from "./project/secrets/commandSecretsList";
|
|
17
21
|
export { commandSecretsClearBackups } from "./project/commandSecretsClearBackups";
|
|
18
22
|
export { commandSecretsSyncGithub } from "./project/commandSecretsSyncGithub";
|
|
19
23
|
export { commandOpenLogs } from "./project/commandOpenLogs";
|
|
@@ -1,31 +1,92 @@
|
|
|
1
|
+
import { stripIndents } from "common-tags";
|
|
1
2
|
import { defineCommand } from "../../core/defineCommand";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
3
|
+
import { editAsFile } from "../../utils/editAsFile";
|
|
4
|
+
import { delay } from "../../utils/promise";
|
|
5
|
+
import {
|
|
6
|
+
buildSecretsDocument,
|
|
7
|
+
checkSecretsDocument,
|
|
8
|
+
collectSecretsWrites,
|
|
9
|
+
writeSecretsAndMirror,
|
|
10
|
+
} from "./secrets/document";
|
|
11
|
+
import {
|
|
12
|
+
formatScope,
|
|
13
|
+
getScopedSecretKeys,
|
|
14
|
+
resolveSecretsScope,
|
|
15
|
+
secretsScopeChoices,
|
|
16
|
+
} from "./secrets/scope";
|
|
17
|
+
import { parseKeysInput } from "./secrets/parseKeysInput";
|
|
4
18
|
|
|
5
|
-
// This command delegates to the existing implementation which uses
|
|
6
|
-
// editAsFile (opens editor) and has retry loops with confirm prompts.
|
|
7
|
-
// Full migration to CommandIO would require reworking the editor flow,
|
|
8
|
-
// so for now we bridge it.
|
|
9
19
|
export const commandConfigSecrets = defineCommand({
|
|
10
20
|
name: "project config-secrets",
|
|
11
|
-
description: "setup/update secrets
|
|
21
|
+
description: "setup/update secrets in the vault via your editor",
|
|
12
22
|
group: "project",
|
|
13
23
|
inputs: {
|
|
14
24
|
envComponent: {
|
|
15
25
|
type: "string",
|
|
16
|
-
message: "
|
|
26
|
+
message: "scope: env:component, env:, :component or empty for everything",
|
|
17
27
|
positional: true,
|
|
18
28
|
required: false,
|
|
19
|
-
choices: async () =>
|
|
29
|
+
choices: async () => secretsScopeChoices(),
|
|
30
|
+
},
|
|
31
|
+
key: {
|
|
32
|
+
type: "string",
|
|
33
|
+
message: "only edit these secrets (comma-separated keys)",
|
|
34
|
+
required: false,
|
|
20
35
|
},
|
|
21
36
|
},
|
|
22
37
|
execute: async (ctx) => {
|
|
23
38
|
const envComponent = await ctx.get("envComponent");
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
39
|
+
const keys = parseKeysInput(await ctx.get("key"));
|
|
40
|
+
|
|
41
|
+
if (!ctx.interactive) {
|
|
42
|
+
throw new Error(
|
|
43
|
+
"project config-secrets opens an editor and needs an interactive terminal — " +
|
|
44
|
+
"use `project secrets-pull`, `project secrets-push` or `project secrets-set` instead",
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const scope = await resolveSecretsScope(envComponent);
|
|
49
|
+
const scoped = await getScopedSecretKeys(scope, keys);
|
|
50
|
+
|
|
51
|
+
let document = await buildSecretsDocument(ctx, scoped);
|
|
52
|
+
let hasErrors = true;
|
|
53
|
+
while (hasErrors) {
|
|
54
|
+
document = await editAsFile(
|
|
55
|
+
document,
|
|
56
|
+
stripIndents`
|
|
57
|
+
Please fill in all secrets for:
|
|
58
|
+
|
|
59
|
+
${formatScope(scoped)}
|
|
60
|
+
|
|
61
|
+
`,
|
|
62
|
+
);
|
|
63
|
+
const problems = checkSecretsDocument(document, scoped, {
|
|
64
|
+
requireComplete: true,
|
|
65
|
+
});
|
|
66
|
+
hasErrors = problems.length > 0;
|
|
67
|
+
if (hasErrors) {
|
|
68
|
+
ctx.log("");
|
|
69
|
+
ctx.log("😿 Oh no! There is something wrong:");
|
|
70
|
+
ctx.log("");
|
|
71
|
+
problems.forEach((problem) => ctx.log(problem));
|
|
72
|
+
ctx.log("");
|
|
73
|
+
|
|
74
|
+
await delay(1000);
|
|
75
|
+
const shouldContinue = await ctx.confirm("Try again? 🤔");
|
|
76
|
+
if (!shouldContinue) {
|
|
77
|
+
throw new Error("abort");
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const { writes, skipped } = collectSecretsWrites(document, scoped);
|
|
83
|
+
if (skipped.length > 0) {
|
|
84
|
+
ctx.log("");
|
|
85
|
+
ctx.log("⏭️ these secrets are still unset and will not be written:");
|
|
86
|
+
skipped.forEach((entry) => ctx.log(` - ${entry}`));
|
|
87
|
+
}
|
|
88
|
+
await writeSecretsAndMirror(ctx, writes);
|
|
89
|
+
ctx.log("done! 😻");
|
|
90
|
+
ctx.log("");
|
|
30
91
|
},
|
|
31
92
|
});
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import {
|
|
3
|
+
FILL_ME,
|
|
4
|
+
checkSecretsDocument,
|
|
5
|
+
collectSecretsWrites,
|
|
6
|
+
} from "../document";
|
|
7
|
+
import { parseKeysInput } from "../parseKeysInput";
|
|
8
|
+
import type { ScopedSecretKeys } from "../scope";
|
|
9
|
+
|
|
10
|
+
const scoped: ScopedSecretKeys = [
|
|
11
|
+
{ env: "dev", componentName: "web", keys: ["API_KEY", "SMTP_PASSWORD"] },
|
|
12
|
+
{ env: "prod", componentName: "web", keys: ["API_KEY", "SMTP_PASSWORD"] },
|
|
13
|
+
{ env: "dev", componentName: "worker", keys: ["QUEUE_TOKEN"] },
|
|
14
|
+
];
|
|
15
|
+
|
|
16
|
+
describe("checkSecretsDocument", () => {
|
|
17
|
+
it("accepts a complete document", () => {
|
|
18
|
+
const problems = checkSecretsDocument(
|
|
19
|
+
{
|
|
20
|
+
web: {
|
|
21
|
+
dev: { API_KEY: "a", SMTP_PASSWORD: "b" },
|
|
22
|
+
prod: { API_KEY: "c", SMTP_PASSWORD: "d" },
|
|
23
|
+
},
|
|
24
|
+
worker: { dev: { QUEUE_TOKEN: "e" } },
|
|
25
|
+
},
|
|
26
|
+
scoped,
|
|
27
|
+
{ requireComplete: true },
|
|
28
|
+
);
|
|
29
|
+
expect(problems).toEqual([]);
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it("accepts a partial document when completeness is not required", () => {
|
|
33
|
+
const problems = checkSecretsDocument(
|
|
34
|
+
{ web: { prod: { API_KEY: "rotated" } } },
|
|
35
|
+
scoped,
|
|
36
|
+
{ requireComplete: false },
|
|
37
|
+
);
|
|
38
|
+
expect(problems).toEqual([]);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
it("reports missing keys when completeness is required", () => {
|
|
42
|
+
const problems = checkSecretsDocument(
|
|
43
|
+
{ web: { prod: { API_KEY: "rotated" } } },
|
|
44
|
+
scoped,
|
|
45
|
+
{ requireComplete: true },
|
|
46
|
+
);
|
|
47
|
+
expect(problems).toEqual([
|
|
48
|
+
'"dev:web": "API_KEY" has not been provided',
|
|
49
|
+
'"dev:web": "SMTP_PASSWORD" has not been provided',
|
|
50
|
+
'"prod:web": "SMTP_PASSWORD" has not been provided',
|
|
51
|
+
'"dev:worker": "QUEUE_TOKEN" has not been provided',
|
|
52
|
+
]);
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it("rejects undeclared keys, components and envs", () => {
|
|
56
|
+
const problems = checkSecretsDocument(
|
|
57
|
+
{
|
|
58
|
+
web: {
|
|
59
|
+
dev: { TYPO_KEY: "a" },
|
|
60
|
+
stage: { API_KEY: "b" },
|
|
61
|
+
},
|
|
62
|
+
api: { dev: { API_KEY: "c" } },
|
|
63
|
+
},
|
|
64
|
+
scoped,
|
|
65
|
+
{ requireComplete: false },
|
|
66
|
+
);
|
|
67
|
+
expect(problems).toEqual([
|
|
68
|
+
'"dev:web": "TYPO_KEY" is not declared in the config (or filtered out by --key)',
|
|
69
|
+
'"stage:web" is not in this scope — remove it or widen the scope',
|
|
70
|
+
'"api" is not a component in this scope — remove it or widen the scope',
|
|
71
|
+
]);
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
describe("collectSecretsWrites", () => {
|
|
76
|
+
it("collects only provided values and skips placeholders", () => {
|
|
77
|
+
const { writes, skipped } = collectSecretsWrites(
|
|
78
|
+
{
|
|
79
|
+
web: {
|
|
80
|
+
dev: { API_KEY: "a", SMTP_PASSWORD: FILL_ME },
|
|
81
|
+
prod: { API_KEY: null as unknown as string },
|
|
82
|
+
},
|
|
83
|
+
worker: { dev: {} },
|
|
84
|
+
},
|
|
85
|
+
scoped,
|
|
86
|
+
);
|
|
87
|
+
expect(writes).toEqual([
|
|
88
|
+
{ env: "dev", componentName: "web", secrets: { API_KEY: "a" } },
|
|
89
|
+
]);
|
|
90
|
+
expect(skipped).toEqual(["dev:web SMTP_PASSWORD", "prod:web API_KEY"]);
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
it("keeps objects and empty strings as values", () => {
|
|
94
|
+
const { writes, skipped } = collectSecretsWrites(
|
|
95
|
+
{ web: { dev: { API_KEY: "", SMTP_PASSWORD: { user: "a" } } } },
|
|
96
|
+
scoped,
|
|
97
|
+
);
|
|
98
|
+
expect(writes).toEqual([
|
|
99
|
+
{
|
|
100
|
+
env: "dev",
|
|
101
|
+
componentName: "web",
|
|
102
|
+
secrets: { API_KEY: "", SMTP_PASSWORD: { user: "a" } },
|
|
103
|
+
},
|
|
104
|
+
]);
|
|
105
|
+
expect(skipped).toEqual([]);
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
describe("parseKeysInput", () => {
|
|
110
|
+
it("splits and trims comma-separated keys", () => {
|
|
111
|
+
expect(parseKeysInput("API_KEY, SMTP_PASSWORD ,")).toEqual([
|
|
112
|
+
"API_KEY",
|
|
113
|
+
"SMTP_PASSWORD",
|
|
114
|
+
]);
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
it("returns undefined for empty input", () => {
|
|
118
|
+
expect(parseKeysInput(undefined)).toBeUndefined();
|
|
119
|
+
expect(parseKeysInput("")).toBeUndefined();
|
|
120
|
+
expect(parseKeysInput(" , ")).toBeUndefined();
|
|
121
|
+
});
|
|
122
|
+
});
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { getSecretVarName } from "@catladder/pipeline";
|
|
2
|
+
import { defineCommand } from "../../../core/defineCommand";
|
|
3
|
+
import {
|
|
4
|
+
getScopedSecretKeys,
|
|
5
|
+
resolveSecretsScope,
|
|
6
|
+
secretsScopeChoices,
|
|
7
|
+
} from "./scope";
|
|
8
|
+
import { parseKeysInput } from "./parseKeysInput";
|
|
9
|
+
|
|
10
|
+
export const commandSecretsList = defineCommand({
|
|
11
|
+
name: "project secrets-list",
|
|
12
|
+
description:
|
|
13
|
+
"lists the declared secrets of a scope with their set/unset status (values only with --reveal)",
|
|
14
|
+
group: "project",
|
|
15
|
+
inputs: {
|
|
16
|
+
envComponent: {
|
|
17
|
+
type: "string",
|
|
18
|
+
message: "scope: env:component, env:, :component or empty for everything",
|
|
19
|
+
positional: true,
|
|
20
|
+
required: false,
|
|
21
|
+
choices: async () => secretsScopeChoices(),
|
|
22
|
+
},
|
|
23
|
+
key: {
|
|
24
|
+
type: "string",
|
|
25
|
+
message: "only these secrets (comma-separated keys)",
|
|
26
|
+
required: false,
|
|
27
|
+
},
|
|
28
|
+
reveal: {
|
|
29
|
+
type: "boolean",
|
|
30
|
+
message: "also print the secret values",
|
|
31
|
+
default: false,
|
|
32
|
+
},
|
|
33
|
+
check: {
|
|
34
|
+
type: "boolean",
|
|
35
|
+
message: "exit with an error when any secret is unset (for CI/agents)",
|
|
36
|
+
default: false,
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
execute: async (ctx) => {
|
|
40
|
+
const scope = await resolveSecretsScope(await ctx.get("envComponent"));
|
|
41
|
+
const scoped = await getScopedSecretKeys(
|
|
42
|
+
scope,
|
|
43
|
+
parseKeysInput(await ctx.get("key")),
|
|
44
|
+
);
|
|
45
|
+
const reveal = await ctx.get("reveal");
|
|
46
|
+
|
|
47
|
+
const names = scoped.flatMap(({ env, componentName, keys }) =>
|
|
48
|
+
keys.map((key) => getSecretVarName(env, componentName, key)),
|
|
49
|
+
);
|
|
50
|
+
const values = await (await ctx.getVaultManager()).readSecrets(names, ctx);
|
|
51
|
+
|
|
52
|
+
let unsetCount = 0;
|
|
53
|
+
let setCount = 0;
|
|
54
|
+
for (const { env, componentName, keys } of scoped) {
|
|
55
|
+
for (const key of keys) {
|
|
56
|
+
const value = values[getSecretVarName(env, componentName, key)];
|
|
57
|
+
if (value === undefined) {
|
|
58
|
+
unsetCount += 1;
|
|
59
|
+
ctx.log(`🚨 ${env}:${componentName} ${key} (unset)`);
|
|
60
|
+
} else {
|
|
61
|
+
setCount += 1;
|
|
62
|
+
ctx.log(
|
|
63
|
+
`✅ ${env}:${componentName} ${key}` + (reveal ? ` = ${value}` : ""),
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
ctx.log("");
|
|
69
|
+
ctx.log(`${setCount} set, ${unsetCount} unset`);
|
|
70
|
+
|
|
71
|
+
if ((await ctx.get("check")) && unsetCount > 0) {
|
|
72
|
+
throw new Error(`${unsetCount} secrets are unset`);
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
});
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { writeFile } from "fs-extra";
|
|
2
|
+
import { stringify } from "yaml";
|
|
3
|
+
import { defineCommand } from "../../../core/defineCommand";
|
|
4
|
+
import { buildSecretsDocument } from "./document";
|
|
5
|
+
import {
|
|
6
|
+
getScopedSecretKeys,
|
|
7
|
+
resolveSecretsScope,
|
|
8
|
+
secretsScopeChoices,
|
|
9
|
+
} from "./scope";
|
|
10
|
+
import { parseKeysInput } from "./parseKeysInput";
|
|
11
|
+
|
|
12
|
+
export const commandSecretsPull = defineCommand({
|
|
13
|
+
name: "project secrets-pull",
|
|
14
|
+
description:
|
|
15
|
+
"prints the current secrets of a scope as yaml (unset ones as a placeholder) — edit and feed to secrets-push",
|
|
16
|
+
group: "project",
|
|
17
|
+
inputs: {
|
|
18
|
+
envComponent: {
|
|
19
|
+
type: "string",
|
|
20
|
+
message: "scope: env:component, env:, :component or empty for everything",
|
|
21
|
+
positional: true,
|
|
22
|
+
required: false,
|
|
23
|
+
choices: async () => secretsScopeChoices(),
|
|
24
|
+
},
|
|
25
|
+
key: {
|
|
26
|
+
type: "string",
|
|
27
|
+
message: "only these secrets (comma-separated keys)",
|
|
28
|
+
required: false,
|
|
29
|
+
},
|
|
30
|
+
out: {
|
|
31
|
+
type: "string",
|
|
32
|
+
message: "write the yaml to this file instead of stdout",
|
|
33
|
+
required: false,
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
execute: async (ctx) => {
|
|
37
|
+
const scope = await resolveSecretsScope(await ctx.get("envComponent"));
|
|
38
|
+
const scoped = await getScopedSecretKeys(
|
|
39
|
+
scope,
|
|
40
|
+
parseKeysInput(await ctx.get("key")),
|
|
41
|
+
);
|
|
42
|
+
const document = await buildSecretsDocument(ctx, scoped);
|
|
43
|
+
const yaml = stringify(document, { aliasDuplicateObjects: false });
|
|
44
|
+
|
|
45
|
+
const out = await ctx.get("out");
|
|
46
|
+
if (out) {
|
|
47
|
+
await writeFile(out, yaml);
|
|
48
|
+
ctx.log(
|
|
49
|
+
`wrote secrets to ${out} — ⚠️ contains secret values, don't commit it`,
|
|
50
|
+
);
|
|
51
|
+
} else {
|
|
52
|
+
ctx.log(yaml);
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
});
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { readFile } from "fs-extra";
|
|
2
|
+
import { parse } from "yaml";
|
|
3
|
+
import { defineCommand } from "../../../core/defineCommand";
|
|
4
|
+
import { readStdin } from "../../../utils/readStdin";
|
|
5
|
+
import type { SecretsDocument } from "./document";
|
|
6
|
+
import {
|
|
7
|
+
checkSecretsDocument,
|
|
8
|
+
collectSecretsWrites,
|
|
9
|
+
writeSecretsAndMirror,
|
|
10
|
+
} from "./document";
|
|
11
|
+
import {
|
|
12
|
+
getScopedSecretKeys,
|
|
13
|
+
resolveSecretsScope,
|
|
14
|
+
secretsScopeChoices,
|
|
15
|
+
} from "./scope";
|
|
16
|
+
import { parseKeysInput } from "./parseKeysInput";
|
|
17
|
+
|
|
18
|
+
export const commandSecretsPush = defineCommand({
|
|
19
|
+
name: "project secrets-push",
|
|
20
|
+
description:
|
|
21
|
+
"writes secrets from a yaml document (secrets-pull format, --file or stdin) to the vault; may be partial",
|
|
22
|
+
group: "project",
|
|
23
|
+
inputs: {
|
|
24
|
+
envComponent: {
|
|
25
|
+
type: "string",
|
|
26
|
+
message: "scope: env:component, env:, :component or empty for everything",
|
|
27
|
+
positional: true,
|
|
28
|
+
required: false,
|
|
29
|
+
choices: async () => secretsScopeChoices(),
|
|
30
|
+
},
|
|
31
|
+
key: {
|
|
32
|
+
type: "string",
|
|
33
|
+
message: "only write these secrets (comma-separated keys)",
|
|
34
|
+
required: false,
|
|
35
|
+
},
|
|
36
|
+
file: {
|
|
37
|
+
type: "string",
|
|
38
|
+
message:
|
|
39
|
+
"yaml file to push (component → env → key: value); stdin when omitted",
|
|
40
|
+
required: false,
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
execute: async (ctx) => {
|
|
44
|
+
const scope = await resolveSecretsScope(await ctx.get("envComponent"));
|
|
45
|
+
const scoped = await getScopedSecretKeys(
|
|
46
|
+
scope,
|
|
47
|
+
parseKeysInput(await ctx.get("key")),
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
const file = await ctx.get("file");
|
|
51
|
+
if (!file && process.stdin.isTTY) {
|
|
52
|
+
throw new Error(
|
|
53
|
+
"nothing to push — pass --file <secrets.yml> or pipe yaml (secrets-pull format) to stdin",
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
const raw = file
|
|
57
|
+
? (await readFile(file)).toString("utf-8")
|
|
58
|
+
: await readStdin();
|
|
59
|
+
const document = parse(raw) as SecretsDocument;
|
|
60
|
+
if (!document || typeof document !== "object") {
|
|
61
|
+
throw new Error(
|
|
62
|
+
"the document must be a yaml object: component → env → key: value (see secrets-pull)",
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const problems = checkSecretsDocument(document, scoped, {
|
|
67
|
+
requireComplete: false,
|
|
68
|
+
});
|
|
69
|
+
if (problems.length > 0) {
|
|
70
|
+
throw new Error(
|
|
71
|
+
"😿 the document does not match the config:\n" +
|
|
72
|
+
problems.map((problem) => ` - ${problem}`).join("\n"),
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const { writes, skipped } = collectSecretsWrites(document, scoped);
|
|
77
|
+
if (skipped.length > 0) {
|
|
78
|
+
ctx.log("⏭️ skipping placeholder/empty values:");
|
|
79
|
+
skipped.forEach((entry) => ctx.log(` - ${entry}`));
|
|
80
|
+
}
|
|
81
|
+
if (writes.length === 0) {
|
|
82
|
+
ctx.log("no secrets to write 🤷");
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
ctx.log("about to write:");
|
|
87
|
+
writes.forEach(({ env, componentName, secrets }) =>
|
|
88
|
+
ctx.log(
|
|
89
|
+
` - ${env}:${componentName}: ${Object.keys(secrets).join(", ")}`,
|
|
90
|
+
),
|
|
91
|
+
);
|
|
92
|
+
const confirmed = await ctx.confirm("continue? 🤔");
|
|
93
|
+
if (!confirmed) {
|
|
94
|
+
throw new Error("abort");
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
await writeSecretsAndMirror(ctx, writes);
|
|
98
|
+
ctx.log("done! 😻");
|
|
99
|
+
},
|
|
100
|
+
});
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { readFile } from "fs-extra";
|
|
2
|
+
import { defineCommand } from "../../../core/defineCommand";
|
|
3
|
+
import type { IO } from "../../../core/types";
|
|
4
|
+
import { readStdin } from "../../../utils/readStdin";
|
|
5
|
+
import type { SecretsWrite } from "./document";
|
|
6
|
+
import { writeSecretsAndMirror } from "./document";
|
|
7
|
+
import {
|
|
8
|
+
getScopedSecretKeys,
|
|
9
|
+
resolveSecretsScope,
|
|
10
|
+
secretsScopeChoices,
|
|
11
|
+
} from "./scope";
|
|
12
|
+
|
|
13
|
+
const resolveValue = async (
|
|
14
|
+
io: IO,
|
|
15
|
+
value: string | undefined,
|
|
16
|
+
valueFile: string | undefined,
|
|
17
|
+
): Promise<string> => {
|
|
18
|
+
if (valueFile) {
|
|
19
|
+
// a trailing newline is almost never part of the secret
|
|
20
|
+
return (await readFile(valueFile)).toString("utf-8").replace(/\n$/, "");
|
|
21
|
+
}
|
|
22
|
+
if (value !== undefined) {
|
|
23
|
+
return value;
|
|
24
|
+
}
|
|
25
|
+
if (!process.stdin.isTTY) {
|
|
26
|
+
return (await readStdin()).replace(/\n$/, "");
|
|
27
|
+
}
|
|
28
|
+
return io.promptDirect({
|
|
29
|
+
name: "value",
|
|
30
|
+
type: "string",
|
|
31
|
+
message: "value",
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export const commandSecretsSet = defineCommand({
|
|
36
|
+
name: "project secrets-set",
|
|
37
|
+
description:
|
|
38
|
+
"sets one secret — in one env (dev:web), one env everywhere (dev:), or all envs of a component (:web); value via --value, --value-file or stdin",
|
|
39
|
+
group: "project",
|
|
40
|
+
inputs: {
|
|
41
|
+
envComponent: {
|
|
42
|
+
type: "string",
|
|
43
|
+
message: "scope: env:component, env:, or :component",
|
|
44
|
+
positional: true,
|
|
45
|
+
choices: async () => secretsScopeChoices(),
|
|
46
|
+
},
|
|
47
|
+
key: {
|
|
48
|
+
type: "string",
|
|
49
|
+
message: "which secret?",
|
|
50
|
+
positional: true,
|
|
51
|
+
choices: async (ctx) => {
|
|
52
|
+
const scope = await resolveSecretsScope(await ctx.get("envComponent"));
|
|
53
|
+
const scoped = await getScopedSecretKeys(scope);
|
|
54
|
+
return [...new Set(scoped.flatMap(({ keys }) => keys))];
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
value: {
|
|
58
|
+
type: "string",
|
|
59
|
+
message:
|
|
60
|
+
"the secret value (prefer --value-file or stdin over shell history)",
|
|
61
|
+
required: false,
|
|
62
|
+
},
|
|
63
|
+
valueFile: {
|
|
64
|
+
type: "string",
|
|
65
|
+
message: "read the secret value from this file",
|
|
66
|
+
required: false,
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
execute: async (ctx) => {
|
|
70
|
+
const scope = await resolveSecretsScope(await ctx.get("envComponent"));
|
|
71
|
+
const key = await ctx.get("key");
|
|
72
|
+
// drops env/component pairs where the key is not declared and
|
|
73
|
+
// throws when it is declared nowhere in the scope
|
|
74
|
+
const scoped = await getScopedSecretKeys(scope, [key]);
|
|
75
|
+
const value = await resolveValue(
|
|
76
|
+
ctx,
|
|
77
|
+
await ctx.get("value"),
|
|
78
|
+
await ctx.get("valueFile"),
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
const targets = scoped.map(
|
|
82
|
+
({ env, componentName }) => `${env}:${componentName}`,
|
|
83
|
+
);
|
|
84
|
+
ctx.log(`setting ${key} in: ${targets.join(", ")}`);
|
|
85
|
+
if (targets.length > 1) {
|
|
86
|
+
const confirmed = await ctx.confirm(
|
|
87
|
+
`write the same value to ${targets.length} environments? 🤔`,
|
|
88
|
+
);
|
|
89
|
+
if (!confirmed) {
|
|
90
|
+
throw new Error("abort");
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
const writes: SecretsWrite[] = scoped.map(({ env, componentName }) => ({
|
|
95
|
+
env,
|
|
96
|
+
componentName,
|
|
97
|
+
secrets: { [key]: value },
|
|
98
|
+
}));
|
|
99
|
+
await writeSecretsAndMirror(ctx, writes);
|
|
100
|
+
ctx.log("done! 😻");
|
|
101
|
+
},
|
|
102
|
+
});
|