@catladder/cli 0.0.0-refactor-docker-c24f8608 → 0.0.0-refactor-cache-b38c122b

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (505) hide show
  1. package/CONTRIBUTING.md +3 -86
  2. package/README.md +6 -29
  3. package/dist/bundles/catci/index.js +1563 -1231
  4. package/dist/bundles/catenv/index.js +9837 -12286
  5. package/dist/bundles/cli/index.js +35139 -41941
  6. package/dist/cli/src/apps/catci/catci.js +19 -91
  7. package/dist/cli/src/apps/catci/catci.js.map +1 -1
  8. package/dist/cli/src/apps/catci/commands/security/auditDocument.js +73 -79
  9. package/dist/cli/src/apps/catci/commands/security/auditDocument.js.map +1 -1
  10. package/dist/cli/src/apps/catci/commands/security/commands.js +94 -169
  11. package/dist/cli/src/apps/catci/commands/security/commands.js.map +1 -1
  12. package/dist/cli/src/apps/catci/commands/security/createSecurityAuditMergeRequest.js +42 -102
  13. package/dist/cli/src/apps/catci/commands/security/createSecurityAuditMergeRequest.js.map +1 -1
  14. package/dist/cli/src/apps/catci/commands/security/evaluateSecurityAudit.js +19 -67
  15. package/dist/cli/src/apps/catci/commands/security/evaluateSecurityAudit.js.map +1 -1
  16. package/dist/cli/src/apps/catenv/catenv.js +18 -64
  17. package/dist/cli/src/apps/catenv/catenv.js.map +1 -1
  18. package/dist/cli/src/apps/catenv/printVariables.js +36 -123
  19. package/dist/cli/src/apps/catenv/printVariables.js.map +1 -1
  20. package/dist/cli/src/apps/catenv/utils.js +26 -112
  21. package/dist/cli/src/apps/catenv/utils.js.map +1 -1
  22. package/dist/cli/src/apps/catenv/writeDotEnvFiles.js +28 -132
  23. package/dist/cli/src/apps/catenv/writeDotEnvFiles.js.map +1 -1
  24. package/dist/cli/src/apps/catenv/writeEnvDTs.js +49 -150
  25. package/dist/cli/src/apps/catenv/writeEnvDTs.js.map +1 -1
  26. package/dist/cli/src/apps/cli/cli.js +31 -76
  27. package/dist/cli/src/apps/cli/cli.js.map +1 -1
  28. package/dist/cli/src/apps/cli/commands/cloudSQL/commandRestoreDb.js +106 -180
  29. package/dist/cli/src/apps/cli/commands/cloudSQL/commandRestoreDb.js.map +1 -1
  30. package/dist/cli/src/apps/cli/commands/cloudSQL/index.js +4 -43
  31. package/dist/cli/src/apps/cli/commands/cloudSQL/index.js.map +1 -1
  32. package/dist/cli/src/apps/cli/commands/general/index.js +67 -191
  33. package/dist/cli/src/apps/cli/commands/general/index.js.map +1 -1
  34. package/dist/cli/src/apps/cli/commands/general/namespaceAutoCompletion.js +4 -49
  35. package/dist/cli/src/apps/cli/commands/general/namespaceAutoCompletion.js.map +1 -1
  36. package/dist/cli/src/apps/cli/commands/general/portForward.js +36 -93
  37. package/dist/cli/src/apps/cli/commands/general/portForward.js.map +1 -1
  38. package/dist/cli/src/apps/cli/commands/mongodb/index.js +8 -47
  39. package/dist/cli/src/apps/cli/commands/mongodb/index.js.map +1 -1
  40. package/dist/cli/src/apps/cli/commands/mongodb/projectMongoDestroyMember.js +86 -183
  41. package/dist/cli/src/apps/cli/commands/mongodb/projectMongoDestroyMember.js.map +1 -1
  42. package/dist/cli/src/apps/cli/commands/mongodb/projectMongoGetShell.js +30 -90
  43. package/dist/cli/src/apps/cli/commands/mongodb/projectMongoGetShell.js.map +1 -1
  44. package/dist/cli/src/apps/cli/commands/mongodb/projectMongoPortForward.js +50 -114
  45. package/dist/cli/src/apps/cli/commands/mongodb/projectMongoPortForward.js.map +1 -1
  46. package/dist/cli/src/apps/cli/commands/mongodb/utils/index.js +58 -192
  47. package/dist/cli/src/apps/cli/commands/mongodb/utils/index.js.map +1 -1
  48. package/dist/cli/src/apps/cli/commands/project/cloudSql/commandProjectRestoreDb.js +118 -197
  49. package/dist/cli/src/apps/cli/commands/project/cloudSql/commandProjectRestoreDb.js.map +1 -1
  50. package/dist/cli/src/apps/cli/commands/project/commandCloudSqlProxy.js +82 -158
  51. package/dist/cli/src/apps/cli/commands/project/commandCloudSqlProxy.js.map +1 -1
  52. package/dist/cli/src/apps/cli/commands/project/commandConfigSecrets.js +134 -397
  53. package/dist/cli/src/apps/cli/commands/project/commandConfigSecrets.js.map +1 -1
  54. package/dist/cli/src/apps/cli/commands/project/commandDeletePods.js +40 -140
  55. package/dist/cli/src/apps/cli/commands/project/commandDeletePods.js.map +1 -1
  56. package/dist/cli/src/apps/cli/commands/project/commandDeleteProject.js +23 -92
  57. package/dist/cli/src/apps/cli/commands/project/commandDeleteProject.js.map +1 -1
  58. package/dist/cli/src/apps/cli/commands/project/commandEnvVars.js +10 -71
  59. package/dist/cli/src/apps/cli/commands/project/commandEnvVars.js.map +1 -1
  60. package/dist/cli/src/apps/cli/commands/project/commandGetMyTotalWorktime.js +7 -54
  61. package/dist/cli/src/apps/cli/commands/project/commandGetMyTotalWorktime.js.map +1 -1
  62. package/dist/cli/src/apps/cli/commands/project/commandGetShell.js +27 -89
  63. package/dist/cli/src/apps/cli/commands/project/commandGetShell.js.map +1 -1
  64. package/dist/cli/src/apps/cli/commands/project/commandGitlabCi.js +65 -180
  65. package/dist/cli/src/apps/cli/commands/project/commandGitlabCi.js.map +1 -1
  66. package/dist/cli/src/apps/cli/commands/project/commandListPods.js +13 -72
  67. package/dist/cli/src/apps/cli/commands/project/commandListPods.js.map +1 -1
  68. package/dist/cli/src/apps/cli/commands/project/commandMigrateHelm3.js +38 -104
  69. package/dist/cli/src/apps/cli/commands/project/commandMigrateHelm3.js.map +1 -1
  70. package/dist/cli/src/apps/cli/commands/project/commandNamespace.js +8 -67
  71. package/dist/cli/src/apps/cli/commands/project/commandNamespace.js.map +1 -1
  72. package/dist/cli/src/apps/cli/commands/project/commandOpenCostDashboard.js +16 -77
  73. package/dist/cli/src/apps/cli/commands/project/commandOpenCostDashboard.js.map +1 -1
  74. package/dist/cli/src/apps/cli/commands/project/commandOpenDashboard.js +18 -80
  75. package/dist/cli/src/apps/cli/commands/project/commandOpenDashboard.js.map +1 -1
  76. package/dist/cli/src/apps/cli/commands/project/commandOpenEnv.js +14 -74
  77. package/dist/cli/src/apps/cli/commands/project/commandOpenEnv.js.map +1 -1
  78. package/dist/cli/src/apps/cli/commands/project/commandOpenGit.js +6 -53
  79. package/dist/cli/src/apps/cli/commands/project/commandOpenGit.js.map +1 -1
  80. package/dist/cli/src/apps/cli/commands/project/commandOpenGrafana.js +16 -77
  81. package/dist/cli/src/apps/cli/commands/project/commandOpenGrafana.js.map +1 -1
  82. package/dist/cli/src/apps/cli/commands/project/commandOpenGrafanaPod.js +28 -93
  83. package/dist/cli/src/apps/cli/commands/project/commandOpenGrafanaPod.js.map +1 -1
  84. package/dist/cli/src/apps/cli/commands/project/commandOpenLogs.js +11 -71
  85. package/dist/cli/src/apps/cli/commands/project/commandOpenLogs.js.map +1 -1
  86. package/dist/cli/src/apps/cli/commands/project/commandPauseProject.js +23 -92
  87. package/dist/cli/src/apps/cli/commands/project/commandPauseProject.js.map +1 -1
  88. package/dist/cli/src/apps/cli/commands/project/commandPortForward.js +71 -161
  89. package/dist/cli/src/apps/cli/commands/project/commandPortForward.js.map +1 -1
  90. package/dist/cli/src/apps/cli/commands/project/commandRenewToken.d.ts +3 -0
  91. package/dist/cli/src/apps/cli/commands/project/commandRenewToken.js +9 -0
  92. package/dist/cli/src/apps/cli/commands/project/commandRenewToken.js.map +1 -0
  93. package/dist/cli/src/apps/cli/commands/project/commandSecretsClearBackups.js +17 -112
  94. package/dist/cli/src/apps/cli/commands/project/commandSecretsClearBackups.js.map +1 -1
  95. package/dist/cli/src/apps/cli/commands/project/commandSecurityEvaluate.js +15 -66
  96. package/dist/cli/src/apps/cli/commands/project/commandSecurityEvaluate.js.map +1 -1
  97. package/dist/cli/src/apps/cli/commands/project/commandSetup.js +6 -55
  98. package/dist/cli/src/apps/cli/commands/project/commandSetup.js.map +1 -1
  99. package/dist/cli/src/apps/cli/commands/project/commandTriggerCronjob.js +47 -135
  100. package/dist/cli/src/apps/cli/commands/project/commandTriggerCronjob.js.map +1 -1
  101. package/dist/cli/src/apps/cli/commands/project/index.js +54 -91
  102. package/dist/cli/src/apps/cli/commands/project/index.js.map +1 -1
  103. package/dist/cli/src/apps/cli/commands/project/setup/index.js +39 -127
  104. package/dist/cli/src/apps/cli/commands/project/setup/index.js.map +1 -1
  105. package/dist/cli/src/apps/cli/commands/project/setup/setupAccessTokens.js +35 -94
  106. package/dist/cli/src/apps/cli/commands/project/setup/setupAccessTokens.js.map +1 -1
  107. package/dist/cli/src/apps/cli/commands/project/setup/setupCloudRun.js +52 -128
  108. package/dist/cli/src/apps/cli/commands/project/setup/setupCloudRun.js.map +1 -1
  109. package/dist/cli/src/apps/cli/commands/project/setup/setupContext.js +20 -76
  110. package/dist/cli/src/apps/cli/commands/project/setup/setupContext.js.map +1 -1
  111. package/dist/cli/src/apps/cli/commands/project/setup/setupKubernetes.js +107 -147
  112. package/dist/cli/src/apps/cli/commands/project/setup/setupKubernetes.js.map +1 -1
  113. package/dist/cli/src/apps/cli/commands/project/setup/setupTopic.js +7 -80
  114. package/dist/cli/src/apps/cli/commands/project/setup/setupTopic.js.map +1 -1
  115. package/dist/cli/src/apps/cli/commands/project/utils/autocompletions.js +16 -105
  116. package/dist/cli/src/apps/cli/commands/project/utils/autocompletions.js.map +1 -1
  117. package/dist/cli/src/apps/cli/commands/project/utils/ensureCluster.js +28 -78
  118. package/dist/cli/src/apps/cli/commands/project/utils/ensureCluster.js.map +1 -1
  119. package/dist/cli/src/apps/cli/commands/project/utils/ensureNamespace.js +29 -110
  120. package/dist/cli/src/apps/cli/commands/project/utils/ensureNamespace.js.map +1 -1
  121. package/dist/cli/src/apps/cli/commands/project/utils/showProjectBanner.js +9 -53
  122. package/dist/cli/src/apps/cli/commands/project/utils/showProjectBanner.js.map +1 -1
  123. package/dist/cli/src/apps/cli/commands/theStuffThatReallyMatters/index.js +26 -92
  124. package/dist/cli/src/apps/cli/commands/theStuffThatReallyMatters/index.js.map +1 -1
  125. package/dist/cli/src/apps/cli/utils/getGoogleAuthUserNumber.js +13 -62
  126. package/dist/cli/src/apps/cli/utils/getGoogleAuthUserNumber.js.map +1 -1
  127. package/dist/cli/src/apps/cli/verify/index.js +10 -62
  128. package/dist/cli/src/apps/cli/verify/index.js.map +1 -1
  129. package/dist/cli/src/catci.js +1 -1
  130. package/dist/cli/src/catci.js.map +1 -1
  131. package/dist/cli/src/catenv.js +10 -4
  132. package/dist/cli/src/catenv.js.map +1 -1
  133. package/dist/cli/src/cli.js +1 -1
  134. package/dist/cli/src/cli.js.map +1 -1
  135. package/dist/cli/src/config/getProjectConfig.js +118 -292
  136. package/dist/cli/src/config/getProjectConfig.js.map +1 -1
  137. package/dist/cli/src/config/parseChoice.js +3 -19
  138. package/dist/cli/src/config/parseChoice.js.map +1 -1
  139. package/dist/cli/src/gcloud/artifactsRegistry.js +10 -54
  140. package/dist/cli/src/gcloud/artifactsRegistry.js.map +1 -1
  141. package/dist/cli/src/gcloud/cloudRun/getCloudRunDomainSuffix.js +21 -60
  142. package/dist/cli/src/gcloud/cloudRun/getCloudRunDomainSuffix.js.map +1 -1
  143. package/dist/cli/src/gcloud/cloudRun/openCloudRunDashboards.js +12 -56
  144. package/dist/cli/src/gcloud/cloudRun/openCloudRunDashboards.js.map +1 -1
  145. package/dist/cli/src/gcloud/cloudSql/copyDb.js +30 -56
  146. package/dist/cli/src/gcloud/cloudSql/copyDb.js.map +1 -1
  147. package/dist/cli/src/gcloud/cloudSql/startProxy.js +41 -123
  148. package/dist/cli/src/gcloud/cloudSql/startProxy.js.map +1 -1
  149. package/dist/cli/src/gcloud/enableServices.js +6 -82
  150. package/dist/cli/src/gcloud/enableServices.js.map +1 -1
  151. package/dist/cli/src/gcloud/openDashboard.js +12 -95
  152. package/dist/cli/src/gcloud/openDashboard.js.map +1 -1
  153. package/dist/cli/src/gcloud/serviceAccounts.js +63 -177
  154. package/dist/cli/src/gcloud/serviceAccounts.js.map +1 -1
  155. package/dist/cli/src/k8sApi/index.js +9 -9
  156. package/dist/cli/src/k8sApi/index.js.map +1 -1
  157. package/dist/cli/src/kubernetes/index.js +20 -81
  158. package/dist/cli/src/kubernetes/index.js.map +1 -1
  159. package/dist/cli/src/kubernetes/openKubernetesDashboards.js +34 -86
  160. package/dist/cli/src/kubernetes/openKubernetesDashboards.js.map +1 -1
  161. package/dist/cli/src/kubernetes/portForward.js +5 -50
  162. package/dist/cli/src/kubernetes/portForward.js.map +1 -1
  163. package/dist/cli/src/packageInfos.js +2 -2
  164. package/dist/cli/src/packageInfos.js.map +1 -1
  165. package/dist/cli/src/utils/boxWithAscii.js +6 -6
  166. package/dist/cli/src/utils/boxWithAscii.js.map +1 -1
  167. package/dist/cli/src/utils/cluster.js +8 -61
  168. package/dist/cli/src/utils/cluster.js.map +1 -1
  169. package/dist/cli/src/utils/editAsFile.js +21 -75
  170. package/dist/cli/src/utils/editAsFile.js.map +1 -1
  171. package/dist/cli/src/utils/files.js +11 -57
  172. package/dist/cli/src/utils/files.js.map +1 -1
  173. package/dist/cli/src/utils/getEditor.js +15 -71
  174. package/dist/cli/src/utils/getEditor.js.map +1 -1
  175. package/dist/cli/src/utils/gitlab.js +176 -466
  176. package/dist/cli/src/utils/gitlab.js.map +1 -1
  177. package/dist/cli/src/utils/log.js +2 -2
  178. package/dist/cli/src/utils/log.js.map +1 -1
  179. package/dist/cli/src/utils/portForwards.js +32 -120
  180. package/dist/cli/src/utils/portForwards.js.map +1 -1
  181. package/dist/cli/src/utils/preferences/index.js +27 -108
  182. package/dist/cli/src/utils/preferences/index.js.map +1 -1
  183. package/dist/cli/src/utils/projects/index.d.ts +1 -1
  184. package/dist/cli/src/utils/projects/index.js +28 -108
  185. package/dist/cli/src/utils/projects/index.js.map +1 -1
  186. package/dist/cli/src/utils/promise.js +4 -55
  187. package/dist/cli/src/utils/promise.js.map +1 -1
  188. package/dist/cli/src/utils/shell.js +19 -75
  189. package/dist/cli/src/utils/shell.js.map +1 -1
  190. package/dist/pipeline/src/bash/BashExpression.js +20 -52
  191. package/dist/pipeline/src/bash/BashExpression.js.map +1 -1
  192. package/dist/pipeline/src/bash/bashExpressionPerPipelineType.js +1 -1
  193. package/dist/pipeline/src/bash/bashExpressionPerPipelineType.js.map +1 -1
  194. package/dist/pipeline/src/bash/bashYaml.js +13 -10
  195. package/dist/pipeline/src/bash/bashYaml.js.map +1 -1
  196. package/dist/pipeline/src/bash/getInjectVarsScript.js +5 -27
  197. package/dist/pipeline/src/bash/getInjectVarsScript.js.map +1 -1
  198. package/dist/pipeline/src/bash/replaceAsync.js +29 -79
  199. package/dist/pipeline/src/bash/replaceAsync.js.map +1 -1
  200. package/dist/pipeline/src/build/artifacts/createBuildJobArtifact.d.ts +3 -0
  201. package/dist/pipeline/src/build/artifacts/createBuildJobArtifact.js +50 -0
  202. package/dist/pipeline/src/build/artifacts/createBuildJobArtifact.js.map +1 -0
  203. package/dist/pipeline/src/build/base/constants.js +1 -1
  204. package/dist/pipeline/src/build/base/constants.js.map +1 -1
  205. package/dist/pipeline/src/build/base/createAppBuildJob.d.ts +3 -3
  206. package/dist/pipeline/src/build/base/createAppBuildJob.js +42 -71
  207. package/dist/pipeline/src/build/base/createAppBuildJob.js.map +1 -1
  208. package/dist/pipeline/src/build/base/createArtifactsConfig.js +11 -40
  209. package/dist/pipeline/src/build/base/createArtifactsConfig.js.map +1 -1
  210. package/dist/pipeline/src/build/base/createBuildJobDefinition.d.ts +6 -0
  211. package/dist/pipeline/src/build/base/createBuildJobDefinition.js +30 -0
  212. package/dist/pipeline/src/build/base/createBuildJobDefinition.js.map +1 -0
  213. package/dist/pipeline/src/build/base/index.d.ts +7 -4
  214. package/dist/pipeline/src/build/base/index.js +42 -50
  215. package/dist/pipeline/src/build/base/index.js.map +1 -1
  216. package/dist/pipeline/src/build/base/writeBuildInfo.js +2 -2
  217. package/dist/pipeline/src/build/base/writeBuildInfo.js.map +1 -1
  218. package/dist/pipeline/src/build/base/writeDotEnv.d.ts +1 -0
  219. package/dist/pipeline/src/build/base/writeDotEnv.js +21 -32
  220. package/dist/pipeline/src/build/base/writeDotEnv.js.map +1 -1
  221. package/dist/pipeline/src/build/cache/createJobCache.d.ts +7 -0
  222. package/dist/pipeline/src/build/cache/createJobCache.js +57 -0
  223. package/dist/pipeline/src/build/cache/createJobCache.js.map +1 -0
  224. package/dist/pipeline/src/build/cache/getAllCacheConfigsFromConfig.d.ts +3 -0
  225. package/dist/pipeline/src/build/cache/getAllCacheConfigsFromConfig.js +25 -0
  226. package/dist/pipeline/src/build/cache/getAllCacheConfigsFromConfig.js.map +1 -0
  227. package/dist/pipeline/src/build/cache/transformLegacyJobCache.d.ts +3 -0
  228. package/dist/pipeline/src/build/cache/transformLegacyJobCache.js +17 -0
  229. package/dist/pipeline/src/build/cache/transformLegacyJobCache.js.map +1 -0
  230. package/dist/pipeline/src/build/custom/buildJob.js +8 -55
  231. package/dist/pipeline/src/build/custom/buildJob.js.map +1 -1
  232. package/dist/pipeline/src/build/custom/index.js +4 -29
  233. package/dist/pipeline/src/build/custom/index.js.map +1 -1
  234. package/dist/pipeline/src/build/custom/testJob.d.ts +1 -1
  235. package/dist/pipeline/src/build/custom/testJob.js +46 -54
  236. package/dist/pipeline/src/build/custom/testJob.js.map +1 -1
  237. package/dist/pipeline/src/build/docker.d.ts +8 -9
  238. package/dist/pipeline/src/build/docker.js +88 -109
  239. package/dist/pipeline/src/build/docker.js.map +1 -1
  240. package/dist/pipeline/src/build/index.d.ts +14 -5
  241. package/dist/pipeline/src/build/index.js +36 -16
  242. package/dist/pipeline/src/build/index.js.map +1 -1
  243. package/dist/pipeline/src/build/node/buildJob.d.ts +6 -2
  244. package/dist/pipeline/src/build/node/buildJob.js +43 -78
  245. package/dist/pipeline/src/build/node/buildJob.js.map +1 -1
  246. package/dist/pipeline/src/build/node/cache.d.ts +7 -6
  247. package/dist/pipeline/src/build/node/cache.js +60 -67
  248. package/dist/pipeline/src/build/node/cache.js.map +1 -1
  249. package/dist/pipeline/src/build/node/constants.js +2 -2
  250. package/dist/pipeline/src/build/node/constants.js.map +1 -1
  251. package/dist/pipeline/src/build/node/index.d.ts +2 -2
  252. package/dist/pipeline/src/build/node/index.js +9 -34
  253. package/dist/pipeline/src/build/node/index.js.map +1 -1
  254. package/dist/pipeline/src/build/node/meteor.js +21 -52
  255. package/dist/pipeline/src/build/node/meteor.js.map +1 -1
  256. package/dist/pipeline/src/build/node/testJob.d.ts +3 -2
  257. package/dist/pipeline/src/build/node/testJob.js +76 -65
  258. package/dist/pipeline/src/build/node/testJob.js.map +1 -1
  259. package/dist/pipeline/src/build/node/yarn.d.ts +4 -4
  260. package/dist/pipeline/src/build/node/yarn.js +39 -54
  261. package/dist/pipeline/src/build/node/yarn.js.map +1 -1
  262. package/dist/pipeline/src/build/rails/build.d.ts +1 -1
  263. package/dist/pipeline/src/build/rails/build.js +28 -58
  264. package/dist/pipeline/src/build/rails/build.js.map +1 -1
  265. package/dist/pipeline/src/build/rails/index.js +4 -29
  266. package/dist/pipeline/src/build/rails/index.js.map +1 -1
  267. package/dist/pipeline/src/build/rails/test.d.ts +1 -1
  268. package/dist/pipeline/src/build/rails/test.js +64 -65
  269. package/dist/pipeline/src/build/rails/test.js.map +1 -1
  270. package/dist/pipeline/src/build/sbom.js +19 -14
  271. package/dist/pipeline/src/build/sbom.js.map +1 -1
  272. package/dist/pipeline/src/build/types.d.ts +108 -7
  273. package/dist/pipeline/src/build/types.js +10 -6
  274. package/dist/pipeline/src/build/types.js.map +1 -1
  275. package/dist/pipeline/src/config/configruedEnvs.js +18 -47
  276. package/dist/pipeline/src/config/configruedEnvs.js.map +1 -1
  277. package/dist/pipeline/src/config/readConfig.d.ts +2 -2
  278. package/dist/pipeline/src/config/readConfig.js +14 -26
  279. package/dist/pipeline/src/config/readConfig.js.map +1 -1
  280. package/dist/pipeline/src/context/createAllComponentsContext.d.ts +8 -0
  281. package/dist/pipeline/src/context/createAllComponentsContext.js +21 -0
  282. package/dist/pipeline/src/context/createAllComponentsContext.js.map +1 -0
  283. package/dist/pipeline/src/context/createComponentContext.d.ts +11 -0
  284. package/dist/pipeline/src/context/createComponentContext.js +101 -0
  285. package/dist/pipeline/src/context/createComponentContext.js.map +1 -0
  286. package/dist/pipeline/src/context/createWorkspaceContext.d.ts +9 -0
  287. package/dist/pipeline/src/context/createWorkspaceContext.js +36 -0
  288. package/dist/pipeline/src/context/createWorkspaceContext.js.map +1 -0
  289. package/dist/pipeline/src/context/getBuildInfoVariables.d.ts +3 -4
  290. package/dist/pipeline/src/context/getBuildInfoVariables.js +23 -21
  291. package/dist/pipeline/src/context/getBuildInfoVariables.js.map +1 -1
  292. package/dist/pipeline/src/context/getEnvConfig.js +4 -4
  293. package/dist/pipeline/src/context/getEnvConfig.js.map +1 -1
  294. package/dist/pipeline/src/context/getEnvType.js +2 -2
  295. package/dist/pipeline/src/context/getEnvType.js.map +1 -1
  296. package/dist/pipeline/src/context/getEnvironment.js +17 -64
  297. package/dist/pipeline/src/context/getEnvironment.js.map +1 -1
  298. package/dist/pipeline/src/context/getEnvironmentContext.d.ts +1 -1
  299. package/dist/pipeline/src/context/getEnvironmentContext.js +21 -22
  300. package/dist/pipeline/src/context/getEnvironmentContext.js.map +1 -1
  301. package/dist/pipeline/src/context/getEnvironmentVariables.d.ts +2 -5
  302. package/dist/pipeline/src/context/getEnvironmentVariables.js +109 -165
  303. package/dist/pipeline/src/context/getEnvironmentVariables.js.map +1 -1
  304. package/dist/pipeline/src/context/getLabels.js +13 -16
  305. package/dist/pipeline/src/context/getLabels.js.map +1 -1
  306. package/dist/pipeline/src/context/getReviewSlug.js +7 -7
  307. package/dist/pipeline/src/context/getReviewSlug.js.map +1 -1
  308. package/dist/pipeline/src/context/index.d.ts +1 -16
  309. package/dist/pipeline/src/context/index.js +1 -87
  310. package/dist/pipeline/src/context/index.js.map +1 -1
  311. package/dist/pipeline/src/context/resolveReferences.js +51 -172
  312. package/dist/pipeline/src/context/resolveReferences.js.map +1 -1
  313. package/dist/pipeline/src/context/transformJobOnlyVars.js +22 -69
  314. package/dist/pipeline/src/context/transformJobOnlyVars.js.map +1 -1
  315. package/dist/pipeline/src/context/utils/envVars.js +13 -39
  316. package/dist/pipeline/src/context/utils/envVars.js.map +1 -1
  317. package/dist/pipeline/src/deploy/base/deploy.d.ts +2 -2
  318. package/dist/pipeline/src/deploy/base/deploy.js +74 -77
  319. package/dist/pipeline/src/deploy/base/deploy.js.map +1 -1
  320. package/dist/pipeline/src/deploy/base/index.d.ts +1 -3
  321. package/dist/pipeline/src/deploy/base/index.js +11 -34
  322. package/dist/pipeline/src/deploy/base/index.js.map +1 -1
  323. package/dist/pipeline/src/deploy/base/rollback.d.ts +1 -1
  324. package/dist/pipeline/src/deploy/base/rollback.js +11 -15
  325. package/dist/pipeline/src/deploy/base/rollback.js.map +1 -1
  326. package/dist/pipeline/src/deploy/base/stop.d.ts +1 -1
  327. package/dist/pipeline/src/deploy/base/stop.js +11 -15
  328. package/dist/pipeline/src/deploy/base/stop.js.map +1 -1
  329. package/dist/pipeline/src/deploy/base/variables.js +1 -1
  330. package/dist/pipeline/src/deploy/base/variables.js.map +1 -1
  331. package/dist/pipeline/src/deploy/cloudRun/artifactsRegistry.d.ts +1 -1
  332. package/dist/pipeline/src/deploy/cloudRun/artifactsRegistry.js +46 -70
  333. package/dist/pipeline/src/deploy/cloudRun/artifactsRegistry.js.map +1 -1
  334. package/dist/pipeline/src/deploy/cloudRun/cleanup.js +8 -33
  335. package/dist/pipeline/src/deploy/cloudRun/cleanup.js.map +1 -1
  336. package/dist/pipeline/src/deploy/cloudRun/cloudRunRevisions.js +27 -33
  337. package/dist/pipeline/src/deploy/cloudRun/cloudRunRevisions.js.map +1 -1
  338. package/dist/pipeline/src/deploy/cloudRun/createJobs/cloudRunJobs.js +121 -150
  339. package/dist/pipeline/src/deploy/cloudRun/createJobs/cloudRunJobs.js.map +1 -1
  340. package/dist/pipeline/src/deploy/cloudRun/createJobs/cloudRunServices.js +46 -62
  341. package/dist/pipeline/src/deploy/cloudRun/createJobs/cloudRunServices.js.map +1 -1
  342. package/dist/pipeline/src/deploy/cloudRun/createJobs/common.js +27 -54
  343. package/dist/pipeline/src/deploy/cloudRun/createJobs/common.js.map +1 -1
  344. package/dist/pipeline/src/deploy/cloudRun/createJobs/getCloudRunDeployScripts.js +36 -47
  345. package/dist/pipeline/src/deploy/cloudRun/createJobs/getCloudRunDeployScripts.js.map +1 -1
  346. package/dist/pipeline/src/deploy/cloudRun/createJobs/getCloudRunStopScripts.js +22 -39
  347. package/dist/pipeline/src/deploy/cloudRun/createJobs/getCloudRunStopScripts.js.map +1 -1
  348. package/dist/pipeline/src/deploy/cloudRun/createJobs/index.js +28 -36
  349. package/dist/pipeline/src/deploy/cloudRun/createJobs/index.js.map +1 -1
  350. package/dist/pipeline/src/deploy/cloudRun/createJobs/volumes.js +7 -34
  351. package/dist/pipeline/src/deploy/cloudRun/createJobs/volumes.js.map +1 -1
  352. package/dist/pipeline/src/deploy/cloudRun/index.d.ts +2 -2
  353. package/dist/pipeline/src/deploy/cloudRun/index.js +38 -75
  354. package/dist/pipeline/src/deploy/cloudRun/index.js.map +1 -1
  355. package/dist/pipeline/src/deploy/cloudRun/utils/createArgsString.js +14 -42
  356. package/dist/pipeline/src/deploy/cloudRun/utils/createArgsString.js.map +1 -1
  357. package/dist/pipeline/src/deploy/cloudRun/utils/database.js +14 -30
  358. package/dist/pipeline/src/deploy/cloudRun/utils/database.js.map +1 -1
  359. package/dist/pipeline/src/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.js +5 -5
  360. package/dist/pipeline/src/deploy/cloudRun/utils/gcloudServiceAccountLoginCommands.js.map +1 -1
  361. package/dist/pipeline/src/deploy/cloudRun/utils/getServiceName.js +1 -3
  362. package/dist/pipeline/src/deploy/cloudRun/utils/getServiceName.js.map +1 -1
  363. package/dist/pipeline/src/deploy/cloudRun/utils/jobName.js +1 -3
  364. package/dist/pipeline/src/deploy/cloudRun/utils/jobName.js.map +1 -1
  365. package/dist/pipeline/src/deploy/cloudRun/utils/removeFirstLinesFromCommandOutput.js +1 -1
  366. package/dist/pipeline/src/deploy/cloudRun/utils/removeFirstLinesFromCommandOutput.js.map +1 -1
  367. package/dist/pipeline/src/deploy/cloudSql/utils.js +4 -4
  368. package/dist/pipeline/src/deploy/cloudSql/utils.js.map +1 -1
  369. package/dist/pipeline/src/deploy/custom/deployJob.js +23 -43
  370. package/dist/pipeline/src/deploy/custom/deployJob.js.map +1 -1
  371. package/dist/pipeline/src/deploy/custom/index.d.ts +2 -2
  372. package/dist/pipeline/src/deploy/custom/index.js +4 -4
  373. package/dist/pipeline/src/deploy/custom/index.js.map +1 -1
  374. package/dist/pipeline/src/deploy/dockerTag/deployJob.js +17 -51
  375. package/dist/pipeline/src/deploy/dockerTag/deployJob.js.map +1 -1
  376. package/dist/pipeline/src/deploy/dockerTag/index.d.ts +2 -2
  377. package/dist/pipeline/src/deploy/dockerTag/index.js +4 -4
  378. package/dist/pipeline/src/deploy/dockerTag/index.js.map +1 -1
  379. package/dist/pipeline/src/deploy/index.d.ts +7 -7
  380. package/dist/pipeline/src/deploy/index.js +4 -4
  381. package/dist/pipeline/src/deploy/index.js.map +1 -1
  382. package/dist/pipeline/src/deploy/kubernetes/additionalSecretKeys.d.ts +3 -1
  383. package/dist/pipeline/src/deploy/kubernetes/additionalSecretKeys.js +6 -7
  384. package/dist/pipeline/src/deploy/kubernetes/additionalSecretKeys.js.map +1 -1
  385. package/dist/pipeline/src/deploy/kubernetes/cloudSql/index.js +21 -19
  386. package/dist/pipeline/src/deploy/kubernetes/cloudSql/index.js.map +1 -1
  387. package/dist/pipeline/src/deploy/kubernetes/deployJob.js +65 -76
  388. package/dist/pipeline/src/deploy/kubernetes/deployJob.js.map +1 -1
  389. package/dist/pipeline/src/deploy/kubernetes/index.d.ts +2 -2
  390. package/dist/pipeline/src/deploy/kubernetes/index.js +21 -47
  391. package/dist/pipeline/src/deploy/kubernetes/index.js.map +1 -1
  392. package/dist/pipeline/src/deploy/kubernetes/kubeEnv.js +15 -37
  393. package/dist/pipeline/src/deploy/kubernetes/kubeEnv.js.map +1 -1
  394. package/dist/pipeline/src/deploy/kubernetes/kubeValues.js +27 -64
  395. package/dist/pipeline/src/deploy/kubernetes/kubeValues.js.map +1 -1
  396. package/dist/pipeline/src/deploy/kubernetes/mongodb.js +45 -55
  397. package/dist/pipeline/src/deploy/kubernetes/mongodb.js.map +1 -1
  398. package/dist/pipeline/src/deploy/kubernetes/processSecretsAsFiles.js +15 -17
  399. package/dist/pipeline/src/deploy/kubernetes/processSecretsAsFiles.js.map +1 -1
  400. package/dist/pipeline/src/deploy/sbom.d.ts +1 -1
  401. package/dist/pipeline/src/deploy/sbom.js +11 -11
  402. package/dist/pipeline/src/deploy/sbom.js.map +1 -1
  403. package/dist/pipeline/src/deploy/types/custom.d.ts +2 -6
  404. package/dist/pipeline/src/deploy/types/googleCloudRun.d.ts +26 -0
  405. package/dist/pipeline/src/deploy/types/index.d.ts +3 -3
  406. package/dist/pipeline/src/deploy/types/index.js +2 -6
  407. package/dist/pipeline/src/deploy/types/index.js.map +1 -1
  408. package/dist/pipeline/src/deploy/utils.js +8 -7
  409. package/dist/pipeline/src/deploy/utils.js.map +1 -1
  410. package/dist/pipeline/src/packageInfos.d.ts +3 -1
  411. package/dist/pipeline/src/packageInfos.js +10 -5
  412. package/dist/pipeline/src/packageInfos.js.map +1 -1
  413. package/dist/pipeline/src/pipeline/createAllJobs.d.ts +12 -10
  414. package/dist/pipeline/src/pipeline/createAllJobs.js +39 -81
  415. package/dist/pipeline/src/pipeline/createAllJobs.js.map +1 -1
  416. package/dist/pipeline/src/pipeline/createChildPipeline.js +24 -70
  417. package/dist/pipeline/src/pipeline/createChildPipeline.js.map +1 -1
  418. package/dist/pipeline/src/pipeline/createJobsForComponent.d.ts +3 -3
  419. package/dist/pipeline/src/pipeline/createJobsForComponent.js +21 -120
  420. package/dist/pipeline/src/pipeline/createJobsForComponent.js.map +1 -1
  421. package/dist/pipeline/src/pipeline/createJobsForWorkspace.d.ts +3 -0
  422. package/dist/pipeline/src/pipeline/createJobsForWorkspace.js +10 -0
  423. package/dist/pipeline/src/pipeline/createJobsForWorkspace.js.map +1 -0
  424. package/dist/pipeline/src/pipeline/createMainPipeline.js +57 -130
  425. package/dist/pipeline/src/pipeline/createMainPipeline.js.map +1 -1
  426. package/dist/pipeline/src/pipeline/generatePipelineFiles.d.ts +38 -0
  427. package/dist/pipeline/src/pipeline/generatePipelineFiles.js +47 -92
  428. package/dist/pipeline/src/pipeline/generatePipelineFiles.js.map +1 -1
  429. package/dist/pipeline/src/pipeline/getPipelineStages.d.ts +3 -4
  430. package/dist/pipeline/src/pipeline/getPipelineStages.js +11 -35
  431. package/dist/pipeline/src/pipeline/getPipelineStages.js.map +1 -1
  432. package/dist/pipeline/src/pipeline/gitlab/createGitlabJobs.d.ts +4 -4
  433. package/dist/pipeline/src/pipeline/gitlab/createGitlabJobs.js +226 -189
  434. package/dist/pipeline/src/pipeline/gitlab/createGitlabJobs.js.map +1 -1
  435. package/dist/pipeline/src/pipeline/gitlab/createGitlabPipeline.js +14 -26
  436. package/dist/pipeline/src/pipeline/gitlab/createGitlabPipeline.js.map +1 -1
  437. package/dist/pipeline/src/pipeline/gitlab/getPipelineTriggerForGitlabChildPipeline.js +11 -11
  438. package/dist/pipeline/src/pipeline/gitlab/getPipelineTriggerForGitlabChildPipeline.js.map +1 -1
  439. package/dist/pipeline/src/pipeline/gitlab/gitlabReleaseJobs.d.ts +2 -0
  440. package/dist/pipeline/src/pipeline/gitlab/gitlabReleaseJobs.js +10 -8
  441. package/dist/pipeline/src/pipeline/gitlab/gitlabReleaseJobs.js.map +1 -1
  442. package/dist/pipeline/src/pipeline/gitlab/sortGitLabJobDefProps.d.ts +7 -0
  443. package/dist/pipeline/src/pipeline/gitlab/sortGitLabJobDefProps.js +50 -0
  444. package/dist/pipeline/src/pipeline/gitlab/sortGitLabJobDefProps.js.map +1 -0
  445. package/dist/pipeline/src/pipeline/packageManager.d.ts +3 -2
  446. package/dist/pipeline/src/pipeline/packageManager.js +62 -115
  447. package/dist/pipeline/src/pipeline/packageManager.js.map +1 -1
  448. package/dist/pipeline/src/pipeline/yarn/yarnUtils.d.ts +2 -2
  449. package/dist/pipeline/src/pipeline/yarn/yarnUtils.js +30 -119
  450. package/dist/pipeline/src/pipeline/yarn/yarnUtils.js.map +1 -1
  451. package/dist/pipeline/src/runner/index.js +2 -4
  452. package/dist/pipeline/src/runner/index.js.map +1 -1
  453. package/dist/pipeline/src/types/config.d.ts +10 -5
  454. package/dist/pipeline/src/types/config.js +4 -28
  455. package/dist/pipeline/src/types/config.js.map +1 -1
  456. package/dist/pipeline/src/types/context.d.ts +91 -19
  457. package/dist/pipeline/src/types/context.js +9 -0
  458. package/dist/pipeline/src/types/context.js.map +1 -1
  459. package/dist/pipeline/src/types/environmentContext.d.ts +5 -6
  460. package/dist/pipeline/src/types/gitlab-types.d.ts +2 -2
  461. package/dist/pipeline/src/types/index.d.ts +1 -0
  462. package/dist/pipeline/src/types/index.js +1 -0
  463. package/dist/pipeline/src/types/index.js.map +1 -1
  464. package/dist/pipeline/src/types/jobDefinition.d.ts +11 -0
  465. package/dist/pipeline/src/types/jobDefinition.js +3 -0
  466. package/dist/pipeline/src/types/jobDefinition.js.map +1 -0
  467. package/dist/pipeline/src/types/jobs.d.ts +8 -2
  468. package/dist/pipeline/src/types/jobs.js.map +1 -1
  469. package/dist/pipeline/src/utils/gitlab.js +19 -42
  470. package/dist/pipeline/src/utils/gitlab.js.map +1 -1
  471. package/dist/pipeline/src/utils/index.d.ts +2 -1
  472. package/dist/pipeline/src/utils/index.js +9 -35
  473. package/dist/pipeline/src/utils/index.js.map +1 -1
  474. package/dist/pipeline/src/utils/jsonParse.d.ts +1 -0
  475. package/dist/pipeline/src/utils/jsonParse.js +13 -0
  476. package/dist/pipeline/src/utils/jsonParse.js.map +1 -0
  477. package/dist/pipeline/src/utils/removeUndefined.d.ts +1 -0
  478. package/dist/pipeline/src/utils/removeUndefined.js +6 -0
  479. package/dist/pipeline/src/utils/removeUndefined.js.map +1 -0
  480. package/dist/pipeline/src/utils/writeFiles.d.ts +4 -0
  481. package/dist/pipeline/src/utils/writeFiles.js +26 -69
  482. package/dist/pipeline/src/utils/writeFiles.js.map +1 -1
  483. package/dist/tsconfig.tsbuildinfo +1 -1
  484. package/package.json +8 -7
  485. package/scripts/bundle +3 -3
  486. package/src/apps/cli/commands/project/cloudSql/commandProjectRestoreDb.ts +4 -4
  487. package/src/apps/cli/commands/project/commandCloudSqlProxy.ts +8 -19
  488. package/src/apps/cli/commands/project/commandOpenDashboard.ts +2 -2
  489. package/src/apps/cli/commands/project/commandPortForward.ts +4 -4
  490. package/src/apps/cli/commands/project/commandRenewToken.ts +12 -0
  491. package/src/apps/cli/commands/project/index.ts +2 -0
  492. package/src/apps/cli/commands/project/setup/setupAccessTokens.ts +48 -35
  493. package/src/apps/cli/commands/project/setup/setupCloudRun.ts +4 -4
  494. package/src/apps/cli/commands/project/setup/setupContext.ts +4 -16
  495. package/src/apps/cli/commands/project/setup/setupKubernetes.ts +4 -4
  496. package/src/apps/cli/commands/project/utils/ensureCluster.ts +2 -4
  497. package/src/apps/cli/commands/project/utils/ensureNamespace.ts +3 -16
  498. package/src/catenv.ts +12 -2
  499. package/src/config/getProjectConfig.ts +21 -19
  500. package/src/gcloud/cloudRun/openCloudRunDashboards.ts +2 -2
  501. package/src/gcloud/serviceAccounts.ts +28 -10
  502. package/src/kubernetes/openKubernetesDashboards.ts +2 -2
  503. package/src/utils/projects/index.ts +7 -2
  504. package/tsconfig.json +2 -2
  505. package/.nvmrc +0 -1
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "@catladder/cli",
3
- "description": "Panter cli tool for Kubernetes",
3
+ "description": "Panter cli tool for cloud CI/CD and DevOps",
4
4
  "author": "Marco Wettstein <maw@panter.ch>",
5
- "homepage": "https://git.panter.ch/catladder/catladder/#readme",
5
+ "homepage": "https://catladder.git.panter.biz/catladder/docs",
6
6
  "bugs": "https://git.panter.ch/catladder/catladder/issues",
7
+ "readme": "https://git.panter.ch/catladder/catladder/-/blob/main/cli/README.md",
7
8
  "repository": {
8
9
  "type": "git",
9
10
  "url": "git+https://git.panter.ch/catladder/catladder.git",
@@ -52,7 +53,7 @@
52
53
  }
53
54
  ],
54
55
  "license": "MIT",
55
- "version": "0.0.0-refactor-docker-c24f8608",
56
+ "version": "0.0.0-refactor-cache-b38c122b",
56
57
  "scripts": {
57
58
  "lint": "eslint \"src/**/*.ts\"",
58
59
  "lint:fix": "eslint \"src/**/*.ts\" --fix",
@@ -70,10 +71,7 @@
70
71
  "types": "dist/cli/src/index.d.ts",
71
72
  "main": "dist/cli/src/index.js",
72
73
  "engines": {
73
- "node": ">=12.0.0"
74
- },
75
- "dependencies": {
76
- "ts-node": "^10.9.1"
74
+ "node": ">=18.0.0"
77
75
  },
78
76
  "devDependencies": {
79
77
  "@gitbeaker/rest": "^39.28.0",
@@ -110,5 +108,8 @@
110
108
  "vorpal": "^1.12.0",
111
109
  "yaml": "^2.4.5"
112
110
  },
111
+ "dependencies": {
112
+ "tsx": "^4.16.2"
113
+ },
113
114
  "stableVersion": "0.0.0"
114
115
  }
package/scripts/bundle CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/bin/bash
2
- ncc build dist/cli/src/catenv.js -o dist/bundles/catenv -e 'ts-node' $( ((SHOULD_MINIFY == 1)) && printf %s '-m')
2
+ ncc build dist/cli/src/catenv.js -o dist/bundles/catenv -e 'tsx/cjs/api' $( ((SHOULD_MINIFY == 1)) && printf %s '-m')
3
3
 
4
- ncc build dist/cli/src/cli.js -o dist/bundles/cli -e 'ts-node' $( ((SHOULD_MINIFY == 1)) && printf %s '-m')
4
+ ncc build dist/cli/src/cli.js -o dist/bundles/cli -e 'tsx/cjs/api' $( ((SHOULD_MINIFY == 1)) && printf %s '-m')
5
5
 
6
- ncc build dist/cli/src/catci.js -o dist/bundles/catci -e 'ts-node' $( ((SHOULD_MINIFY == 1)) && printf %s '-m')
6
+ ncc build dist/cli/src/catci.js -o dist/bundles/catci -e 'tsx/cjs/api' $( ((SHOULD_MINIFY == 1)) && printf %s '-m')
@@ -36,8 +36,8 @@ export default async (vorpal: Vorpal) =>
36
36
 
37
37
  const sourceEnvVars = await getEnvVarsResolved(
38
38
  this,
39
- sourceContext.environment.shortName,
40
- sourceContext.componentName,
39
+ sourceContext.env,
40
+ sourceContext.name,
41
41
  );
42
42
 
43
43
  let sourceProxy: CloudSqlBackgroundProxy;
@@ -99,8 +99,8 @@ export default async (vorpal: Vorpal) =>
99
99
 
100
100
  const targetEnvVars = await getEnvVarsResolved(
101
101
  this,
102
- targetContext.environment.shortName,
103
- targetContext.componentName,
102
+ targetContext.env,
103
+ targetContext.name,
104
104
  );
105
105
 
106
106
  if (targetEnv === "local") {
@@ -38,11 +38,9 @@ export default async (vorpal: Vorpal) =>
38
38
  "⚠️ connection string does not include mr information on review environments",
39
39
  );
40
40
  }
41
- if (isOfDeployType(context.componentConfig.deploy, "kubernetes")) {
41
+ if (isOfDeployType(context.deploy?.config, "kubernetes")) {
42
42
  proxyInfo = await getProxyInfoForKubernetes(this, context);
43
- } else if (
44
- isOfDeployType(context.componentConfig.deploy, "google-cloudrun")
45
- ) {
43
+ } else if (isOfDeployType(context.deploy?.config, "google-cloudrun")) {
46
44
  proxyInfo = await getProxyInfoForCloudRun(this, context);
47
45
  } else {
48
46
  throw new Error("unsupported environment");
@@ -81,15 +79,11 @@ const getProxyInfoForKubernetes = async (
81
79
  vorpal: CommandInstance,
82
80
  context: ComponentContext,
83
81
  ): Promise<ProxyInfo> => {
84
- if (!isOfDeployType(context.componentConfig.deploy, "kubernetes")) {
82
+ if (!isOfDeployType(context.deploy?.config, "kubernetes")) {
85
83
  throw new Error("unsupported");
86
84
  }
87
85
 
88
- const envVars = await getEnvVarsResolved(
89
- vorpal,
90
- context.environment.shortName,
91
- context.componentName,
92
- );
86
+ const envVars = await getEnvVarsResolved(vorpal, context.env, context.name);
93
87
  // bit hacky, would be nicer if we would also declare this through env vars
94
88
  const cloudSqlValues = createKubernetesCloudsqlBaseValues(context);
95
89
 
@@ -112,17 +106,13 @@ const getProxyInfoForCloudRun = async (
112
106
  context: ComponentContext,
113
107
  ): Promise<ProxyInfo> => {
114
108
  if (
115
- !isOfDeployType(context.componentConfig.deploy, "google-cloudrun") ||
116
- !context.componentConfig.deploy.cloudSql
109
+ !isOfDeployType(context.deploy?.config, "google-cloudrun") ||
110
+ !context.deploy?.config.cloudSql
117
111
  ) {
118
112
  throw new Error("unsupported");
119
113
  }
120
114
 
121
- const envVars = await getEnvVarsResolved(
122
- vorpal,
123
- context.environment.shortName,
124
- context.componentName,
125
- );
115
+ const envVars = await getEnvVarsResolved(vorpal, context.env, context.name);
126
116
 
127
117
  const DB_PASSWORD = envVars?.DB_PASSWORD;
128
118
  const DB_USER = envVars?.DB_USER;
@@ -130,8 +120,7 @@ const getProxyInfoForCloudRun = async (
130
120
  const DB_NAME = context.environment.envVars.DB_NAME.toString();
131
121
 
132
122
  return {
133
- instanceName:
134
- context.componentConfig.deploy.cloudSql.instanceConnectionName,
123
+ instanceName: context.deploy?.config.cloudSql.instanceConnectionName,
135
124
  DB_PASSWORD,
136
125
  DB_NAME,
137
126
  DB_USER,
@@ -19,10 +19,10 @@ export default async (vorpal: Vorpal) =>
19
19
  .action(async function ({ envComponent }) {
20
20
  const { env, componentName } = parseChoice(envComponent);
21
21
  const context = await getPipelineContextByChoice(env, componentName);
22
- if (isOfDeployType(context.componentConfig.deploy, "kubernetes")) {
22
+ if (isOfDeployType(context.deploy?.config, "kubernetes")) {
23
23
  await openGoogleCloudKubernetesDashboard(this, context);
24
24
  }
25
- if (isOfDeployType(context.componentConfig.deploy, "google-cloudrun")) {
25
+ if (isOfDeployType(context.deploy?.config, "google-cloudrun")) {
26
26
  await openGoogleCloudRunDashboard(this, context);
27
27
  }
28
28
  });
@@ -48,7 +48,7 @@ const cloudRunPortForward = async (
48
48
  cmd: CommandInstance,
49
49
  context: ComponentContext,
50
50
  ) => {
51
- if (!isOfDeployType(context.componentConfig.deploy, "google-cloudrun")) {
51
+ if (!isOfDeployType(context.deploy?.config, "google-cloudrun")) {
52
52
  throw new Error("not cloud run");
53
53
  }
54
54
 
@@ -67,7 +67,7 @@ const cloudRunPortForward = async (
67
67
  .replace("-review-", "-review-mr" + mr + "-");
68
68
  }
69
69
 
70
- const { projectId, region } = context.componentConfig.deploy;
70
+ const { projectId, region } = context.deploy.config;
71
71
 
72
72
  const command = `gcloud beta run services proxy ${serviceName} --project ${projectId} --region ${region}`;
73
73
 
@@ -82,10 +82,10 @@ export default async (vorpal: Vorpal) =>
82
82
  const { env, componentName } = parseChoice(envComponent);
83
83
  const context = await getPipelineContextByChoice(env, componentName);
84
84
 
85
- if (isOfDeployType(context.componentConfig.deploy, "kubernetes")) {
85
+ if (isOfDeployType(context.deploy?.config, "kubernetes")) {
86
86
  await kubePortForward(this, envComponent);
87
87
  }
88
- if (isOfDeployType(context.componentConfig.deploy, "google-cloudrun")) {
88
+ if (isOfDeployType(context.deploy?.config, "google-cloudrun")) {
89
89
  await cloudRunPortForward(this, context);
90
90
  }
91
91
  });
@@ -0,0 +1,12 @@
1
+ import type Vorpal from "vorpal";
2
+ import { setupAccessTokens } from "./setup/setupAccessTokens";
3
+
4
+ export default async (vorpal: Vorpal) =>
5
+ vorpal
6
+ .command(
7
+ "project-renew-token",
8
+ "Configures the project access token for semantic release.",
9
+ )
10
+ .action(async function () {
11
+ await setupAccessTokens(this);
12
+ });
@@ -9,6 +9,7 @@ import commandGetMyTotalWorktime from "./commandGetMyTotalWorktime";
9
9
  import commandGetShell from "./commandGetShell";
10
10
  import commandGitlabCi from "./commandGitlabCi";
11
11
  import commandSetup from "./commandSetup";
12
+ import commandRenewToken from "./commandRenewToken";
12
13
  import commandListPods from "./commandListPods";
13
14
  import commandMigrateHelm3 from "./commandMigrateHelm3";
14
15
  import commandNamespace from "./commandNamespace";
@@ -29,6 +30,7 @@ import commandSecurityEvaluate from "./commandSecurityEvaluate";
29
30
 
30
31
  export default async (vorpal: Vorpal) => {
31
32
  commandSetup(vorpal);
33
+ commandRenewToken(vorpal);
32
34
 
33
35
  commandEnvVars(vorpal);
34
36
 
@@ -1,57 +1,70 @@
1
- import open from "open";
2
1
  import type { CommandInstance } from "vorpal";
2
+ import dayjs from "dayjs";
3
3
  import { doGitlabRequest, getProjectInfo } from "../../../../../utils/gitlab";
4
4
 
5
+ const TOKEN_NAME = "semantic-release";
6
+
5
7
  export const setupAccessTokens = async (instance: CommandInstance) => {
6
- const { id: projectId, web_url: projectWebUrl } =
7
- await getProjectInfo(instance);
8
+ const { id: projectId } = await getProjectInfo(instance);
9
+
10
+ const projectTokens = await doGitlabRequest(
11
+ instance,
12
+ `projects/${projectId}/access_tokens`,
13
+ );
14
+ const token = projectTokens.find(
15
+ (t) => t.name === TOKEN_NAME && t.active === true,
16
+ );
17
+
18
+ const expires_at = dayjs()
19
+ .add(1, "year")
20
+ .subtract(1, "day")
21
+ .format("YYYY-MM-DD");
22
+
23
+ const newToken = token
24
+ ? await doGitlabRequest(
25
+ instance,
26
+ `projects/${projectId}/access_tokens/${token.id}/rotate`,
27
+ { expires_at },
28
+ "POST",
29
+ )
30
+ : await doGitlabRequest(
31
+ instance,
32
+ `projects/${projectId}/access_tokens`,
33
+ {
34
+ name: TOKEN_NAME,
35
+ scopes: ["api", "read_repository"],
36
+ access_level: 40, // Maintainer
37
+ expires_at,
38
+ },
39
+ "POST",
40
+ );
41
+
8
42
  try {
9
43
  await doGitlabRequest(instance, `projects/${projectId}/variables/GL_TOKEN`);
44
+ await doGitlabRequest(
45
+ instance,
46
+ `projects/${projectId}/variables/GL_TOKEN`,
47
+ { value: newToken.token },
48
+ "PUT",
49
+ );
10
50
  } catch (e) {
11
51
  if (e.message !== "not found") {
12
52
  throw e;
13
53
  }
14
54
  // not found
15
-
16
- instance.log(
17
- "I need add a GL_TOKEN to the project, so that semantic release will work\n",
18
- );
19
- instance.log(
20
- "👉 Please please create a project access token in gitlab and copy its value into clipboard\n\n - name: something like 'semantic-release'\n - expires: leave empty\n - role: maintainer - scopes: api, read_repository",
21
- );
22
- instance.log("\n");
23
-
24
- const { understood } = await instance.prompt({
25
- default: true,
26
- message: "Understood and open gitlab now? 🤔",
27
- name: "understood",
28
- type: "confirm",
29
- });
30
- if (!understood) {
31
- instance.log("continuing anyway...");
32
- }
33
- open(`${projectWebUrl}/-/settings/access_tokens`);
34
-
35
- instance.log("\n");
36
-
37
- instance.log("Enter your copied token now: ");
38
-
39
- instance.log("\n");
40
- const { GL_TOKEN } = await instance.prompt({
41
- type: "password",
42
- name: "GL_TOKEN",
43
- message: "Access Token: ",
44
- });
45
-
46
55
  await doGitlabRequest(
47
56
  instance,
48
57
  `projects/${projectId}/variables`,
49
58
  {
50
59
  key: "GL_TOKEN",
51
- value: GL_TOKEN,
60
+ value: newToken.token,
52
61
  masked: true,
53
62
  },
54
63
  "POST",
55
64
  );
56
65
  }
66
+
67
+ instance.log(
68
+ "Token configured for semantic release. Renew me again in a year!",
69
+ );
57
70
  };
@@ -16,11 +16,11 @@ export const setupCloudRun = async (
16
16
  instance: CommandInstance,
17
17
  context: ComponentContext,
18
18
  ) => {
19
- if (!isOfDeployType(context.componentConfig.deploy, "google-cloudrun")) {
19
+ if (!isOfDeployType(context.deploy?.config, "google-cloudrun")) {
20
20
  throw new Error("deploy config is not of type 'google-cloudrun'");
21
21
  }
22
22
 
23
- const config = context.componentConfig.deploy;
23
+ const config = context.deploy?.config;
24
24
 
25
25
  // enable services
26
26
 
@@ -76,8 +76,8 @@ export const setupCloudRun = async (
76
76
  {
77
77
  [GCLOUD_RUN_CANONICAL_HOST_SUFFIX]: suffix,
78
78
  },
79
- context.environment.shortName,
80
- context.componentName,
79
+ context.env,
80
+ context.name,
81
81
  false, // backup
82
82
  false, // masked
83
83
  );
@@ -14,31 +14,19 @@ export const setupContext = async (
14
14
  "==================================================================================",
15
15
  );
16
16
 
17
- instance.log(
18
- "🐱 🔧 setting up " +
19
- context.environment.shortName +
20
- ":" +
21
- context.componentName +
22
- "...",
23
- );
17
+ instance.log("🐱 🔧 setting up " + context.env + ":" + context.name + "...");
24
18
  instance.log("");
25
- if (isOfDeployType(context.componentConfig.deploy, "google-cloudrun")) {
19
+ if (isOfDeployType(context.deploy?.config, "google-cloudrun")) {
26
20
  await setupCloudRun(instance, context);
27
21
  }
28
22
 
29
- const deployConfig = context.componentConfig.deploy;
23
+ const deployConfig = context.deploy?.config;
30
24
  if (isOfDeployType(deployConfig, "kubernetes")) {
31
25
  await setupKubernetes(instance, context);
32
26
  }
33
27
 
34
28
  instance.log("");
35
- instance.log(
36
- "✅ " +
37
- context.environment.shortName +
38
- ":" +
39
- context.componentName +
40
- " done!",
41
- );
29
+ instance.log("✅ " + context.env + ":" + context.name + " done!");
42
30
 
43
31
  instance.log("");
44
32
  };
@@ -17,7 +17,7 @@ export const setupKubernetes = async (
17
17
  instance: CommandInstance,
18
18
  context: ComponentContext,
19
19
  ) => {
20
- const deployConfig = context.componentConfig.deploy;
20
+ const deployConfig = context.deploy?.config;
21
21
  if (!isOfDeployType(deployConfig, "kubernetes")) {
22
22
  throw new Error("cannot run setupKubernetes on non-kubernetes deployments");
23
23
  }
@@ -63,7 +63,7 @@ export const setupKubernetes = async (
63
63
  // we name the service account and the role and the role binding with the same name
64
64
  // we currently create one per component to better separate them
65
65
  instance.log("ensuring service accounts...");
66
- const serviceAccountName = `cl-${context.componentName}-deploy`;
66
+ const serviceAccountName = `cl-${context.name}-deploy`;
67
67
  const KUBE_URL = await exec(
68
68
  `TERM=dumb kubectl cluster-info | grep -E 'Kubernetes master|Kubernetes control plane' | awk '/http/ {print $NF}'`,
69
69
  ).then((s) => s.stdout.trim());
@@ -163,8 +163,8 @@ EOF
163
163
  await upsertAllVariables(
164
164
  instance,
165
165
  vars,
166
- context.environment.shortName,
167
- context.componentName,
166
+ context.env,
167
+ context.name,
168
168
  false, // no backup
169
169
  );
170
170
  instance.log("done!");
@@ -13,12 +13,10 @@ import {
13
13
  export default async function (envComponent: string) {
14
14
  const { env, componentName } = parseChoice(envComponent);
15
15
  const context = await getPipelineContextByChoice(env, componentName);
16
- if (!isOfDeployType(context.componentConfig.deploy, "kubernetes")) {
16
+ if (!isOfDeployType(context.deploy?.config, "kubernetes")) {
17
17
  throw new Error("can't ensure cluster for non-kubernetes deployments");
18
18
  }
19
- const cluster = getFullKubernetesClusterName(
20
- context.componentConfig.deploy.cluster,
21
- );
19
+ const cluster = getFullKubernetesClusterName(context.deploy?.config.cluster);
22
20
  const connectedClusterName = await getCurrentConnectedClusterName();
23
21
 
24
22
  if (cluster !== connectedClusterName) {
@@ -5,29 +5,16 @@ import { V1Namespace } from "@kubernetes/client-node";
5
5
  import { getk8sApi } from "../../../../../k8sApi";
6
6
 
7
7
  export default async function (context: ComponentContext) {
8
- const namespace = getKubernetesNamespace(
9
- context.fullConfig,
10
- context.environment.shortName,
11
- );
8
+ const namespace = getKubernetesNamespace(context.fullConfig, context.env);
12
9
  const namespaceBody = new V1Namespace();
13
10
  const metadata: V1ObjectMeta = {
14
11
  name: namespace,
15
12
  labels: {
16
13
  customerName: context.fullConfig.customerName,
17
14
  appName: context.fullConfig.appName,
18
- environment: context.environment.shortName,
15
+ environment: context.env,
19
16
  components: Object.keys(context.fullConfig.components).join("_"), // limited chars available...
20
- buildTypes: Object.values(context.fullConfig.components)
21
- .map((config) => config.build.type)
22
- .join("_"), // limited chars available...
23
- ...Object.fromEntries(
24
- Object.entries(context.fullConfig.components).map(
25
- ([componentName, config]) => [
26
- "buildType_" + componentName,
27
- config.build.type,
28
- ],
29
- ),
30
- ),
17
+
31
18
  ...(context.fullConfig.meta?.labels ?? {}),
32
19
  },
33
20
  };
package/src/catenv.ts CHANGED
@@ -2,9 +2,19 @@ import catenv from "./apps/catenv/catenv";
2
2
 
3
3
  import { parseChoice } from "./config/parseChoice";
4
4
 
5
- const choice = process.argv[2] ? parseChoice(process.argv[2]) : null;
5
+ const args = process.argv.slice(2);
6
6
 
7
- catenv(choice).then(() => {
7
+ const helpFlags = ["--help", "-h", "help"];
8
+ if (args.some((arg) => helpFlags.includes(arg))) {
9
+ const docLink =
10
+ "https://git.panter.ch/catladder/catladder/-/blob/main/docs/1_VARS.md";
11
+ console.log(
12
+ `\nUsage: catenv [env|env:component]\n\nEnv variable and catenv documentation:\n${docLink}`,
13
+ );
14
+ process.exit(0);
15
+ }
16
+
17
+ catenv(args[0] ? parseChoice(args[0]) : null).then(() => {
8
18
  // we have to exit manually, because we have some file watches
9
19
  process.exit();
10
20
  });
@@ -1,6 +1,6 @@
1
1
  import type { Config, EnvironmentEnvVars } from "@catladder/pipeline";
2
2
  import {
3
- readConfigSync,
3
+ readConfig,
4
4
  getAllEnvs,
5
5
  getEnvironment as _getEnvironment,
6
6
  createComponentContext,
@@ -21,7 +21,10 @@ let currentConfig: Config | null = null;
21
21
  // reload the config on change
22
22
  const reloadConfigAndObserve = async () => {
23
23
  const gitRoot = await getGitRoot();
24
- const result = readConfigSync(gitRoot);
24
+ if (!gitRoot) {
25
+ return;
26
+ }
27
+ const result = await readConfig(gitRoot);
25
28
  if (!result) {
26
29
  // can't do anything, there is no config
27
30
  return;
@@ -120,23 +123,22 @@ const resolveSecrets = async (
120
123
  const allVariablesInGitlab = await getAllVariables(vorpal);
121
124
 
122
125
  return Object.fromEntries(
123
- varSets.flatMap((set) =>
124
- Object.entries(set.envVars)
125
- .map(([key, value]) => {
126
- const secretKey = set.secretEnvVarKeys.find((k) => k.key === key);
127
-
128
- if (secretKey?.hidden || value === undefined) {
129
- return null;
130
- }
131
-
132
- for (const variable of allVariablesInGitlab) {
133
- value = value
134
- .toString()
135
- .replace(new RegExp("\\$" + variable.key, "g"), variable.value);
136
- }
137
- return [key, value];
138
- })
139
- .filter(Boolean),
126
+ varSets.flatMap(({ envVars, secretEnvVarKeys }) =>
127
+ Object.entries(envVars)
128
+ .filter(
129
+ ([key, value]) =>
130
+ value !== undefined &&
131
+ value !== null &&
132
+ !secretEnvVarKeys.find((k) => k.key === key)?.hidden,
133
+ )
134
+ .map(([key, value]) => [
135
+ key,
136
+ allVariablesInGitlab.reduce(
137
+ (acc, curr) =>
138
+ acc.replace(new RegExp("\\$" + curr.key, "g"), curr.value),
139
+ `${value}`,
140
+ ),
141
+ ]),
140
142
  ),
141
143
  );
142
144
  };
@@ -7,11 +7,11 @@ export const openGoogleCloudRunDashboard = async (
7
7
  instance: CommandInstance,
8
8
  context: ComponentContext,
9
9
  ) => {
10
- if (!isOfDeployType(context.componentConfig.deploy, "google-cloudrun")) {
10
+ if (!isOfDeployType(context.deploy?.config, "google-cloudrun")) {
11
11
  throw new Error("deploy type is not google-cloudrun ");
12
12
  }
13
13
  const { fullName } = context.environment;
14
- const { region, projectId } = context.componentConfig.deploy;
14
+ const { region, projectId } = context.deploy.config;
15
15
  await openGoogleCloudDashboard(
16
16
  instance,
17
17
  `run/detail/${region}/${fullName}/metrics`,
@@ -28,16 +28,34 @@ const upsertGcloudServiceAccount = async (
28
28
  const { projectId, name, displayName, roles, description } = account;
29
29
 
30
30
  // name has limit of 30
31
- const namePrefix = `${name}-`;
32
- const nameSuffix = `-${context.environment.shortName}-${context.componentName}`;
33
- const nameMiddleLength = 30 - namePrefix.length - nameSuffix.length;
34
- const nameMiddle = `${context.fullConfig.customerName}-${context.fullConfig.appName}`;
35
-
36
- const middle = hashIfNessecary(nameMiddle, nameMiddleLength);
31
+ const namePrefix = `${name}`;
32
+ const nameSuffixRaw = `${context.env}-${context.name}`;
33
+ const nameMiddleRaw = `${context.fullConfig.customerName}-${context.fullConfig.appName}`;
34
+ const MAX_LENGTH = 30;
35
+ const NUM_SEPARATORS = 2;
36
+
37
+ // we want to first hash middle, then suffix
38
+ // if for middle we have at least 1 char left, its ok, so we don't hash nameSuffix, otherwise we need to hash that as well
39
+
40
+ const middleMaxLength =
41
+ MAX_LENGTH - namePrefix.length - nameSuffixRaw.length - NUM_SEPARATORS;
42
+
43
+ let nameMiddle: string;
44
+ let nameSuffix: string;
45
+ if (middleMaxLength < 1) {
46
+ nameMiddle = hashIfNessecary(nameMiddleRaw, 1);
47
+ nameSuffix = hashIfNessecary(
48
+ nameSuffixRaw,
49
+ MAX_LENGTH - namePrefix.length - 1 - NUM_SEPARATORS,
50
+ );
51
+ } else {
52
+ nameMiddle = hashIfNessecary(nameMiddleRaw, middleMaxLength);
53
+ nameSuffix = nameSuffixRaw;
54
+ }
37
55
 
38
- const fullName = `${namePrefix}${middle}${nameSuffix}`;
56
+ const fullName = `${namePrefix}-${nameMiddle}-${nameSuffix}`;
39
57
 
40
- const fullDisplayName = `${context.fullConfig.customerName}-${context.fullConfig.appName} ${context.environment.shortName}:${context.componentName} | ${displayName}`;
58
+ const fullDisplayName = `${context.fullConfig.customerName}-${context.fullConfig.appName} ${context.env}:${context.name} | ${displayName}`;
41
59
 
42
60
  const fullIdentifier = `${fullName}@${projectId}.iam.gserviceaccount.com`;
43
61
 
@@ -88,8 +106,8 @@ export const upsertGcloudServiceAccountAndSaveSecret = async (
88
106
  {
89
107
  [secretName]: key,
90
108
  },
91
- context.environment.shortName,
92
- context.componentName,
109
+ context.env,
110
+ context.name,
93
111
  );
94
112
  instance.log("done!");
95
113
  };
@@ -7,7 +7,7 @@ export const openGoogleCloudLogs = async (
7
7
  instance: CommandInstance,
8
8
  context: ComponentContext,
9
9
  ) => {
10
- const deployConfig = context.componentConfig.deploy;
10
+ const deployConfig = context.deploy?.config;
11
11
  if (!isOfDeployType(deployConfig, "kubernetes")) {
12
12
  throw new Error("context is not of type kubernetes");
13
13
  }
@@ -33,7 +33,7 @@ export const openGoogleCloudKubernetesDashboard = async (
33
33
  instance: CommandInstance,
34
34
  context: ComponentContext,
35
35
  ) => {
36
- const deployConfig = context.componentConfig.deploy;
36
+ const deployConfig = context.deploy?.config;
37
37
  if (!isOfDeployType(deployConfig, "kubernetes")) {
38
38
  throw new Error("context is not of type kubernetes");
39
39
  }
@@ -4,8 +4,13 @@ import { getProjectConfig, parseChoice } from "../../config/getProjectConfig";
4
4
  import { readFileOrError } from "../files";
5
5
  import { exec } from "child-process-promise";
6
6
 
7
- export const getGitRoot = async (): Promise<string> => {
8
- return (await exec(`git rev-parse --show-toplevel`)).stdout.trim();
7
+ export const getGitRoot = async (): Promise<string | null> => {
8
+ try {
9
+ return (await exec(`git rev-parse --show-toplevel`)).stdout.trim();
10
+ } catch (e) {
11
+ // not a git repo
12
+ return null;
13
+ }
9
14
  };
10
15
 
11
16
  export const getRootGitlabCiFile = async () => {
package/tsconfig.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "compilerOptions": {
3
- "lib": ["es2021", "DOM"],
3
+ "lib": ["es2022", "DOM"],
4
4
  "module": "CommonJS",
5
5
  "downlevelIteration": true,
6
6
  "declaration": true,
7
-
7
+ "target": "ES2018",
8
8
  "moduleResolution": "node",
9
9
  "esModuleInterop": true,
10
10
  "sourceMap": true,