Fix some indentation behavio + add indent flag
This commit is contained in:
@@ -11,7 +11,7 @@ func BuildConfigMap(c interface{}, kind, servicename, name, templatesDir string)
|
|||||||
fname := filepath.Join(templatesDir, servicename+"."+name+"."+kind+".yaml")
|
fname := filepath.Join(templatesDir, servicename+"."+name+"."+kind+".yaml")
|
||||||
fp, _ := os.Create(fname)
|
fp, _ := os.Create(fname)
|
||||||
enc := yaml.NewEncoder(fp)
|
enc := yaml.NewEncoder(fp)
|
||||||
enc.SetIndent(2)
|
enc.SetIndent(IndentSize)
|
||||||
enc.Encode(c)
|
enc.Encode(c)
|
||||||
fp.Close()
|
fp.Close()
|
||||||
}
|
}
|
||||||
|
@@ -16,22 +16,25 @@ func BuildDeployment(deployment *helm.Deployment, name, templatesDir string) {
|
|||||||
fp, _ := os.Create(fname)
|
fp, _ := os.Create(fname)
|
||||||
buffer := bytes.NewBuffer(nil)
|
buffer := bytes.NewBuffer(nil)
|
||||||
enc := yaml.NewEncoder(buffer)
|
enc := yaml.NewEncoder(buffer)
|
||||||
enc.SetIndent(2)
|
enc.SetIndent(IndentSize)
|
||||||
enc.Encode(deployment)
|
enc.Encode(deployment)
|
||||||
_content := string(buffer.Bytes())
|
_content := string(buffer.Bytes())
|
||||||
content := strings.Split(string(_content), "\n")
|
content := strings.Split(string(_content), "\n")
|
||||||
dataname := ""
|
dataname := ""
|
||||||
component := deployment.Spec.Selector["matchLabels"].(map[string]string)[helm.K+"/component"]
|
component := deployment.Spec.Selector["matchLabels"].(map[string]string)[helm.K+"/component"]
|
||||||
|
n := 0 // will be count of lines only on "persistentVolumeClaim" line, to indent "else" and "end" at the right place
|
||||||
for _, line := range content {
|
for _, line := range content {
|
||||||
if strings.Contains(line, "name:") {
|
if strings.Contains(line, "name:") {
|
||||||
dataname = strings.Split(line, ":")[1]
|
dataname = strings.Split(line, ":")[1]
|
||||||
dataname = strings.TrimSpace(dataname)
|
dataname = strings.TrimSpace(dataname)
|
||||||
} else if strings.Contains(line, "persistentVolumeClaim") {
|
} else if strings.Contains(line, "persistentVolumeClaim") {
|
||||||
line = " {{- if .Values." + component + ".persistence." + dataname + ".enabled }}\n" + line
|
n = CountSpaces(line)
|
||||||
|
line = strings.Repeat(" ", n) + "{{- if .Values." + component + ".persistence." + dataname + ".enabled }}\n" + line
|
||||||
} else if strings.Contains(line, "claimName") {
|
} else if strings.Contains(line, "claimName") {
|
||||||
line += "\n {{ else }}"
|
spaces := strings.Repeat(" ", n)
|
||||||
line += "\n emptyDir: {}"
|
line += "\n" + spaces + "{{ else }}"
|
||||||
line += "\n {{- end }}"
|
line += "\n" + spaces + "emptyDir: {}"
|
||||||
|
line += "\n" + spaces + "{{- end }}"
|
||||||
}
|
}
|
||||||
fp.WriteString(line + "\n")
|
fp.WriteString(line + "\n")
|
||||||
}
|
}
|
||||||
|
@@ -27,7 +27,7 @@ func BuildIngress(ingress *helm.Ingress, name, templatesDir string) {
|
|||||||
buffer := bytes.NewBuffer(nil)
|
buffer := bytes.NewBuffer(nil)
|
||||||
fname := filepath.Join(templatesDir, name+"."+kind+".yaml")
|
fname := filepath.Join(templatesDir, name+"."+kind+".yaml")
|
||||||
enc := yaml.NewEncoder(buffer)
|
enc := yaml.NewEncoder(buffer)
|
||||||
enc.SetIndent(2)
|
enc.SetIndent(IndentSize)
|
||||||
buffer.WriteString("{{- if .Values." + name + ".ingress.enabled -}}\n")
|
buffer.WriteString("{{- if .Values." + name + ".ingress.enabled -}}\n")
|
||||||
enc.Encode(ingress)
|
enc.Encode(ingress)
|
||||||
buffer.WriteString("{{- end -}}")
|
buffer.WriteString("{{- end -}}")
|
||||||
|
@@ -17,7 +17,7 @@ func BuildService(service *helm.Service, name, templatesDir string) {
|
|||||||
fname := filepath.Join(templatesDir, name+suffix+"."+kind+".yaml")
|
fname := filepath.Join(templatesDir, name+suffix+"."+kind+".yaml")
|
||||||
fp, _ := os.Create(fname)
|
fp, _ := os.Create(fname)
|
||||||
enc := yaml.NewEncoder(fp)
|
enc := yaml.NewEncoder(fp)
|
||||||
enc.SetIndent(2)
|
enc.SetIndent(IndentSize)
|
||||||
enc.Encode(service)
|
enc.Encode(service)
|
||||||
fp.Close()
|
fp.Close()
|
||||||
}
|
}
|
||||||
|
@@ -15,7 +15,7 @@ func BuildStorage(storage *helm.Storage, name, templatesDir string) {
|
|||||||
volname := storage.K8sBase.Metadata.Labels[helm.K+"/pvc-name"]
|
volname := storage.K8sBase.Metadata.Labels[helm.K+"/pvc-name"]
|
||||||
fp.WriteString("{{ if .Values." + name + ".persistence." + volname + ".enabled }}\n")
|
fp.WriteString("{{ if .Values." + name + ".persistence." + volname + ".enabled }}\n")
|
||||||
enc := yaml.NewEncoder(fp)
|
enc := yaml.NewEncoder(fp)
|
||||||
enc.SetIndent(2)
|
enc.SetIndent(IndentSize)
|
||||||
enc.Encode(storage)
|
enc.Encode(storage)
|
||||||
fp.WriteString("{{- end -}}")
|
fp.WriteString("{{- end -}}")
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,9 @@
|
|||||||
package writers
|
package writers
|
||||||
|
|
||||||
// CountSpaces returns the number of spaces from the begining of the line
|
// IndentSize set the indentation size for yaml output.
|
||||||
|
var IndentSize = 2
|
||||||
|
|
||||||
|
// CountSpaces returns the number of spaces from the begining of the line.
|
||||||
func CountSpaces(line string) int {
|
func CountSpaces(line string) int {
|
||||||
var spaces int
|
var spaces int
|
||||||
for _, char := range line {
|
for _, char := range line {
|
||||||
|
13
main.go
13
main.go
@@ -2,7 +2,9 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"katenary/cmd"
|
"katenary/cmd"
|
||||||
|
"katenary/generator/writers"
|
||||||
"katenary/helm"
|
"katenary/helm"
|
||||||
|
"strconv"
|
||||||
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
@@ -50,16 +52,21 @@ func main() {
|
|||||||
Short: "Convert docker-compose to helm chart",
|
Short: "Convert docker-compose to helm chart",
|
||||||
Long: "Convert docker-compose to helm chart. The resulting helm chart will be in the current directory/" +
|
Long: "Convert docker-compose to helm chart. The resulting helm chart will be in the current directory/" +
|
||||||
cmd.ChartsDir + "/" + cmd.AppName +
|
cmd.ChartsDir + "/" + cmd.AppName +
|
||||||
".\nThe appversion will be produced that waty:\n" +
|
".\nThe appversion will be generated that way:\n" +
|
||||||
"- from git version or tag\n" +
|
"- if it's in a git project, it takes git version or tag\n" +
|
||||||
"- if it's not defined, so the version will be get from the --apVersion flag \n" +
|
"- if it's not defined, so the version will be get from the --apVersion flag \n" +
|
||||||
"- if it's not defined, so the 0.0.1 version is used",
|
"- if it's not defined, so the 0.0.1 version is used",
|
||||||
Run: func(c *cobra.Command, args []string) {
|
Run: func(c *cobra.Command, args []string) {
|
||||||
force := c.Flag("force").Changed
|
force := c.Flag("force").Changed
|
||||||
|
// TODO: is there a way to get typed values from cobra?
|
||||||
appversion := c.Flag("app-version").Value.String()
|
appversion := c.Flag("app-version").Value.String()
|
||||||
composeFile := c.Flag("compose-file").Value.String()
|
composeFile := c.Flag("compose-file").Value.String()
|
||||||
appName := c.Flag("app-name").Value.String()
|
appName := c.Flag("app-name").Value.String()
|
||||||
chartDir := c.Flag("output-dir").Value.String()
|
chartDir := c.Flag("output-dir").Value.String()
|
||||||
|
indentation, err := strconv.Atoi(c.Flag("indent-size").Value.String())
|
||||||
|
if err != nil {
|
||||||
|
writers.IndentSize = indentation
|
||||||
|
}
|
||||||
cmd.Convert(composeFile, appversion, appName, chartDir, force)
|
cmd.Convert(composeFile, appversion, appName, chartDir, force)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@@ -73,6 +80,8 @@ func main() {
|
|||||||
"app-name", "n", cmd.AppName, "Application name")
|
"app-name", "n", cmd.AppName, "Application name")
|
||||||
convertCmd.Flags().StringP(
|
convertCmd.Flags().StringP(
|
||||||
"output-dir", "o", cmd.ChartsDir, "Chart directory")
|
"output-dir", "o", cmd.ChartsDir, "Chart directory")
|
||||||
|
convertCmd.Flags().IntP(
|
||||||
|
"indent-size", "i", 2, "Set the indent size of the YAML files")
|
||||||
|
|
||||||
// show possible labels to set in docker-compose file
|
// show possible labels to set in docker-compose file
|
||||||
showLabelsCmd := &cobra.Command{
|
showLabelsCmd := &cobra.Command{
|
||||||
|
Reference in New Issue
Block a user