From 515197ac27dedc895119757849ba54a6fe3c6174 Mon Sep 17 00:00:00 2001 From: see Date: Wed, 29 Jun 2022 15:38:28 +0200 Subject: [PATCH] Added covenience functions There is now an alias "k" for kubectl. Autocomplete works now for kubectl. --- .../provs/server/application/Application.kt | 1 + .../provs/server/domain/k3s/K3sService.kt | 13 +++++++++++-- .../provs/server/infrastructure/CliConvenience.kt | 15 +++++++++++++++ 3 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 src/main/kotlin/org/domaindrivenarchitecture/provs/server/infrastructure/CliConvenience.kt diff --git a/src/main/kotlin/org/domaindrivenarchitecture/provs/server/application/Application.kt b/src/main/kotlin/org/domaindrivenarchitecture/provs/server/application/Application.kt index a44de64..7148f58 100644 --- a/src/main/kotlin/org/domaindrivenarchitecture/provs/server/application/Application.kt +++ b/src/main/kotlin/org/domaindrivenarchitecture/provs/server/application/Application.kt @@ -4,6 +4,7 @@ import org.domaindrivenarchitecture.provs.framework.core.cli.createProvInstance import org.domaindrivenarchitecture.provs.server.domain.ServerType import org.domaindrivenarchitecture.provs.server.domain.k3s.K3sCliCommand import org.domaindrivenarchitecture.provs.server.domain.k3s.provisionK3s +import org.domaindrivenarchitecture.provs.server.infrastructure.provisionServerCliConvenience import kotlin.system.exitProcess diff --git a/src/main/kotlin/org/domaindrivenarchitecture/provs/server/domain/k3s/K3sService.kt b/src/main/kotlin/org/domaindrivenarchitecture/provs/server/domain/k3s/K3sService.kt index 5f5b1c1..535aee8 100644 --- a/src/main/kotlin/org/domaindrivenarchitecture/provs/server/domain/k3s/K3sService.kt +++ b/src/main/kotlin/org/domaindrivenarchitecture/provs/server/domain/k3s/K3sService.kt @@ -20,13 +20,19 @@ fun Prov.provisionK3s(cli: K3sCliCommand) = task { provisionMeissaDesktopSubmodules(cli.submodules, grafanaConfigResolved) } + provisionServerCliConvenience() } /** * Installs a k3s server. */ -fun Prov.provisionK3s(k3sConfig: K3sConfig, grafanaConfigResolved: GrafanaAgentConfigResolved? = null, applicationFileName: ApplicationFileName? = null) = task { +fun Prov.provisionK3s( + k3sConfig: K3sConfig, + grafanaConfigResolved: GrafanaAgentConfigResolved? = null, + applicationFileName: ApplicationFileName? = null) = task { + provisionNetwork(k3sConfig) + if (k3sConfig.reprovision && testConfigExists()) { deprovisionK3sInfra() } @@ -50,7 +56,10 @@ fun Prov.provisionK3s(k3sConfig: K3sConfig, grafanaConfigResolved: GrafanaAgentC } } -private fun Prov.provisionMeissaDesktopSubmodules(submodules: List, grafanaConfigResolved: GrafanaAgentConfigResolved?) = task { +private fun Prov.provisionMeissaDesktopSubmodules( + submodules: List, + grafanaConfigResolved: GrafanaAgentConfigResolved?) = task { + if (submodules.contains(ServerSubmodule.GRAFANA.name.lowercase())) { if (grafanaConfigResolved == null) { println("ERROR: Could not find grafana config.") diff --git a/src/main/kotlin/org/domaindrivenarchitecture/provs/server/infrastructure/CliConvenience.kt b/src/main/kotlin/org/domaindrivenarchitecture/provs/server/infrastructure/CliConvenience.kt new file mode 100644 index 0000000..060f893 --- /dev/null +++ b/src/main/kotlin/org/domaindrivenarchitecture/provs/server/infrastructure/CliConvenience.kt @@ -0,0 +1,15 @@ +package org.domaindrivenarchitecture.provs.server.infrastructure + +import org.domaindrivenarchitecture.provs.framework.core.Prov +import org.domaindrivenarchitecture.provs.framework.core.ProvResult + +fun Prov.provisionServerCliConvenience() = task { + provisionKubectlCompletionAndAlias() +} + +fun Prov.provisionKubectlCompletionAndAlias(): ProvResult = task { + + cmd("kubectl completion bash | sudo tee /etc/bash_completion.d/kubectl > /dev/null") + cmd("echo 'alias k=kubectl' >>~/.bashrc") + cmd("echo 'complete -o default -F __start_kubectl k' >>~/.bashrc") +} \ No newline at end of file