41 lines
1.1 KiB
Go
41 lines
1.1 KiB
Go
|
package writers
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"katenary/helm"
|
||
|
"os"
|
||
|
"path/filepath"
|
||
|
"strings"
|
||
|
|
||
|
"gopkg.in/yaml.v3"
|
||
|
)
|
||
|
|
||
|
func BuildDeployment(deployment *helm.Deployment, name, templatesDir string) {
|
||
|
kind := "deployment"
|
||
|
fname := filepath.Join(templatesDir, name+"."+kind+".yaml")
|
||
|
fp, _ := os.Create(fname)
|
||
|
buffer := bytes.NewBuffer(nil)
|
||
|
enc := yaml.NewEncoder(buffer)
|
||
|
enc.SetIndent(2)
|
||
|
enc.Encode(deployment)
|
||
|
_content := string(buffer.Bytes())
|
||
|
content := strings.Split(string(_content), "\n")
|
||
|
dataname := ""
|
||
|
component := deployment.Spec.Selector["matchLabels"].(map[string]string)[helm.K+"/component"]
|
||
|
for _, line := range content {
|
||
|
if strings.Contains(line, "name:") {
|
||
|
dataname = strings.Split(line, ":")[1]
|
||
|
dataname = strings.TrimSpace(dataname)
|
||
|
} else if strings.Contains(line, "persistentVolumeClaim") {
|
||
|
line = " {{- if .Values." + component + ".persistence." + dataname + ".enabled }}\n" + line
|
||
|
} else if strings.Contains(line, "claimName") {
|
||
|
line += "\n {{ else }}"
|
||
|
line += "\n emptyDir: {}"
|
||
|
line += "\n {{- end }}"
|
||
|
}
|
||
|
fp.WriteString(line + "\n")
|
||
|
}
|
||
|
fp.Close()
|
||
|
|
||
|
}
|