@vaharoni/devops 1.2.12 → 1.2.14

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 (330) hide show
  1. package/dist/chunk-N7EX3HJH.js +139 -0
  2. package/dist/chunk-RZ46YYZZ.js +420 -0
  3. package/dist/chunk-WKP7EQNU.js +421 -0
  4. package/dist/devops.d.ts +0 -2
  5. package/dist/devops.js +3235 -91
  6. package/dist/index.d.ts +972 -4
  7. package/dist/index.js +67 -3
  8. package/dist/plugins.d.ts +95 -4
  9. package/dist/plugins.js +20 -6
  10. package/dist/src/target-templates/README.md +1 -0
  11. package/dist/src/target-templates/cluster-resource-options/README.md +2 -0
  12. package/dist/src/target-templates/cluster-resource-options/dns-test/dns-test.yaml +60 -0
  13. package/dist/src/target-templates/cluster-resource-options/milvus/production/milvus-values.yaml +2 -0
  14. package/dist/src/target-templates/cluster-resource-options/milvus/staging/milvus-values.yaml +2 -0
  15. package/dist/src/target-templates/cluster-resource-options/monitoring-ingress/monitoring-ingress.yaml +62 -0
  16. package/dist/src/target-templates/cluster-resource-options/postgres/daily-operator-restart.yaml +54 -0
  17. package/dist/src/target-templates/cluster-resource-options/postgres/production/cluster/PodDisruptionBudget.yaml +27 -0
  18. package/dist/src/target-templates/cluster-resource-options/postgres/production/cluster/SGCluster.yaml +47 -0
  19. package/dist/src/target-templates/cluster-resource-options/postgres/production/cluster/StackGres-alerts.yaml +191 -0
  20. package/dist/src/target-templates/cluster-resource-options/postgres/production/configurations/06-SGDistributedLogs.yaml +11 -0
  21. package/dist/src/target-templates/cluster-resource-options/postgres/production/configurations/07-SGObjectStorage.yaml +18 -0
  22. package/dist/src/target-templates/cluster-resource-options/postgres/production/configurations/08-SGScript.yaml +12 -0
  23. package/dist/src/target-templates/cluster-resource-options/postgres/stackgres-ui-ingress.yaml +35 -0
  24. package/dist/src/target-templates/cluster-resource-options/postgres/staging/cluster/SGCluster.yaml +42 -0
  25. package/dist/src/target-templates/cluster-resource-options/postgres/staging/configurations/07-SGObjectStorage.yaml +18 -0
  26. package/dist/src/target-templates/cluster-resource-options/postgres/staging/configurations/08-SGScript.yaml +12 -0
  27. package/dist/src/target-templates/cluster-resource-options/prefect/production/prefect-values.yaml +14 -0
  28. package/dist/src/target-templates/cluster-resource-options/prefect/staging/prefect-values.yaml +14 -0
  29. package/dist/src/target-templates/cluster-resource-options/redis/production/redis-values.yaml +20 -0
  30. package/dist/src/target-templates/cluster-resource-options/redis/staging/redis-values.yaml +8 -0
  31. package/dist/src/target-templates/infra-variants/README.md +2 -0
  32. package/dist/src/target-templates/infra-variants/digitalocean/.devops/config/constants.yaml +18 -0
  33. package/dist/src/target-templates/infra-variants/digitalocean/.github/workflows/k8s-build.yaml +91 -0
  34. package/dist/src/target-templates/infra-variants/gcloud/.devops/config/constants.yaml +15 -0
  35. package/dist/src/target-templates/infra-variants/gcloud/.devops/manifests/ingress.yaml.hb +22 -0
  36. package/dist/src/target-templates/infra-variants/gcloud/.github/workflows/k8s-build.yaml +95 -0
  37. package/dist/src/target-templates/infra-variants/hetzner/.devops/config/constants.yaml +18 -0
  38. package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/abandoned/harbor-values.yaml +30 -0
  39. package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/abandoned/hcloud-config.yaml +134 -0
  40. package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/cert-manager.yaml +25 -0
  41. package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/harbor-cert.yaml +13 -0
  42. package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/harbor-values.yaml +76 -0
  43. package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/hcloud-config.yaml +113 -0
  44. package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/ingress-nginx-annotations.yaml +49 -0
  45. package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/ingress-nginx-configmap.yaml +8 -0
  46. package/dist/src/target-templates/infra-variants/hetzner/.devops/infra/hetzner/retain-storage-class.yaml +8 -0
  47. package/dist/src/target-templates/infra-variants/hetzner/.github/workflows/k8s-build.yaml +93 -0
  48. package/dist/src/target-templates/lang-variants-common/README.md +4 -0
  49. package/dist/src/target-templates/lang-variants-common/python/.cursor/rules/monorepo-python.mdc +56 -0
  50. package/dist/src/target-templates/lang-variants-common/python/.devops/config/images.yaml +89 -0
  51. package/dist/src/target-templates/lang-variants-common/python/.devops/docker-images/python-services/python-exec.sh +8 -0
  52. package/dist/src/target-templates/lang-variants-common/python/.devops/docker-images/python-services/python-run.sh +8 -0
  53. package/dist/src/target-templates/lang-variants-common/python/.devops/docker-images/python-services.Dockerfile +29 -0
  54. package/dist/src/target-templates/lang-variants-common/python/.devops/manifests/_index.yaml +21 -0
  55. package/dist/src/target-templates/lang-variants-common/python/.devops/manifests/prefect.yaml.hb +63 -0
  56. package/dist/src/target-templates/lang-variants-common/python/applications/example-data-pipeline/pyproject.toml +14 -0
  57. package/dist/src/target-templates/lang-variants-common/python/applications/example-data-pipeline/src/example_data_pipeline/main.py +38 -0
  58. package/dist/src/target-templates/lang-variants-common/python/applications/example-python/pyproject.toml +20 -0
  59. package/dist/src/target-templates/lang-variants-common/python/applications/example-python/src/example_python/__init__.py +0 -0
  60. package/dist/src/target-templates/lang-variants-common/python/applications/example-python/src/example_python/main.py +13 -0
  61. package/dist/src/target-templates/lang-variants-common/python/applications/example-python/src/example_python/scripts.py +17 -0
  62. package/dist/src/target-templates/lang-variants-common/python/applications/example-python/tests/__init__.py +0 -0
  63. package/dist/src/target-templates/lang-variants-common/python/devopspy +3 -0
  64. package/dist/src/target-templates/lang-variants-common/python/libs/example-python-lib/pyproject.toml +11 -0
  65. package/dist/src/target-templates/lang-variants-common/python/libs/example-python-lib/src/example_python_lib/__init__.py +2 -0
  66. package/dist/src/target-templates/lang-variants-common/python/pyproject.toml +16 -0
  67. package/dist/src/target-templates/lang-variants-common/typescript/.cursor/rules/monorepo-typescript.mdc +51 -0
  68. package/dist/src/target-templates/lang-variants-common/typescript/.devops/config/images.yaml +69 -0
  69. package/dist/src/target-templates/lang-variants-common/typescript/.devops/docker-images/cloudrun.Dockerfile +31 -0
  70. package/dist/src/target-templates/lang-variants-common/typescript/.devops/docker-images/common/docker-common.sh +23 -0
  71. package/dist/src/target-templates/lang-variants-common/typescript/.devops/docker-images/node-services/node-exec.sh +8 -0
  72. package/dist/src/target-templates/lang-variants-common/typescript/.devops/docker-images/node-services/node-run.sh +8 -0
  73. package/dist/src/target-templates/lang-variants-common/typescript/.devops/docker-images/node-services.Dockerfile +31 -0
  74. package/dist/src/target-templates/lang-variants-common/typescript/.devops/env.example.yaml +23 -0
  75. package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/_index.yaml +19 -0
  76. package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/cron-jobs.yaml.hb +56 -0
  77. package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/db-migrate-job.yaml.hb +43 -0
  78. package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/deployment-debug.yaml.hb +42 -0
  79. package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/deployment-process.yaml.hb +48 -0
  80. package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/deployment-web.yaml.hb +54 -0
  81. package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/ingress.yaml.hb +21 -0
  82. package/dist/src/target-templates/lang-variants-common/typescript/.devops/manifests/service.yaml.hb +15 -0
  83. package/dist/src/target-templates/lang-variants-common/typescript/.envrc +5 -0
  84. package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/build-image@v1/action.yaml +81 -0
  85. package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/connect-to-digital-ocean@v1/action.yaml +29 -0
  86. package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/connect-to-gke@v1/action.yaml +43 -0
  87. package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/connect-to-hetzner@v1/action.yaml +31 -0
  88. package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/db-migrate@v1/action.yaml +23 -0
  89. package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/deploy-image-cloudrun@v1/action.yaml +71 -0
  90. package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/deploy-image-k8s@v1/action.yaml +37 -0
  91. package/dist/src/target-templates/lang-variants-common/typescript/.github/actions/setup-prereq@v1/action.yaml +24 -0
  92. package/dist/src/target-templates/lang-variants-common/typescript/applications/example-node/index.ts +30 -0
  93. package/dist/src/target-templates/lang-variants-common/typescript/applications/example-node/package.json +26 -0
  94. package/dist/src/target-templates/lang-variants-common/typescript/applications/example-node/tsconfig.json +3 -0
  95. package/dist/src/target-templates/lang-variants-common/typescript/applications/jobs/README.md +68 -0
  96. package/dist/src/target-templates/lang-variants-common/typescript/applications/jobs/index.ts +1 -0
  97. package/dist/src/target-templates/lang-variants-common/typescript/applications/jobs/package.json +30 -0
  98. package/dist/src/target-templates/lang-variants-common/typescript/applications/jobs/tsconfig.json +3 -0
  99. package/dist/src/target-templates/lang-variants-common/typescript/config/.env.development +1 -0
  100. package/dist/src/target-templates/lang-variants-common/typescript/config/.env.global +4 -0
  101. package/dist/src/target-templates/lang-variants-common/typescript/config/.env.test +1 -0
  102. package/dist/src/target-templates/lang-variants-common/typescript/devops +3 -0
  103. package/dist/src/target-templates/lang-variants-common/typescript/libs/example-node-lib/index.ts +3 -0
  104. package/dist/src/target-templates/lang-variants-common/typescript/libs/example-node-lib/package.json +12 -0
  105. package/dist/src/target-templates/lang-variants-common/typescript/libs/example-node-lib/tsconfig.json +3 -0
  106. package/dist/src/target-templates/lang-variants-common/typescript/tmp/.gitkeep +0 -0
  107. package/dist/src/target-templates/lang-variants-common/typescript/tsconfig.json +27 -0
  108. package/dist/src/target-templates/lang-variants-prisma/README.md +3 -0
  109. package/dist/src/target-templates/lang-variants-prisma/python/.cursor/rules/prisma-python.mdc +55 -0
  110. package/dist/src/target-templates/lang-variants-prisma/python/.cursor/rules/testing-python.mdc +89 -0
  111. package/dist/src/target-templates/lang-variants-prisma/python/db/db/__init__.py +0 -0
  112. package/dist/src/target-templates/lang-variants-prisma/python/db/db/db_client_test.py +46 -0
  113. package/dist/src/target-templates/lang-variants-prisma/python/db/pyproject.toml +14 -0
  114. package/dist/src/target-templates/lang-variants-prisma/typescript/.cursor/rules/prisma-typescript.mdc +54 -0
  115. package/dist/src/target-templates/lang-variants-prisma/typescript/.cursor/rules/testing-typescript.mdc +103 -0
  116. package/dist/src/target-templates/lang-variants-prisma/typescript/db/db-client-test.ts +142 -0
  117. package/dist/src/target-templates/lang-variants-prisma/typescript/db/db-client.ts +19 -0
  118. package/dist/src/target-templates/lang-variants-prisma/typescript/db/env.yaml +4 -0
  119. package/dist/src/target-templates/lang-variants-prisma/typescript/db/package.json +17 -0
  120. package/dist/src/target-templates/lang-variants-prisma/typescript/db/prisma/schema.prisma +24 -0
  121. package/dist/src/target-templates/lang-variants-prisma/typescript/db/prisma-setup-vitest.ts +27 -0
  122. package/dist/src/target-templates/lang-variants-prisma/typescript/db/tsconfig.json +3 -0
  123. package/dist/src/target-templates/lang-variants-prisma/typescript/dml/package.json +7 -0
  124. package/dist/src/target-templates/lang-variants-prisma/typescript/dml/tsconfig.json +3 -0
  125. package/package.json +3 -2
  126. package/src/cli/core/exec.ts +2 -4
  127. package/src/cli/core/run.ts +2 -4
  128. package/src/cli/extensions/prisma.ts +2 -4
  129. package/src/libs/init-generator.ts +2 -4
  130. package/src/pkg-root.ts +14 -0
  131. package/src/plugins.ts +2 -4
  132. package/src/target-templates/lang-variants-common/python/.cursor/rules/monorepo-python.mdc +56 -0
  133. package/src/target-templates/lang-variants-common/typescript/.cursor/rules/monorepo-typescript.mdc +51 -0
  134. package/src/target-templates/lang-variants-prisma/python/.cursor/rules/prisma-python.mdc +55 -0
  135. package/src/target-templates/lang-variants-prisma/python/.cursor/rules/testing-python.mdc +89 -0
  136. package/src/target-templates/lang-variants-prisma/typescript/.cursor/rules/prisma-typescript.mdc +54 -0
  137. package/src/target-templates/lang-variants-prisma/typescript/.cursor/rules/testing-typescript.mdc +103 -0
  138. package/src/target-templates/lang-variants-prisma/typescript/db/db-client-test.ts +5 -3
  139. package/dist/app-support/crypto/aes.d.ts +0 -15
  140. package/dist/app-support/crypto/aes.d.ts.map +0 -1
  141. package/dist/app-support/crypto/aes.js +0 -56
  142. package/dist/app-support/crypto/aes.spec.d.ts +0 -2
  143. package/dist/app-support/crypto/aes.spec.d.ts.map +0 -1
  144. package/dist/app-support/crypto/aes.spec.js +0 -58
  145. package/dist/app-support/crypto/index.d.ts +0 -16
  146. package/dist/app-support/crypto/index.d.ts.map +0 -1
  147. package/dist/app-support/crypto/index.js +0 -31
  148. package/dist/app-support/crypto/internal-token.d.ts +0 -20
  149. package/dist/app-support/crypto/internal-token.d.ts.map +0 -1
  150. package/dist/app-support/crypto/internal-token.js +0 -42
  151. package/dist/app-support/crypto/internal-token.spec.d.ts +0 -2
  152. package/dist/app-support/crypto/internal-token.spec.d.ts.map +0 -1
  153. package/dist/app-support/crypto/internal-token.spec.js +0 -45
  154. package/dist/app-support/crypto/secret.d.ts +0 -3
  155. package/dist/app-support/crypto/secret.d.ts.map +0 -1
  156. package/dist/app-support/crypto/secret.js +0 -12
  157. package/dist/app-support/crypto/secret.spec.d.ts +0 -2
  158. package/dist/app-support/crypto/secret.spec.d.ts.map +0 -1
  159. package/dist/app-support/crypto/secret.spec.js +0 -15
  160. package/dist/app-support/discovery/dev-discovery-loader.d.ts +0 -2
  161. package/dist/app-support/discovery/dev-discovery-loader.d.ts.map +0 -1
  162. package/dist/app-support/discovery/dev-discovery-loader.js +0 -30
  163. package/dist/app-support/discovery/service-endpoint.d.ts +0 -2
  164. package/dist/app-support/discovery/service-endpoint.d.ts.map +0 -1
  165. package/dist/app-support/discovery/service-endpoint.js +0 -10
  166. package/dist/cli/common.d.ts +0 -89
  167. package/dist/cli/common.d.ts.map +0 -1
  168. package/dist/cli/common.js +0 -246
  169. package/dist/cli/common.spec.d.ts +0 -2
  170. package/dist/cli/common.spec.d.ts.map +0 -1
  171. package/dist/cli/common.spec.js +0 -64
  172. package/dist/cli/core/affected.d.ts +0 -9
  173. package/dist/cli/core/affected.d.ts.map +0 -1
  174. package/dist/cli/core/affected.js +0 -101
  175. package/dist/cli/core/cloudrun.d.ts +0 -9
  176. package/dist/cli/core/cloudrun.d.ts.map +0 -1
  177. package/dist/cli/core/cloudrun.js +0 -119
  178. package/dist/cli/core/console.d.ts +0 -10
  179. package/dist/cli/core/console.d.ts.map +0 -1
  180. package/dist/cli/core/console.js +0 -50
  181. package/dist/cli/core/constant.d.ts +0 -9
  182. package/dist/cli/core/constant.d.ts.map +0 -1
  183. package/dist/cli/core/constant.js +0 -20
  184. package/dist/cli/core/env.d.ts +0 -9
  185. package/dist/cli/core/env.d.ts.map +0 -1
  186. package/dist/cli/core/env.js +0 -65
  187. package/dist/cli/core/exec.d.ts +0 -9
  188. package/dist/cli/core/exec.d.ts.map +0 -1
  189. package/dist/cli/core/exec.js +0 -48
  190. package/dist/cli/core/image.d.ts +0 -9
  191. package/dist/cli/core/image.d.ts.map +0 -1
  192. package/dist/cli/core/image.js +0 -153
  193. package/dist/cli/core/index.d.ts +0 -16
  194. package/dist/cli/core/index.d.ts.map +0 -1
  195. package/dist/cli/core/index.js +0 -15
  196. package/dist/cli/core/init.d.ts +0 -9
  197. package/dist/cli/core/init.d.ts.map +0 -1
  198. package/dist/cli/core/init.js +0 -219
  199. package/dist/cli/core/job.d.ts +0 -9
  200. package/dist/cli/core/job.d.ts.map +0 -1
  201. package/dist/cli/core/job.js +0 -65
  202. package/dist/cli/core/namespace.d.ts +0 -9
  203. package/dist/cli/core/namespace.d.ts.map +0 -1
  204. package/dist/cli/core/namespace.js +0 -67
  205. package/dist/cli/core/prep-build.d.ts +0 -10
  206. package/dist/cli/core/prep-build.d.ts.map +0 -1
  207. package/dist/cli/core/prep-build.js +0 -109
  208. package/dist/cli/core/registry.d.ts +0 -9
  209. package/dist/cli/core/registry.d.ts.map +0 -1
  210. package/dist/cli/core/registry.js +0 -66
  211. package/dist/cli/core/run-many.d.ts +0 -10
  212. package/dist/cli/core/run-many.d.ts.map +0 -1
  213. package/dist/cli/core/run-many.js +0 -48
  214. package/dist/cli/core/run.d.ts +0 -9
  215. package/dist/cli/core/run.d.ts.map +0 -1
  216. package/dist/cli/core/run.js +0 -35
  217. package/dist/cli/core/test.d.ts +0 -9
  218. package/dist/cli/core/test.d.ts.map +0 -1
  219. package/dist/cli/core/test.js +0 -26
  220. package/dist/cli/extensions/dml.d.ts +0 -9
  221. package/dist/cli/extensions/dml.d.ts.map +0 -1
  222. package/dist/cli/extensions/dml.js +0 -114
  223. package/dist/cli/extensions/index.d.ts +0 -9
  224. package/dist/cli/extensions/index.d.ts.map +0 -1
  225. package/dist/cli/extensions/index.js +0 -8
  226. package/dist/cli/extensions/internal-curl.d.ts +0 -10
  227. package/dist/cli/extensions/internal-curl.d.ts.map +0 -1
  228. package/dist/cli/extensions/internal-curl.js +0 -41
  229. package/dist/cli/extensions/jwt.d.ts +0 -9
  230. package/dist/cli/extensions/jwt.d.ts.map +0 -1
  231. package/dist/cli/extensions/jwt.js +0 -25
  232. package/dist/cli/extensions/prisma.d.ts +0 -9
  233. package/dist/cli/extensions/prisma.d.ts.map +0 -1
  234. package/dist/cli/extensions/prisma.js +0 -23
  235. package/dist/cli/extensions/redis-bitnami.d.ts +0 -11
  236. package/dist/cli/extensions/redis-bitnami.d.ts.map +0 -1
  237. package/dist/cli/extensions/redis-bitnami.js +0 -74
  238. package/dist/cli/extensions/redis-ha.d.ts +0 -11
  239. package/dist/cli/extensions/redis-ha.d.ts.map +0 -1
  240. package/dist/cli/extensions/redis-ha.js +0 -51
  241. package/dist/cli/extensions/stackgres.d.ts +0 -10
  242. package/dist/cli/extensions/stackgres.d.ts.map +0 -1
  243. package/dist/cli/extensions/stackgres.js +0 -117
  244. package/dist/cli/extensions/template.d.ts +0 -9
  245. package/dist/cli/extensions/template.d.ts.map +0 -1
  246. package/dist/cli/extensions/template.js +0 -121
  247. package/dist/devops.d.ts.map +0 -1
  248. package/dist/index.d.ts.map +0 -1
  249. package/dist/libs/affected-entities.d.ts +0 -15
  250. package/dist/libs/affected-entities.d.ts.map +0 -1
  251. package/dist/libs/affected-entities.js +0 -52
  252. package/dist/libs/cloudrun-helpers.d.ts +0 -16
  253. package/dist/libs/cloudrun-helpers.d.ts.map +0 -1
  254. package/dist/libs/cloudrun-helpers.js +0 -81
  255. package/dist/libs/config.d.ts +0 -7
  256. package/dist/libs/config.d.ts.map +0 -1
  257. package/dist/libs/config.js +0 -102
  258. package/dist/libs/digital-ocean/container-reg.d.ts +0 -6
  259. package/dist/libs/digital-ocean/container-reg.d.ts.map +0 -1
  260. package/dist/libs/digital-ocean/container-reg.js +0 -74
  261. package/dist/libs/discovery/dependencies.d.ts +0 -19
  262. package/dist/libs/discovery/dependencies.d.ts.map +0 -1
  263. package/dist/libs/discovery/dependencies.js +0 -62
  264. package/dist/libs/discovery/dependencies.spec.d.ts +0 -2
  265. package/dist/libs/discovery/dependencies.spec.d.ts.map +0 -1
  266. package/dist/libs/discovery/dependencies.spec.js +0 -21
  267. package/dist/libs/discovery/images.d.ts +0 -5
  268. package/dist/libs/discovery/images.d.ts.map +0 -1
  269. package/dist/libs/discovery/images.js +0 -45
  270. package/dist/libs/discovery/index.d.ts +0 -6
  271. package/dist/libs/discovery/index.d.ts.map +0 -1
  272. package/dist/libs/discovery/index.js +0 -67
  273. package/dist/libs/discovery/process-common.d.ts +0 -25
  274. package/dist/libs/discovery/process-common.d.ts.map +0 -1
  275. package/dist/libs/discovery/process-common.js +0 -40
  276. package/dist/libs/discovery/process-package-json.d.ts +0 -3
  277. package/dist/libs/discovery/process-package-json.d.ts.map +0 -1
  278. package/dist/libs/discovery/process-package-json.js +0 -40
  279. package/dist/libs/discovery/process-pyproject-toml.d.ts +0 -3
  280. package/dist/libs/discovery/process-pyproject-toml.d.ts.map +0 -1
  281. package/dist/libs/discovery/process-pyproject-toml.js +0 -49
  282. package/dist/libs/git-helpers.d.ts +0 -8
  283. package/dist/libs/git-helpers.d.ts.map +0 -1
  284. package/dist/libs/git-helpers.js +0 -20
  285. package/dist/libs/hetzner/reg-secret.d.ts +0 -3
  286. package/dist/libs/hetzner/reg-secret.d.ts.map +0 -1
  287. package/dist/libs/hetzner/reg-secret.js +0 -39
  288. package/dist/libs/init-generator.d.ts +0 -41
  289. package/dist/libs/init-generator.d.ts.map +0 -1
  290. package/dist/libs/init-generator.js +0 -123
  291. package/dist/libs/k8s-constants.d.ts +0 -13
  292. package/dist/libs/k8s-constants.d.ts.map +0 -1
  293. package/dist/libs/k8s-constants.js +0 -91
  294. package/dist/libs/k8s-db.d.ts +0 -18
  295. package/dist/libs/k8s-db.d.ts.map +0 -1
  296. package/dist/libs/k8s-db.js +0 -73
  297. package/dist/libs/k8s-generate.d.ts +0 -17
  298. package/dist/libs/k8s-generate.d.ts.map +0 -1
  299. package/dist/libs/k8s-generate.js +0 -193
  300. package/dist/libs/k8s-helpers.d.ts +0 -11
  301. package/dist/libs/k8s-helpers.d.ts.map +0 -1
  302. package/dist/libs/k8s-helpers.js +0 -42
  303. package/dist/libs/k8s-image-config.d.ts +0 -8
  304. package/dist/libs/k8s-image-config.d.ts.map +0 -1
  305. package/dist/libs/k8s-image-config.js +0 -113
  306. package/dist/libs/k8s-job-waiter.d.ts +0 -8
  307. package/dist/libs/k8s-job-waiter.d.ts.map +0 -1
  308. package/dist/libs/k8s-job-waiter.js +0 -84
  309. package/dist/libs/k8s-namespace.d.ts +0 -7
  310. package/dist/libs/k8s-namespace.d.ts.map +0 -1
  311. package/dist/libs/k8s-namespace.js +0 -27
  312. package/dist/libs/k8s-redis-bitnami.d.ts +0 -6
  313. package/dist/libs/k8s-redis-bitnami.d.ts.map +0 -1
  314. package/dist/libs/k8s-redis-bitnami.js +0 -31
  315. package/dist/libs/k8s-redis-ha.d.ts +0 -3
  316. package/dist/libs/k8s-redis-ha.d.ts.map +0 -1
  317. package/dist/libs/k8s-redis-ha.js +0 -15
  318. package/dist/libs/k8s-secrets-manager.d.ts +0 -6
  319. package/dist/libs/k8s-secrets-manager.d.ts.map +0 -1
  320. package/dist/libs/k8s-secrets-manager.js +0 -64
  321. package/dist/libs/validate-env.d.ts +0 -56
  322. package/dist/libs/validate-env.d.ts.map +0 -1
  323. package/dist/libs/validate-env.js +0 -214
  324. package/dist/libs/validate-env.spec.d.ts +0 -2
  325. package/dist/libs/validate-env.spec.d.ts.map +0 -1
  326. package/dist/libs/validate-env.spec.js +0 -168
  327. package/dist/plugins.d.ts.map +0 -1
  328. package/dist/types/index.d.ts +0 -939
  329. package/dist/types/index.d.ts.map +0 -1
  330. package/dist/types/index.js +0 -82
@@ -1,31 +0,0 @@
1
- import { generateInternalAuthToken, parseInternalAuthTokenOrThrow } from "./internal-token";
2
- export { encryptAes256Gcm, decryptAes256Gcm } from "./aes";
3
- /**
4
- * A simple token generation/verification class that relies on the subject field of an internal JWT-like token. It can:
5
- * - generate a short-lived (60s) token with the given subject
6
- * - verify that a token has not expired and bears the given subject
7
- *
8
- * Relies on the MONOREPO_BASE_SECRET environment variable for signing and verifying the token.
9
- */
10
- export class InternalToken {
11
- subject;
12
- constructor(subject) {
13
- this.subject = subject;
14
- }
15
- generate() {
16
- return generateInternalAuthToken({ sub: this.subject });
17
- }
18
- verifyOrThrow(token) {
19
- const parsedToken = parseInternalAuthTokenOrThrow(token);
20
- if (parsedToken.sub !== this.subject) {
21
- throw new Error('Invalid token');
22
- }
23
- }
24
- verifyFromHeaderOrThrow(authorizationHeader) {
25
- if (!authorizationHeader) {
26
- throw new Error('Authorization header not found');
27
- }
28
- const token = authorizationHeader.replace('Bearer ', '');
29
- this.verifyOrThrow(token);
30
- }
31
- }
@@ -1,20 +0,0 @@
1
- export type InternalTokenClaims<CustomClaims extends object = object> = CustomClaims & {
2
- /** The token issuer */
3
- iss: string;
4
- /** Issued at */
5
- iat: number;
6
- /** Expires at */
7
- exp: number;
8
- /** The subject of the token. Should contain a string of the "service account" who bears the token. */
9
- sub?: string;
10
- /** The audience of the token. Should contain a string of who the token is intended for. */
11
- aud?: string;
12
- };
13
- export declare function generateInternalAuthToken({ customClaims, expiresInSeconds, sub, aud, }?: {
14
- customClaims?: Record<string, string>;
15
- expiresInSeconds?: number;
16
- sub?: string;
17
- aud?: string;
18
- }): string;
19
- export declare function parseInternalAuthTokenOrThrow<CustomClaims extends object = object>(token: string): InternalTokenClaims<CustomClaims>;
20
- //# sourceMappingURL=internal-token.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"internal-token.d.ts","sourceRoot":"","sources":["../../../src/app-support/crypto/internal-token.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,mBAAmB,CAAC,YAAY,SAAS,MAAM,GAAG,MAAM,IAClE,YAAY,GAAG;IACb,uBAAuB;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,iBAAiB;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,sGAAsG;IACtG,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2FAA2F;IAC3F,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AA4BJ,wBAAgB,yBAAyB,CAAC,EACxC,YAAiB,EACjB,gBAAqB,EACrB,GAAG,EACH,GAAG,GACJ,GAAE;IACD,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACT,UAUL;AAED,wBAAgB,6BAA6B,CAAC,YAAY,SAAS,MAAM,GAAG,MAAM,EAChF,KAAK,EAAE,MAAM,GACZ,mBAAmB,CAAC,YAAY,CAAC,CAcnC"}
@@ -1,42 +0,0 @@
1
- import { getConst } from '../../libs/config';
2
- import { sign, verify } from './secret';
3
- class InternalTokenError extends Error {
4
- constructor(message) {
5
- super(message);
6
- this.name = 'InternalTokenError';
7
- Object.setPrototypeOf(this, new.target.prototype);
8
- }
9
- }
10
- function defaultClaims({ expiresInSeconds, sub, aud, }) {
11
- return {
12
- iss: `${getConst('project-name')}-internal`,
13
- iat: Math.floor(Date.now() / 1000),
14
- exp: Math.floor(Date.now() / 1000) + expiresInSeconds,
15
- sub,
16
- aud,
17
- };
18
- }
19
- export function generateInternalAuthToken({ customClaims = {}, expiresInSeconds = 60, sub, aud, } = {}) {
20
- const data = {
21
- ...customClaims,
22
- // This should be after the customClaims so that custom claims cannot override the default claims
23
- ...defaultClaims({ expiresInSeconds, sub, aud }),
24
- };
25
- const str = JSON.stringify(data);
26
- const encodedData = Buffer.from(str).toString('base64');
27
- const signature = sign(encodedData);
28
- return `${encodedData}.${signature}`;
29
- }
30
- export function parseInternalAuthTokenOrThrow(token) {
31
- const [encodedData, signature] = token.split('.');
32
- const isSignatureOk = verify(encodedData, signature);
33
- if (!isSignatureOk) {
34
- throw new InternalTokenError('Invalid token');
35
- }
36
- const dataStr = Buffer.from(encodedData, 'base64').toString('utf-8');
37
- const data = JSON.parse(dataStr);
38
- if (data.exp < Math.floor(Date.now() / 1000)) {
39
- throw new InternalTokenError('Token expired');
40
- }
41
- return data;
42
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=internal-token.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"internal-token.spec.d.ts","sourceRoot":"","sources":["../../../src/app-support/crypto/internal-token.spec.ts"],"names":[],"mappings":""}
@@ -1,45 +0,0 @@
1
- import { beforeEach, describe, expect, it, vi } from 'vitest';
2
- import { generateInternalAuthToken, parseInternalAuthTokenOrThrow } from './internal-token';
3
- vi.mock('../../libs/config', () => ({
4
- getConst: () => 'test',
5
- }));
6
- describe('generate and verify internal token', () => {
7
- beforeEach(() => {
8
- process.env.MONOREPO_BASE_SECRET = '1234567890abcdef';
9
- });
10
- it('works for default tokens', () => {
11
- const token = generateInternalAuthToken();
12
- const parsedPayload = parseInternalAuthTokenOrThrow(token);
13
- expect(parsedPayload.iss).toEqual('test-internal');
14
- expect(parsedPayload.exp - parsedPayload.iat).toEqual(60);
15
- });
16
- it('works for custom tokens', () => {
17
- const payload = { hello: 'world' };
18
- const token = generateInternalAuthToken({
19
- customClaims: payload,
20
- expiresInSeconds: 30,
21
- aud: 'aud',
22
- sub: 'sub',
23
- });
24
- const parsedPayload = parseInternalAuthTokenOrThrow(token);
25
- expect(parsedPayload.iss).toEqual('test-internal');
26
- expect(parsedPayload.exp - parsedPayload.iat).toEqual(30);
27
- expect(parsedPayload.hello).toEqual('world');
28
- expect(parsedPayload.aud).toEqual('aud');
29
- expect(parsedPayload.sub).toEqual('sub');
30
- });
31
- it('throws for expired tokens', () => {
32
- const invalidToken = generateInternalAuthToken({
33
- expiresInSeconds: -1,
34
- });
35
- expect(() => parseInternalAuthTokenOrThrow(invalidToken)).toThrowError('Token expired');
36
- });
37
- it('throws for invalid signature', () => {
38
- const payload = { hello: 'world' };
39
- const token = generateInternalAuthToken({
40
- customClaims: payload,
41
- });
42
- const invalidToken = token.replace(/.$/, 'x');
43
- expect(() => parseInternalAuthTokenOrThrow(invalidToken)).toThrowError('Invalid token');
44
- });
45
- });
@@ -1,3 +0,0 @@
1
- export declare function sign(data: string): string;
2
- export declare function verify(data: string, signature: string): boolean;
3
- //# sourceMappingURL=secret.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"secret.d.ts","sourceRoot":"","sources":["../../../src/app-support/crypto/secret.ts"],"names":[],"mappings":"AAEA,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,UAKhC;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,WAGrD"}
@@ -1,12 +0,0 @@
1
- import { createHmac } from 'crypto';
2
- export function sign(data) {
3
- const keyStr = process.env.MONOREPO_BASE_SECRET;
4
- if (!keyStr)
5
- throw new Error('Secret not set');
6
- const key = Buffer.from(keyStr, 'hex');
7
- return createHmac('sha256', key).update(data).digest('hex');
8
- }
9
- export function verify(data, signature) {
10
- const generatedSignature = sign(data);
11
- return generatedSignature === signature;
12
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=secret.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"secret.spec.d.ts","sourceRoot":"","sources":["../../../src/app-support/crypto/secret.spec.ts"],"names":[],"mappings":""}
@@ -1,15 +0,0 @@
1
- import { beforeEach, describe, expect, it } from 'vitest';
2
- import { sign, verify } from './secret';
3
- describe('sign and verify', () => {
4
- beforeEach(() => {
5
- process.env.MONOREPO_BASE_SECRET = '1234567890abcdef';
6
- });
7
- it('verify should return true for correct signature', async () => {
8
- const sig = sign('data');
9
- expect(verify('data', sig)).toEqual(true);
10
- });
11
- it('verify should return false for correct signature', async () => {
12
- const sig = sign('data');
13
- expect(verify('data2', sig)).toEqual(false);
14
- });
15
- });
@@ -1,2 +0,0 @@
1
- export declare function getPortForServiceName(serviceName: string): number;
2
- //# sourceMappingURL=dev-discovery-loader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dev-discovery-loader.d.ts","sourceRoot":"","sources":["../../../src/app-support/discovery/dev-discovery-loader.ts"],"names":[],"mappings":"AAgCA,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,UAExD"}
@@ -1,30 +0,0 @@
1
- import { workspaces } from "../../libs/discovery";
2
- let _portLookupByServiceName = null;
3
- function getPortLookup() {
4
- if (_portLookupByServiceName)
5
- return _portLookupByServiceName;
6
- if (process.env["IS_KUBERNETES"] === "true") {
7
- throw new Error("getPortLookup() should only be used in local development. In production, the service name is sufficient.");
8
- }
9
- _portLookupByServiceName = {};
10
- Object.values(workspaces()).forEach((workspace) => {
11
- workspace.packageDataEntries.forEach((pkg) => {
12
- const serviceName = pkg.deployment?.service_name;
13
- const port = pkg.deployment?.port;
14
- if (!serviceName || !port)
15
- return;
16
- const existing = _portLookupByServiceName[serviceName];
17
- if (!existing) {
18
- _portLookupByServiceName[serviceName] = port;
19
- }
20
- else if (existing !== port) {
21
- console.error(`Service name ${serviceName} has conflicting ports: ${existing} and ${port}`);
22
- process.exit(1);
23
- }
24
- });
25
- });
26
- return _portLookupByServiceName;
27
- }
28
- export function getPortForServiceName(serviceName) {
29
- return getPortLookup()[serviceName];
30
- }
@@ -1,2 +0,0 @@
1
- export declare function getServiceEndpoint(serviceName: string): string;
2
- //# sourceMappingURL=service-endpoint.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"service-endpoint.d.ts","sourceRoot":"","sources":["../../../src/app-support/discovery/service-endpoint.ts"],"names":[],"mappings":"AAEA,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAS9D"}
@@ -1,10 +0,0 @@
1
- import { getPortForServiceName } from "./dev-discovery-loader";
2
- export function getServiceEndpoint(serviceName) {
3
- if (process.env["IS_KUBERNETES"] === "true") {
4
- return `http://${serviceName}`;
5
- }
6
- const servicePort = getPortForServiceName(serviceName);
7
- if (!servicePort)
8
- throw new Error(`Port not found for service ${serviceName}`);
9
- return `http://127.0.0.1:${servicePort}`;
10
- }
@@ -1,89 +0,0 @@
1
- type ParsedArgs<TBoolKeys extends readonly string[], TParamKeys extends readonly string[]> = {
2
- args: string[];
3
- argsStr: string;
4
- options: Partial<Record<TBoolKeys[number], true>> & Partial<Record<TParamKeys[number], string>>;
5
- passthrough?: string[];
6
- };
7
- export declare class CLICommandParser {
8
- command: string;
9
- args: string[];
10
- env: string;
11
- envForced: boolean;
12
- help: boolean;
13
- skipEnvCheck: boolean;
14
- constructor(cmdArray: string[]);
15
- executorFromEnv(commandStr: string, options?: Omit<CommandExecutorOptions, "env">): CommandExecutor;
16
- parseOptions<const TBoolKeys extends readonly string[], const TParamKeys extends readonly string[]>({ params, booleans, passthroughArgs, }?: {
17
- /** Param is used like so: --param value */
18
- params?: TParamKeys;
19
- /** Boolean flag is used like so: --flag */
20
- booleans?: TBoolKeys;
21
- /** Pass through args are used like so: -- arg1 arg2 */
22
- passthroughArgs?: boolean;
23
- }): ParsedArgs<TBoolKeys, TParamKeys>;
24
- _validateEnv(env: string): boolean;
25
- _separateOptions<const TBoolKeys extends readonly string[], const TParamKeys extends readonly string[]>(args: string[], { params, booleans, passthroughArgs, }?: {
26
- params?: TParamKeys;
27
- booleans?: TBoolKeys;
28
- passthroughArgs?: boolean;
29
- }): ParsedArgs<TBoolKeys, TParamKeys>;
30
- }
31
- type CommandExecutorOptions = {
32
- env?: string;
33
- quiet?: boolean;
34
- checkEnvYaml?: boolean;
35
- redactedCommand?: string;
36
- };
37
- export declare class CommandExecutor {
38
- commandStr: string;
39
- env?: string;
40
- quiet: boolean;
41
- redactedCommand?: string;
42
- checkEnvYaml: boolean;
43
- constructor(commandStr: string, { env, quiet, redactedCommand, checkEnvYaml, }?: CommandExecutorOptions);
44
- /** Non-interactive use only. stdout is returned. */
45
- exec(options?: {
46
- onlyStatusCode?: false;
47
- asObject?: false;
48
- env?: object;
49
- }): string;
50
- exec(options: {
51
- onlyStatusCode?: false;
52
- asObject: true;
53
- env?: object;
54
- }): {
55
- statusCode: number;
56
- stdout: string;
57
- stderr: string;
58
- };
59
- exec(options: {
60
- onlyStatusCode: true;
61
- asObject?: boolean;
62
- env?: object;
63
- }): number;
64
- /** Should be used for CLI commands intended to be used locally. Provides interactivity. Unlike exec(), stdout is not returned. */
65
- spawn({ env, pipeStdoutTo }?: {
66
- env?: object;
67
- pipeStdoutTo?: "stderr";
68
- }): Promise<unknown>;
69
- _prepareFullCommand(): string;
70
- _getProcessEnv(envOverride?: {}): {
71
- MONOREPO_ENV: string | undefined;
72
- MONOREPO_ROOT: string;
73
- TZ?: string;
74
- NODE_ENV?: string;
75
- };
76
- _envInjectorPrefix(): string;
77
- _checkEnvYamlFiles(): void;
78
- }
79
- export declare function dotEnvFilesForEnv(env?: string): string[];
80
- export declare function printUsageAndExit(text: string): never;
81
- export declare class StrongParams {
82
- private usage;
83
- private args;
84
- constructor(usage: string, args: Record<string, string | undefined>);
85
- required(key: string): string;
86
- optional(key: string): string | undefined;
87
- }
88
- export {};
89
- //# sourceMappingURL=common.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/cli/common.ts"],"names":[],"mappings":"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"}
@@ -1,246 +0,0 @@
1
- import chalk from "chalk";
2
- import { execSync, spawn } from "child_process";
3
- import fs from "fs";
4
- import { allSupportedEnvs } from "../libs/k8s-constants";
5
- import { globEnvYamlFiles } from "../libs/discovery";
6
- export class CLICommandParser {
7
- command;
8
- args;
9
- env;
10
- envForced;
11
- help;
12
- skipEnvCheck;
13
- constructor(cmdArray) {
14
- const parsedArgs = this._separateOptions(cmdArray.filter(Boolean), {
15
- params: ["--env"],
16
- booleans: ["--help", "--skip-env-check"],
17
- });
18
- const [command, ...args] = parsedArgs.args;
19
- this.command = command;
20
- this.args = args;
21
- this.envForced = Boolean(parsedArgs.options["--env"]);
22
- this.env =
23
- parsedArgs.options["--env"] ??
24
- process.env["MONOREPO_ENV"] ??
25
- "development";
26
- this.help = Boolean(parsedArgs.options["--help"]);
27
- this.skipEnvCheck = Boolean(parsedArgs.options["--skip-env-check"]);
28
- // We need to hardcode this to avoid chicken-and-egg problem (validate env depends on constants.yaml existence)
29
- if (this.command !== 'init') {
30
- this._validateEnv(this.env);
31
- }
32
- }
33
- // Copies the env
34
- executorFromEnv(commandStr, options = {}) {
35
- const checkEnvYamlOverride = this.skipEnvCheck
36
- ? { checkEnvYaml: false }
37
- : {};
38
- return new CommandExecutor(commandStr, {
39
- env: this.env,
40
- ...options,
41
- ...checkEnvYamlOverride,
42
- });
43
- }
44
- // Example:
45
- // const cmd = new CLICommandParser('devops run --some-flag --in workspace arg1'.split(' '));
46
- // cmd.parseOptions({ boolean: ['--some-flag'], params: ['--in'] })
47
- // # => { args: ['arg1'], options: { '--some-flag': true, '--in': 'workspace' } }
48
- //
49
- // Note that the global param --env is already extracted and can be accessed with cmd.env
50
- parseOptions({ params, booleans, passthroughArgs = false, } = {}) {
51
- return this._separateOptions(this.args, {
52
- params,
53
- booleans,
54
- passthroughArgs,
55
- });
56
- }
57
- _validateEnv(env) {
58
- if (!allSupportedEnvs().includes(env)) {
59
- console.error(
60
- // prettier-ignore
61
- `Environment must be one of: ${allSupportedEnvs().join(", ")}. Received: ${env}`);
62
- process.exit(1);
63
- }
64
- return true;
65
- }
66
- _separateOptions(args, { params, booleans, passthroughArgs = false, } = {}) {
67
- const paramsLookup = new Set(params ?? []);
68
- const booleansLookup = new Set(booleans ?? []);
69
- const isParam = (arg) => paramsLookup.has(arg);
70
- const isBoolean = (arg) => booleansLookup.has(arg);
71
- const passthroughArgsStart = passthroughArgs ? args.indexOf("--") : -1;
72
- // prettier-ignore
73
- const numArgsToProcess = passthroughArgsStart === -1 ? args.length : passthroughArgsStart;
74
- const getResPassthrough = () => {
75
- if (!passthroughArgs || passthroughArgsStart < 0)
76
- return { passthrough: [] };
77
- return { passthrough: args.slice(passthroughArgsStart + 1) };
78
- };
79
- const resArgs = [];
80
- const resParams = {};
81
- const resOptions = {};
82
- for (let i = 0; i < numArgsToProcess; ++i) {
83
- const curr = args[i];
84
- if (isParam(curr)) {
85
- const next = args[i + 1];
86
- resParams[curr] = next;
87
- ++i;
88
- }
89
- else if (isBoolean(curr)) {
90
- resOptions[curr] = true;
91
- }
92
- else {
93
- resArgs.push(curr);
94
- }
95
- }
96
- return {
97
- args: resArgs,
98
- argsStr: resArgs.join(" "),
99
- options: { ...resOptions, ...resParams },
100
- ...getResPassthrough(),
101
- };
102
- }
103
- }
104
- export class CommandExecutor {
105
- commandStr;
106
- env;
107
- quiet;
108
- redactedCommand;
109
- checkEnvYaml;
110
- constructor(commandStr, { env, quiet = false, redactedCommand, checkEnvYaml = false, } = {}) {
111
- this.env = env;
112
- this.quiet = quiet ?? false;
113
- this.commandStr = commandStr;
114
- this.checkEnvYaml = checkEnvYaml;
115
- this.redactedCommand = redactedCommand;
116
- }
117
- exec({ onlyStatusCode = false, asObject = false, env = {}, } = {}) {
118
- this._checkEnvYamlFiles();
119
- const fullCommand = this._prepareFullCommand();
120
- const envToUse = this._getProcessEnv(env);
121
- try {
122
- const output = execSync(fullCommand, { env: envToUse });
123
- if (onlyStatusCode)
124
- return 0;
125
- if (!this.quiet)
126
- console.log(output.toString());
127
- if (asObject)
128
- return { statusCode: 0, stdout: output.toString() };
129
- return output.toString();
130
- }
131
- catch (error) {
132
- const typedError = error;
133
- if (onlyStatusCode)
134
- return typedError.status;
135
- const stdout = typedError.stdout?.toString().trim();
136
- const stderr = typedError.stderr?.toString().trim();
137
- if (!this.quiet) {
138
- console.warn(stdout);
139
- console.error(stderr);
140
- }
141
- if (asObject)
142
- return { statusCode: typedError.status, stdout, stderr };
143
- process.exit(typedError.status);
144
- }
145
- }
146
- /** Should be used for CLI commands intended to be used locally. Provides interactivity. Unlike exec(), stdout is not returned. */
147
- spawn({ env, pipeStdoutTo } = {}) {
148
- this._checkEnvYamlFiles();
149
- const fullCommand = this._prepareFullCommand();
150
- const envToUse = this._getProcessEnv(env);
151
- const stdio = pipeStdoutTo === "stderr" ? ["inherit", "pipe", "inherit"] : "inherit";
152
- return new Promise((resolve) => {
153
- try {
154
- const childProcess = spawn(fullCommand, {
155
- stdio,
156
- env: envToUse,
157
- shell: true,
158
- });
159
- if (pipeStdoutTo === "stderr") {
160
- childProcess.stdout?.pipe(process.stderr);
161
- }
162
- childProcess.on("close", (code) => {
163
- if (code !== 0) {
164
- console.error(chalk.red(`Process exited with code ${code}`));
165
- process.exit(code);
166
- }
167
- resolve(code);
168
- });
169
- childProcess.on("error", (error) => {
170
- console.error(chalk.red(`Error: ${error.message}`));
171
- process.exit(1);
172
- });
173
- }
174
- catch (error) {
175
- if (error instanceof Error) {
176
- console.error(chalk.red(`${error.message}`));
177
- }
178
- process.exit(1);
179
- }
180
- });
181
- }
182
- _prepareFullCommand() {
183
- const envPrefix = this.env ? this._envInjectorPrefix() : "";
184
- const fullCommand = [envPrefix, this.commandStr].join(" ").trim();
185
- const envPrefixLog = this.env ? `MONOREPO_ENV=${this.env} MONOREPO_ROOT=${process.cwd()}` : "";
186
- const fullCommandLog = [envPrefixLog, fullCommand].join(" ").trim();
187
- if (this.redactedCommand) {
188
- console.warn(chalk.yellow(fullCommandLog.replace(this.commandStr, this.redactedCommand)));
189
- }
190
- else {
191
- console.warn(chalk.yellow(fullCommandLog));
192
- }
193
- return fullCommand;
194
- }
195
- _getProcessEnv(envOverride = {}) {
196
- return { ...process.env, MONOREPO_ENV: this.env, MONOREPO_ROOT: process.cwd(), ...envOverride };
197
- }
198
- _envInjectorPrefix() {
199
- const envFiles = dotEnvFilesForEnv(this.env);
200
- if (envFiles.length === 0) {
201
- return "";
202
- }
203
- else {
204
- return `bunx dotenvx -q run -f ${envFiles.join(" ")} -- `;
205
- }
206
- }
207
- _checkEnvYamlFiles() {
208
- if (!this.checkEnvYaml)
209
- return;
210
- const envYamlFiles = globEnvYamlFiles();
211
- const checkEnvCmd = new CommandExecutor(`devops env _validate ${envYamlFiles.join(" ")}`, { env: this.env, quiet: true, checkEnvYaml: false });
212
- checkEnvCmd.exec();
213
- }
214
- }
215
- export function dotEnvFilesForEnv(env) {
216
- const globalEnvFilePath = "config/.env.global";
217
- const specificEnvFilePath = `config/.env.${env}`;
218
- const envFiles = [];
219
- if (env && fs.existsSync(specificEnvFilePath))
220
- envFiles.push(specificEnvFilePath);
221
- if (fs.existsSync(globalEnvFilePath))
222
- envFiles.push(globalEnvFilePath);
223
- return envFiles;
224
- }
225
- export function printUsageAndExit(text) {
226
- console.warn(text);
227
- process.exit(1);
228
- }
229
- export class StrongParams {
230
- usage;
231
- args;
232
- constructor(usage, args) {
233
- this.usage = usage;
234
- this.args = args;
235
- }
236
- required(key) {
237
- if (!this.args[key]) {
238
- console.error(`Missing required argument: ${key}`);
239
- printUsageAndExit(this.usage);
240
- }
241
- return this.args[key];
242
- }
243
- optional(key) {
244
- return this.args[key];
245
- }
246
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=common.spec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"common.spec.d.ts","sourceRoot":"","sources":["../../src/cli/common.spec.ts"],"names":[],"mappings":""}