feat(refacto): move everything in internal package
This allows to install katenary with `go install` and to clean up the project folder.
This commit is contained in:
97
internal/generator/utils.go
Normal file
97
internal/generator/utils.go
Normal file
@@ -0,0 +1,97 @@
|
||||
package generator
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/katenary/katenary/internal/generator/labels"
|
||||
"github.com/katenary/katenary/internal/generator/labels/labelstructs"
|
||||
"github.com/katenary/katenary/internal/utils"
|
||||
|
||||
"github.com/compose-spec/compose-go/types"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
"sigs.k8s.io/yaml"
|
||||
)
|
||||
|
||||
var regexpLineWrap = regexp.MustCompile(`\n\s+}}`)
|
||||
|
||||
// findDeployment finds the corresponding target deployment for a service.
|
||||
func findDeployment(serviceName string, deployments map[string]*Deployment) *Deployment {
|
||||
for _, d := range deployments {
|
||||
if d.service.Name == serviceName {
|
||||
return d
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// addConfigMapToService adds the configmap to the service.
|
||||
func addConfigMapToService(serviceName, fromservice, chartName string, target *Deployment) {
|
||||
for i, c := range target.Spec.Template.Spec.Containers {
|
||||
if c.Name != serviceName {
|
||||
continue
|
||||
}
|
||||
c.EnvFrom = append(c.EnvFrom, corev1.EnvFromSource{
|
||||
ConfigMapRef: &corev1.ConfigMapEnvSource{
|
||||
LocalObjectReference: corev1.LocalObjectReference{
|
||||
Name: utils.TplName(fromservice, chartName),
|
||||
},
|
||||
},
|
||||
})
|
||||
target.Spec.Template.Spec.Containers[i] = c
|
||||
}
|
||||
}
|
||||
|
||||
// fixPorts checks the "ports" label from container and add it to the service.
|
||||
func fixPorts(service *types.ServiceConfig) error {
|
||||
// check the "ports" label from container and add it to the service
|
||||
portsLabel := ""
|
||||
ok := false
|
||||
if portsLabel, ok = service.Labels[labels.LabelPorts]; !ok {
|
||||
return nil
|
||||
}
|
||||
ports, err := labelstructs.PortsFrom(portsLabel)
|
||||
if err != nil {
|
||||
// maybe it's a string, comma separated
|
||||
parts := strings.SplitSeq(portsLabel, ",")
|
||||
for part := range parts {
|
||||
part = strings.TrimSpace(part)
|
||||
if part == "" {
|
||||
continue
|
||||
}
|
||||
port, err := strconv.ParseUint(part, 10, 32)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ports = append(ports, uint32(port))
|
||||
}
|
||||
}
|
||||
for _, port := range ports {
|
||||
service.Ports = append(service.Ports, types.ServicePortConfig{
|
||||
Target: port,
|
||||
})
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// isIgnored returns true if the service is ignored.
|
||||
func isIgnored(service types.ServiceConfig) bool {
|
||||
if v, ok := service.Labels[labels.LabelIgnore]; ok {
|
||||
return v == "true" || v == "yes" || v == "1"
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// UnWrapTPL removes the line wrapping from a template.
|
||||
func UnWrapTPL(in []byte) []byte {
|
||||
return regexpLineWrap.ReplaceAll(in, []byte(" }}"))
|
||||
}
|
||||
|
||||
func ToK8SYaml(obj any) ([]byte, error) {
|
||||
if o, err := yaml.Marshal(obj); err != nil {
|
||||
return nil, nil
|
||||
} else {
|
||||
return UnWrapTPL(o), nil
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user