@vfarcic/dot-ai 0.116.0 → 0.117.0

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 (129) hide show
  1. package/README.md +21 -18
  2. package/dist/core/ai-provider-factory.d.ts +4 -2
  3. package/dist/core/ai-provider-factory.d.ts.map +1 -1
  4. package/dist/core/ai-provider-factory.js +17 -6
  5. package/dist/core/capability-operations.js +1 -1
  6. package/dist/core/generic-session-manager.d.ts +67 -0
  7. package/dist/core/generic-session-manager.d.ts.map +1 -0
  8. package/dist/core/generic-session-manager.js +192 -0
  9. package/dist/core/pattern-operations.js +1 -1
  10. package/dist/core/providers/noop-provider.d.ts +47 -0
  11. package/dist/core/providers/noop-provider.d.ts.map +1 -0
  12. package/dist/core/providers/noop-provider.js +63 -0
  13. package/dist/core/schema.d.ts.map +1 -1
  14. package/dist/core/schema.js +13 -13
  15. package/dist/core/session-utils.d.ts +3 -6
  16. package/dist/core/session-utils.d.ts.map +1 -1
  17. package/dist/core/session-utils.js +5 -13
  18. package/dist/core/shared-prompt-loader.d.ts +15 -3
  19. package/dist/core/shared-prompt-loader.d.ts.map +1 -1
  20. package/dist/core/shared-prompt-loader.js +67 -14
  21. package/dist/core/unified-creation-session.d.ts +3 -10
  22. package/dist/core/unified-creation-session.d.ts.map +1 -1
  23. package/dist/core/unified-creation-session.js +34 -75
  24. package/dist/core/unified-creation-types.d.ts +31 -22
  25. package/dist/core/unified-creation-types.d.ts.map +1 -1
  26. package/dist/interfaces/mcp.d.ts.map +1 -1
  27. package/dist/interfaces/mcp.js +9 -34
  28. package/dist/tools/answer-question.d.ts.map +1 -1
  29. package/dist/tools/answer-question.js +12 -12
  30. package/dist/tools/choose-solution.js +1 -1
  31. package/dist/tools/generate-manifests.d.ts.map +1 -1
  32. package/dist/tools/generate-manifests.js +9 -10
  33. package/dist/tools/index.d.ts +1 -1
  34. package/dist/tools/index.d.ts.map +1 -1
  35. package/dist/tools/index.js +6 -6
  36. package/dist/tools/organizational-data.js +12 -12
  37. package/dist/tools/project-setup/discovery.d.ts +15 -0
  38. package/dist/tools/project-setup/discovery.d.ts.map +1 -0
  39. package/dist/tools/project-setup/discovery.js +104 -0
  40. package/dist/tools/project-setup/generate-scope.d.ts +15 -0
  41. package/dist/tools/project-setup/generate-scope.d.ts.map +1 -0
  42. package/dist/tools/project-setup/generate-scope.js +237 -0
  43. package/dist/tools/project-setup/report-scan.d.ts +15 -0
  44. package/dist/tools/project-setup/report-scan.d.ts.map +1 -0
  45. package/dist/tools/project-setup/report-scan.js +156 -0
  46. package/dist/tools/project-setup/types.d.ts +111 -0
  47. package/dist/tools/project-setup/types.d.ts.map +1 -0
  48. package/dist/tools/project-setup/types.js +8 -0
  49. package/dist/tools/project-setup.d.ts +28 -0
  50. package/dist/tools/project-setup.d.ts.map +1 -0
  51. package/dist/tools/project-setup.js +134 -0
  52. package/dist/tools/recommend.js +1 -1
  53. package/dist/tools/remediate.js +1 -1
  54. package/dist/tools/version.d.ts +0 -7
  55. package/dist/tools/version.d.ts.map +1 -1
  56. package/dist/tools/version.js +5 -34
  57. package/package.json +4 -2
  58. package/prompts/capability-inference.md +2 -2
  59. package/prompts/infrastructure-trigger-expansion.md +2 -2
  60. package/prompts/intent-analysis.md +2 -2
  61. package/prompts/kyverno-generation.md +14 -14
  62. package/prompts/manifest-generation.md +5 -5
  63. package/prompts/map-intent-to-operation.md +2 -2
  64. package/prompts/pattern-complete-error.md +1 -1
  65. package/prompts/pattern-complete-success.md +4 -4
  66. package/prompts/pattern-rationale.md +1 -1
  67. package/prompts/pattern-resources.md +1 -1
  68. package/prompts/pattern-review.md +5 -5
  69. package/prompts/policy-complete-apply.md +4 -4
  70. package/prompts/policy-complete-discard.md +1 -1
  71. package/prompts/policy-complete-error.md +1 -1
  72. package/prompts/policy-complete-save.md +4 -4
  73. package/prompts/policy-complete-success.md +4 -4
  74. package/prompts/policy-namespace-scope.md +1 -1
  75. package/prompts/question-generation.md +5 -5
  76. package/prompts/resource-analysis.md +3 -3
  77. package/prompts/resource-selection.md +3 -3
  78. package/prompts/solution-enhancement.md +4 -4
  79. package/scripts/anthropic.nu +9 -13
  80. package/scripts/common.nu +31 -33
  81. package/scripts/ingress.nu +5 -4
  82. package/scripts/kubernetes.nu +38 -53
  83. package/dist/core/doc-discovery.d.ts +0 -38
  84. package/dist/core/doc-discovery.d.ts.map +0 -1
  85. package/dist/core/doc-discovery.js +0 -231
  86. package/dist/core/doc-testing-session.d.ts +0 -109
  87. package/dist/core/doc-testing-session.d.ts.map +0 -1
  88. package/dist/core/doc-testing-session.js +0 -696
  89. package/dist/core/doc-testing-types.d.ts +0 -127
  90. package/dist/core/doc-testing-types.d.ts.map +0 -1
  91. package/dist/core/doc-testing-types.js +0 -53
  92. package/dist/core/nushell-runtime.d.ts +0 -39
  93. package/dist/core/nushell-runtime.d.ts.map +0 -1
  94. package/dist/core/nushell-runtime.js +0 -103
  95. package/dist/core/platform-operations.d.ts +0 -70
  96. package/dist/core/platform-operations.d.ts.map +0 -1
  97. package/dist/core/platform-operations.js +0 -294
  98. package/dist/tools/build-platform.d.ts +0 -25
  99. package/dist/tools/build-platform.d.ts.map +0 -1
  100. package/dist/tools/build-platform.js +0 -277
  101. package/dist/tools/test-docs.d.ts +0 -22
  102. package/dist/tools/test-docs.d.ts.map +0 -1
  103. package/dist/tools/test-docs.js +0 -351
  104. package/prompts/doc-testing-done.md +0 -51
  105. package/prompts/doc-testing-fix.md +0 -120
  106. package/prompts/doc-testing-scan.md +0 -140
  107. package/prompts/doc-testing-test-section.md +0 -169
  108. package/prompts/platform-operations-parse-script-help.md +0 -68
  109. package/scripts/ack.nu +0 -195
  110. package/scripts/argo-workflows.nu +0 -47
  111. package/scripts/argocd.nu +0 -85
  112. package/scripts/aso.nu +0 -74
  113. package/scripts/backstage.nu +0 -349
  114. package/scripts/cert-manager.nu +0 -13
  115. package/scripts/cnpg.nu +0 -14
  116. package/scripts/dot.nu +0 -32
  117. package/scripts/external-secrets.nu +0 -110
  118. package/scripts/gatekeeper.nu +0 -19
  119. package/scripts/github.nu +0 -42
  120. package/scripts/image.nu +0 -67
  121. package/scripts/kro.nu +0 -11
  122. package/scripts/kubevela.nu +0 -22
  123. package/scripts/port.nu +0 -71
  124. package/scripts/prometheus.nu +0 -21
  125. package/scripts/registry.nu +0 -55
  126. package/scripts/storage.nu +0 -210
  127. package/scripts/tests.nu +0 -12
  128. package/scripts/velero.nu +0 -45
  129. package/shared-prompts/validate-docs.md +0 -22
@@ -1,349 +0,0 @@
1
- #!/usr/bin/env nu
2
-
3
- # Configures a Backstage instance with Crossplane integration
4
- def --env "main configure backstage" [] {
5
-
6
- rm --force --recursive backstage
7
-
8
- print $"
9
- When asked for a name for the Backstage app make sure to keep the default value (ansi yellow_bold)backstage(ansi reset)
10
- Press the (ansi yellow_bold)enter key(ansi reset) to continue.
11
- "
12
- input
13
-
14
- npx @backstage/create-app@latest
15
-
16
- cd backstage
17
-
18
- for package in [
19
- "@terasky/backstage-plugin-crossplane-common@1.1.0",
20
- "@terasky/backstage-plugin-crossplane-permissions-backend@1.1.1",
21
- "@terasky/backstage-plugin-kubernetes-ingestor@1.5.0",
22
- "@terasky/backstage-plugin-scaffolder-backend-module-terasky-utils@1.1.0"
23
- ] {
24
- yarn --cwd packages/backend add $package
25
- }
26
-
27
- for package in [
28
- "@terasky/backstage-plugin-crossplane-resources-frontend@1.4.0"
29
- ] {
30
- yarn --cwd packages/app add $package
31
- }
32
-
33
- open app-config.yaml
34
- | upsert backend.csp.upgrade-insecure-requests false
35
- | upsert crossplane.enablePermissions false
36
- | upsert kubernetesIngestor.components.enabled true
37
- | upsert kubernetesIngestor.components.taskRunner.frequency 10
38
- | upsert kubernetesIngestor.components.taskRunner.timeout 600
39
- | upsert kubernetesIngestor.components.excludedNamespaces []
40
- | upsert kubernetesIngestor.components.excludedNamespaces.0 "kube-public"
41
- | upsert kubernetesIngestor.components.excludedNamespaces.1 "kube-system"
42
- | upsert kubernetesIngestor.components.customWorkloadTypes []
43
- | upsert kubernetesIngestor.components.customWorkloadTypes.0 { group: "core.oam.dev", apiVersion: "v1beta1", plural: "applications" }
44
- | upsert kubernetesIngestor.components.disableDefaultWorkloadTypes "${DISABLE_DEFAULT_WORKLOAD_TYPES-false}"
45
- | upsert kubernetesIngestor.components.onlyIngestAnnotatedResources false
46
- | upsert kubernetesIngestor.crossplane.claims.ingestAllClaims true
47
- | upsert kubernetesIngestor.crossplane.xrds.publishPhase.allowedTargets ["github.com"]
48
- | upsert kubernetesIngestor.crossplane.xrds.publishPhase.target "github.com"
49
- | upsert kubernetesIngestor.crossplane.xrds.publishPhase.target "github.com"
50
- | upsert kubernetesIngestor.crossplane.xrds.publishPhase.allowRepoSelection true
51
- | upsert kubernetesIngestor.crossplane.xrds.enabled true
52
- | upsert kubernetesIngestor.crossplane.xrds.taskRunner.frequency 10
53
- | upsert kubernetesIngestor.crossplane.xrds.taskRunner.timeout 600
54
- | upsert kubernetesIngestor.crossplane.xrds.ingestAllXRDs true
55
- | upsert kubernetesIngestor.crossplane.xrds.convertDefaultValuesToPlaceholders true
56
- | upsert kubernetes {}
57
- | upsert kubernetes.frontend.podDelete.enabled true
58
- | upsert kubernetes.serviceLocatorMethod.type "multiTenant"
59
- | upsert kubernetes.clusterLocatorMethods [{}]
60
- | upsert kubernetes.clusterLocatorMethods.0.type "config"
61
- | upsert kubernetes.clusterLocatorMethods.0.clusters [{}]
62
- | upsert kubernetes.clusterLocatorMethods.0.clusters.0.url "${KUBE_URL}"
63
- | upsert kubernetes.clusterLocatorMethods.0.clusters.0.name "kind"
64
- | upsert kubernetes.clusterLocatorMethods.0.clusters.0.authProvider "serviceAccount"
65
- | upsert kubernetes.clusterLocatorMethods.0.clusters.0.skipTLSVerify true
66
- | upsert kubernetes.clusterLocatorMethods.0.clusters.0.skipMetricsLookup true
67
- | upsert kubernetes.clusterLocatorMethods.0.clusters.0.serviceAccountToken "${KUBE_SA_TOKEN}"
68
- | upsert kubernetes.clusterLocatorMethods.0.clusters.0.caData "${KUBE_CA_DATA}"
69
- | save app-config.yaml --force
70
-
71
- {
72
- app: {
73
- baseUrl: "${BACKSTAGE_HOST}"
74
- }
75
- backend: {
76
- baseUrl: "${BACKSTAGE_HOST}"
77
- database: {
78
- client: "pg"
79
- connection: {
80
- host: "${DB_HOST}"
81
- port: 5432
82
- user: "${user}"
83
- password: "${password}"
84
- }
85
- }
86
- }
87
- } | to yaml | save app-config.production.yaml --force
88
-
89
- open packages/app/src/components/catalog/EntityPage.tsx
90
- | (
91
- str replace
92
- `} from '@backstage/plugin-kubernetes';`
93
- `} from '@backstage/plugin-kubernetes';
94
-
95
- import { CrossplaneAllResourcesTable, CrossplaneResourceGraph, isCrossplaneAvailable } from '@terasky/backstage-plugin-crossplane-resources-frontend';`
96
- ) | (
97
- str replace
98
- `const serviceEntityPage = (
99
- <EntityLayout>
100
- <EntityLayout.Route path="/" title="Overview">
101
- {overviewContent}
102
- </EntityLayout.Route>`
103
- `const serviceEntityPage = (
104
- <EntityLayout>
105
- <EntityLayout.Route path="/" title="Overview">
106
- {overviewContent}
107
- </EntityLayout.Route>
108
-
109
- <EntityLayout.Route if={isCrossplaneAvailable} path="/crossplane-resources" title="Crossplane Resources">
110
- <CrossplaneAllResourcesTable />
111
- </EntityLayout.Route>
112
- <EntityLayout.Route if={isCrossplaneAvailable} path="/crossplane-graph" title="Crossplane Graph">
113
- <CrossplaneResourceGraph />
114
- </EntityLayout.Route>`
115
- ) | (
116
- str replace
117
- `const componentPage = (
118
- <EntitySwitch>`
119
- `const componentPage = (
120
- <EntitySwitch>
121
- <EntitySwitch.Case if={isComponentType('crossplane-claim')}>
122
- {serviceEntityPage}
123
- </EntitySwitch.Case>`
124
- ) | save packages/app/src/components/catalog/EntityPage.tsx --force
125
-
126
- open packages/backend/src/index.ts
127
- | (
128
- str replace
129
- `backend.start();`
130
- `backend.add(import('@terasky/backstage-plugin-crossplane-permissions-backend'));
131
- backend.add(import('@terasky/backstage-plugin-kubernetes-ingestor'));
132
- backend.add(import('@terasky/backstage-plugin-scaffolder-backend-module-terasky-utils'));
133
-
134
- backend.start();`
135
- ) | save packages/backend/src/index.ts --force
136
-
137
- cd ..
138
-
139
- get cluster data --create_service_account true
140
-
141
- $"export NODE_OPTIONS=--no-node-snapshot\n" | save --append .env
142
-
143
- }
144
-
145
- # Builds and publishes a Backstage Docker image and Helm chart
146
- def --env "main build backstage" [
147
- tag: string
148
- --image = "ghcr.io/vfarcic/idp-full-backstage"
149
- --github_org = "vfarcic"
150
- ] {
151
-
152
- docker login $image
153
-
154
- cd backstage
155
-
156
- yarn install --immutable
157
-
158
- yarn tsc
159
-
160
- yarn build:backend
161
-
162
- (
163
- docker buildx build
164
- --file packages/backend/Dockerfile
165
- --tag $"($image):($tag)"
166
- --platform linux/amd64
167
- .
168
- )
169
-
170
- docker image push $"($image):($tag)"
171
-
172
- cd ..
173
-
174
- open charts/backstage/Chart.yaml
175
- | upsert version $tag
176
- | upsert appVersion $tag
177
- | save charts/backstage/Chart.yaml --force
178
-
179
- open charts/backstage/values.yaml
180
- | upsert image.repository $image
181
- | upsert image.tag $tag
182
- | save charts/backstage/values.yaml --force
183
-
184
- helm package charts/backstage
185
-
186
- helm push $"backstage-($tag).tgz" $"oci://ghcr.io/($image)"
187
-
188
- start $"https://github.com/users/($github_org)/packages/container/package/idp-full-backstage"
189
-
190
- print $"
191
- Click (ansi yellow_bold)Package settings(ansi reset).
192
- Click the (ansi yellow_bold)Change visibility(ansi reset) button, select (ansi yellow_bold)Public(ansi reset), type (ansi yellow_bold)idp-full-backstage(ansi reset) to confirm, and click the (ansi yellow_bold)I understand the consequences, change package visibility(ansi reset) button.
193
- Press the (ansi yellow_bold)enter key(ansi reset) to continue.
194
- "
195
- input
196
-
197
- start $"https://github.com/users/($github_org)/packages/container/package/idp-full-backstage%2Fbackstage"
198
-
199
- print $"
200
- Click (ansi yellow_bold)Package settings(ansi reset).
201
- Click the (ansi yellow_bold)Change visibility(ansi reset) button, select (ansi yellow_bold)Public(ansi reset), type (ansi yellow_bold)idp-full-backstage/backstage(ansi reset) to confirm, and click the (ansi yellow_bold)I understand the consequences, change package visibility(ansi reset) button.
202
- Press the (ansi yellow_bold)enter key(ansi reset) to continue.
203
- "
204
- input
205
-
206
- rm $"backstage-($tag).tgz"
207
-
208
- }
209
-
210
- # Deploys Backstage to Kubernetes with necessary configuration
211
- def --env "main apply backstage" [
212
- tag: string # Available versions can be seen at https://github.com/users/vfarcic/packages/container/idp-full-backstage%2Fbackstage/versions
213
- --kubeconfig = "kubeconfig-dot.yaml"
214
- --ingress_host = "backstage.127.0.0.1.nip.io"
215
- --github_token = "FIXME"
216
- --create_service_account = false
217
- --disable_default_workload_types = false
218
- ] {
219
-
220
- let cluster_data = (
221
- get cluster data
222
- --kubeconfig $kubeconfig
223
- --create_service_account $create_service_account
224
- )
225
-
226
- {
227
- apiVersion: "v1"
228
- kind: "Secret"
229
- metadata: {
230
- name: "backstage-config"
231
- namespace: "backstage"
232
- }
233
- type: "Opaque"
234
- data: {
235
- KUBE_URL: ($cluster_data.kube_url | encode base64)
236
- KUBE_SA_TOKEN: $cluster_data.token_encoded
237
- KUBE_CA_DATA: ($cluster_data.kube_ca_data | encode base64)
238
- GITHUB_TOKEN: ($github_token | encode base64)
239
- }
240
- }
241
- | to yaml
242
- | kubectl --namespace backstage apply --filename -
243
-
244
- (
245
- helm upgrade --install cnpg cloudnative-pg
246
- --repo https://cloudnative-pg.github.io/charts
247
- --namespace cnpg-system --create-namespace --wait
248
- )
249
-
250
- (
251
- helm upgrade --install backstage
252
- oci://ghcr.io/vfarcic/idp-full-backstage/backstage
253
- --namespace backstage --create-namespace
254
- --set $"ingress.host=($ingress_host)"
255
- --set $"ingrestor.disableDefaultWorkloadTypes=($disable_default_workload_types)"
256
- --version $tag --wait
257
- )
258
-
259
- sleep 60sec
260
-
261
- print $"Backstage is available at (ansi yellow_bold)http://($ingress_host)(ansi reset)"
262
-
263
- start $"http://($ingress_host)"
264
-
265
- }
266
-
267
- def "get cluster data" [
268
- --kubeconfig = "kubeconfig-dot.yaml"
269
- --create_service_account = false
270
- ] {
271
-
272
- if $create_service_account {
273
-
274
- {
275
- apiVersion: "v1"
276
- kind: "Namespace"
277
- metadata: {
278
- name: "backstage"
279
- }
280
- } | to yaml | kubectl apply --filename -
281
-
282
- {
283
- apiVersion: "v1"
284
- kind: "ServiceAccount"
285
- metadata: {
286
- name: "backstage"
287
- namespace: "backstage"
288
- }
289
- } | to yaml | kubectl apply --filename -
290
-
291
- {
292
- apiVersion: "v1"
293
- kind: "Secret"
294
- metadata: {
295
- name: "backstage"
296
- namespace: "backstage"
297
- annotations: {
298
- "kubernetes.io/service-account.name": "backstage"
299
- }
300
- }
301
- type: "kubernetes.io/service-account-token"
302
- } | to yaml | kubectl apply --filename -
303
-
304
- {
305
- apiVersion: "rbac.authorization.k8s.io/v1"
306
- kind: "ClusterRoleBinding"
307
- metadata: {
308
- name: "backstage"
309
- }
310
- subjects: [{
311
- kind: "ServiceAccount"
312
- name: "backstage"
313
- namespace: "backstage"
314
- }]
315
- roleRef: {
316
- kind: "ClusterRole"
317
- name: "cluster-admin"
318
- apiGroup: "rbac.authorization.k8s.io"
319
- }
320
- } | to yaml | kubectl apply --filename -
321
-
322
- }
323
-
324
- let kube_url = open $kubeconfig
325
- | get clusters.0.cluster.server
326
- $"export KUBE_URL=($kube_url)\n" | save --append .env
327
-
328
- let kube_ca_data = open $kubeconfig
329
- | get clusters.0.cluster.certificate-authority-data
330
- $"export KUBE_CA_DATA=($kube_ca_data)\n" | save --append .env
331
-
332
- let token_encoded = (
333
- kubectl --namespace backstage get secret backstage
334
- --output yaml
335
- )
336
- | from yaml
337
- | get data.token
338
-
339
- let token = ($token_encoded | decode base64 | decode)
340
- $"export KUBE_SA_TOKEN=($token)\n" | save --append .env
341
-
342
- {
343
- kube_url: $kube_url,
344
- kube_ca_data: $kube_ca_data,
345
- token_encoded: $token_encoded,
346
- token: $token
347
- }
348
-
349
- }
@@ -1,13 +0,0 @@
1
- #!/usr/bin/env nu
2
-
3
- # Installs cert-manager for managing TLS certificates in Kubernetes
4
- def "main apply certmanager" [] {
5
-
6
- (
7
- helm upgrade --install cert-manager cert-manager
8
- --repo https://charts.jetstack.io
9
- --namespace cert-manager --create-namespace
10
- --set crds.enabled=true --wait
11
- )
12
-
13
- }
package/scripts/cnpg.nu DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env nu
2
-
3
- # Installs Cloud-Native PostgreSQL (CNPG) operator
4
- def "main apply cnpg" [] {
5
-
6
- print $"\nInstalling (ansi yellow_bold)Cloud-Native PostgreSQL \(CNPG\)(ansi reset)...\n"
7
-
8
- (
9
- helm upgrade --install cnpg cloudnative-pg
10
- --repo https://cloudnative-pg.github.io/charts
11
- --namespace cnpg-system --create-namespace --wait
12
- )
13
-
14
- }
package/scripts/dot.nu DELETED
@@ -1,32 +0,0 @@
1
- #!/usr/bin/env nu
2
-
3
- source ack.nu
4
- source anthropic.nu
5
- source argo-workflows.nu
6
- source argocd.nu
7
- source aso.nu
8
- source atlas.nu
9
- source backstage.nu
10
- source cert-manager.nu
11
- source cnpg.nu
12
- source common.nu
13
- source crossplane.nu
14
- source external-secrets.nu
15
- source gatekeeper.nu
16
- source github.nu
17
- source image.nu
18
- source ingress.nu
19
- source kro.nu
20
- source kubernetes.nu
21
- source kubevela.nu
22
- source kyverno.nu
23
- source mcp.nu
24
- source port.nu
25
- source prometheus.nu
26
- source registry.nu
27
- source storage.nu
28
- source tests.nu
29
- source toolhive.nu
30
- source velero.nu
31
-
32
- def main [] {}
@@ -1,110 +0,0 @@
1
- #!/usr/bin/env nu
2
-
3
- # Installs External Secrets Operator (ESO) with optional cloud provider configuration
4
- #
5
- # Examples:
6
- # > main apply external_secrets --provider google --google_project_id my-project
7
- # > main apply external_secrets --provider azure --azure_key_vault_name my-vault
8
- def "main apply external_secrets" [
9
- --provider: string # Supported values: `google`, `azure`
10
- --google_project_id: string # Used only if `provider` is `google`
11
- --azure_key_vault_name: string # Used only if `provider` is `azure`
12
- ] {
13
-
14
- print $"\nInstalling (ansi yellow_bold)External Secrets Operator \(ESO\)(ansi reset)...\n"
15
-
16
- (
17
- helm repo add external-secrets
18
- https://charts.external-secrets.io
19
- )
20
-
21
- helm repo update
22
-
23
- (
24
- helm upgrade --install
25
- external-secrets external-secrets/external-secrets
26
- --namespace external-secrets --create-namespace
27
- --wait
28
- )
29
-
30
- if $provider == "google" {
31
-
32
- {
33
- apiVersion: "external-secrets.io/v1beta1"
34
- kind: "ClusterSecretStore"
35
- metadata: { name: "google" }
36
- spec: { provider: { gcpsm: {
37
- auth: { secretRef: { secretAccessKeySecretRef: {
38
- name: "gcp-creds"
39
- key: "creds"
40
- namespace: "crossplane-system"
41
- } } }
42
- projectID: $google_project_id
43
- } } }
44
- } | to yaml | kubectl apply --filename -
45
-
46
- start $"https://console.developers.google.com/apis/api/secretmanager.googleapis.com/overview?project=($google_project_id)"
47
-
48
- print $"
49
- (ansi yellow_bold)ENABLE(ansi reset) the API.
50
- Press the (ansi yellow_bold)enter key(ansi reset) to continue.
51
- "
52
- input
53
-
54
- } else if $provider == "azure" {
55
-
56
- # FIXME: Uncomment and rewrite
57
-
58
- # az keyvault create --name $RESOURCE_GROUP \
59
- # --resource-group $RESOURCE_GROUP
60
-
61
- # az keyvault key create --vault-name $RESOURCE_GROUP --name "ContosoFirstKey" --protection software
62
-
63
- # export AZURE_UPN=$(az ad user list | jq ".[0].userPrincipalName" -r)
64
-
65
- # export AZURE_SUBSCRIPTION_ID=$(az account show --query id -o tsv)
66
-
67
- # az role assignment create \
68
- # --role "Key Vault Secrets Officer" \
69
- # --assignee $AZURE_UPN \
70
- # --scope "/subscriptions/$AZURE_SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.KeyVault/vaults/$RESOURCE_GROUP"
71
-
72
- {
73
- apiVersion: "external-secrets.io/v1beta1"
74
- kind: "ClusterSecretStore"
75
- metadata: { name: "azure" }
76
- spec: { provider: { azurekv: {
77
- authType: "ManagedIdentity"
78
- vaultUrl: $"https://($azure_key_vault_name).vault.azure.net"
79
- } } }
80
- } | to yaml | kubectl apply --filename -
81
-
82
- } else if $provider == "aws" {
83
-
84
- {
85
- apiVersion: "external-secrets.io/v1beta1"
86
- kind: "ClusterSecretStore"
87
- metadata: { name: "aws" }
88
- spec: {
89
- provider: { aws: {
90
- service: "SecretsManager"
91
- region: "us-east-1"
92
- auth: { secretRef: {
93
- accessKeyIDSecretRef: {
94
- name: "aws-creds"
95
- key: "accessKeyID"
96
- namespace: "crossplane-system"
97
- }
98
- secretAccessKeySecretRef: {
99
- name: "aws-creds"
100
- key: "secretAccessKey"
101
- namespace: "crossplane-system"
102
- }
103
- } }
104
- } }
105
- }
106
- } | to yaml | kubectl apply --filename -
107
-
108
- }
109
-
110
- }
@@ -1,19 +0,0 @@
1
- #!/usr/bin/env nu
2
-
3
- # Installs Gatekeeper (Open Policy Agent) for Kubernetes policy enforcement
4
- def "main apply opa" [] {
5
-
6
- (
7
- helm repo add gatekeeper
8
- https://open-policy-agent.github.io/gatekeeper/charts
9
- )
10
-
11
- helm repo update
12
-
13
- (
14
- helm upgrade --install gatekeeper gatekeeper/gatekeeper
15
- --namespace gatekeeper-system --create-namespace
16
- --wait
17
- )
18
-
19
- }
package/scripts/github.nu DELETED
@@ -1,42 +0,0 @@
1
- #!/usr/bin/env nu
2
-
3
- # Retrieves GitHub credentials (token and organization/username)
4
- #
5
- # Parameters:
6
- # --enable-org: Whether to retrieve GitHub organization/user (default: true)
7
- # --github-token: GitHub token (optional, falls back to GITHUB_TOKEN or REGISTRY_PASSWORD env var)
8
- # --github-org: GitHub organization/username (optional, falls back to GITHUB_ORG or REGISTRY_USER env var)
9
- #
10
- # Returns:
11
- # A record with org and token fields, and saves values to .env file
12
- def --env "main get github" [
13
- --enable-org = true,
14
- --github-token: string,
15
- --github-org: string
16
- ] {
17
-
18
- mut token = $github_token
19
- if ($token | is-empty) and ("GITHUB_TOKEN" in $env) {
20
- $token = $env.GITHUB_TOKEN
21
- } else if ($token | is-empty) and ("REGISTRY_PASSWORD" in $env) {
22
- $token = $env.REGISTRY_PASSWORD
23
- } else if ($token | is-empty) {
24
- error make { msg: "GitHub token required via --github-token parameter or GITHUB_TOKEN/REGISTRY_PASSWORD environment variable" }
25
- }
26
- $"export GITHUB_TOKEN=($token)\n" | save --append .env
27
-
28
- mut org = $github_org
29
- if $enable_org {
30
- if ($org | is-empty) and ("GITHUB_ORG" in $env) {
31
- $org = $env.GITHUB_ORG
32
- } else if ($org | is-empty) and ("REGISTRY_USER" in $env) {
33
- $org = $env.REGISTRY_USER
34
- } else if ($org | is-empty) {
35
- error make { msg: "GitHub organization/username required via --github-org parameter or GITHUB_ORG/REGISTRY_USER environment variable" }
36
- }
37
- $"export GITHUB_ORG=($org)\n" | save --append .env
38
- }
39
-
40
- {org: $org, token: $token}
41
-
42
- }
package/scripts/image.nu DELETED
@@ -1,67 +0,0 @@
1
- #!/usr/bin/env nu
2
-
3
- # Builds a container image
4
- def "main build image" [
5
- tag: string # The tag of the image (e.g., 0.0.1)
6
- --registry = "ghcr.io" # Image registry (e.g., ghcr.io)
7
- --registry_user = "vfarcic" # Image registry user (e.g., vfarcic)
8
- --image = "silly-demo" # Image name (e.g., silly-demo)
9
- --builder = "docker" # Image builder; currently supported are: `docker` and `kaniko`
10
- --push = true # Whether to push the image to the registry
11
- --dockerfile = "Dockerfile" # Path to Dockerfile
12
- --context = "." # Path to the context
13
- ] {
14
-
15
- if $builder == "docker" {
16
-
17
- (
18
- docker image build
19
- --tag $"($registry)/($registry_user)/($image):latest"
20
- --tag $"($registry)/($registry_user)/($image):($tag)"
21
- --file $dockerfile
22
- $context
23
- )
24
-
25
- if $push {
26
-
27
- docker image push $"($registry)/($registry_user)/($image):latest"
28
-
29
- docker image push $"($registry)/($registry_user)/($image):($tag)"
30
-
31
- }
32
-
33
- } else if $builder == "kaniko" {
34
-
35
- (
36
- executor --dockerfile=Dockerfile --context=.
37
- $"--destination=($registry)/($registry_user)/($image):($tag)"
38
- $"--destination=($registry)/($registry_user)/($image):latest"
39
- )
40
-
41
- } else {
42
-
43
- echo $"Unsupported builder: ($builder)"
44
-
45
- }
46
-
47
- }
48
-
49
- # Retrieves a container registry address
50
- #
51
- # Parameters:
52
- # --container-registry: Container registry address (optional, falls back to CONTAINER_REGISTRY env var)
53
- def "main get container_registry" [
54
- --container-registry: string
55
- ] {
56
-
57
- mut registry = $container_registry
58
- if ($registry | is-empty) and ("CONTAINER_REGISTRY" in $env) {
59
- $registry = $env.CONTAINER_REGISTRY
60
- } else if ($registry | is-empty) {
61
- error make { msg: "Container registry address required via --container-registry parameter or CONTAINER_REGISTRY environment variable" }
62
- }
63
- $"export CONTAINER_REGISTRY=($registry)\n" | save --append .env
64
-
65
- $registry
66
-
67
- }
package/scripts/kro.nu DELETED
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env nu
2
-
3
- # Installs Kro (Kubernetes Resource Orchestrator) for orchestrating Kubernetes resources
4
- def "main apply kro" [] {
5
-
6
- (
7
- helm upgrade --install kro oci://ghcr.io/kro-run/kro/kro
8
- --namespace kro --create-namespace
9
- )
10
-
11
- }
@@ -1,22 +0,0 @@
1
- #!/usr/bin/env nu
2
-
3
- # Installs KubeVela platform
4
- #
5
- # Examples:
6
- # > main apply kubevela example.com --ingress_class nginx
7
- def "main apply kubevela" [
8
- host: string
9
- --ingress_class = "nginx"
10
- ] {
11
-
12
- vela install
13
-
14
- # (
15
- # vela addon enable velaux
16
- # $"domain=vela.($host)"
17
- # $"gatewayDriver=($ingress_class)"
18
- # )
19
-
20
- # start $"http://($host)"
21
-
22
- }