diff options
| author | Stefan Majewsky <majewsky@gmx.net> | 2020-03-28 13:53:10 +0100 |
|---|---|---|
| committer | Stefan Majewsky <majewsky@gmx.net> | 2020-03-28 13:53:10 +0100 |
| commit | ed2b9374599cc00467b1c27121318748cc0d3f49 (patch) | |
| tree | 65e3200a0b69817b24ae772223d1d852a52458af /internal/prompt/cloud.go | |
| parent | 1ff86053ddef8de3247909434e0bd7000c060f2a (diff) | |
| download | gofu-ed2b9374599cc00467b1c27121318748cc0d3f49.tar.gz | |
rename pkg/ to internal/
Diffstat (limited to 'internal/prompt/cloud.go')
| -rw-r--r-- | internal/prompt/cloud.go | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/internal/prompt/cloud.go b/internal/prompt/cloud.go new file mode 100644 index 0000000..72bd6f9 --- /dev/null +++ b/internal/prompt/cloud.go @@ -0,0 +1,83 @@ +/******************************************************************************* +* +* Copyright 2017 Stefan Majewsky <majewsky@gmx.net> +* +* This program is free software: you can redistribute it and/or modify it under +* the terms of the GNU General Public License as published by the Free Software +* Foundation, either version 3 of the License, or (at your option) any later +* version. +* +* This program is distributed in the hope that it will be useful, but WITHOUT ANY +* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +* A PARTICULAR PURPOSE. See the GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License along with +* this program. If not, see <http://www.gnu.org/licenses/>. +* +*******************************************************************************/ + +package prompt + +import ( + "io/ioutil" + "os" + "path/filepath" + "strings" + + yaml "gopkg.in/yaml.v2" +) + +func getKubernetesField() string { + configPaths := filepath.SplitList(os.Getenv("KUBECONFIG")) + + var context string + for _, configPath := range configPaths { + context = getKubernetesContext(configPath) + if context != "" { + break + } + } + if context == "" { + return "" + } + + namespaceBytes, err := ioutil.ReadFile(filepath.Join(os.Getenv("HOME"), ".kubectl-namespace")) + namespace := strings.TrimSpace(string(namespaceBytes)) + if err != nil { + if !os.IsNotExist(err) { + handleError(err) + } + namespace = "" + } + if namespace != "" { + context += "/" + namespace + } + + return withType("kube", context) +} + +func getKubernetesContext(configPath string) string { + buf, err := ioutil.ReadFile(configPath) + if err != nil { + //non-existence is acceptable, just make the caller continue with the next configPath + if !os.IsNotExist(err) { + handleError(err) + } + return "" + } + + var data struct { + CurrentContext string `yaml:"current-context"` + } + err = yaml.Unmarshal(buf, &data) + handleError(err) + return strings.TrimSpace(data.CurrentContext) +} + +func getOpenstackField() string { + cloudName := os.Getenv("CURRENT_OS_CLOUD") + if cloudName == "" { + return "" + } + return withType("cloud", cloudName) +} |
