diff --git a/internal/hajimari/customapps/customapps.go b/internal/hajimari/customapps/customapps.go index 380e334c..0fe69cc6 100644 --- a/internal/hajimari/customapps/customapps.go +++ b/internal/hajimari/customapps/customapps.go @@ -1,10 +1,9 @@ package customapps import ( - "strings" - "github.com/toboshii/hajimari/internal/config" "github.com/toboshii/hajimari/internal/models" + utilStrings "github.com/toboshii/hajimari/internal/util/strings" ) // List struct is used for listing hajimari apps @@ -27,7 +26,7 @@ func (al *List) Populate() *List { var customApps []models.AppGroup for _, group := range al.appConfig.CustomApps { - group.Group = strings.ToLower(group.Group) + group.Group = utilStrings.NormalizeString(group.Group) customApps = append(customApps, group) } diff --git a/internal/handlers/apps.go b/internal/handlers/apps.go index 4bdcd2ba..9f6f7a2e 100644 --- a/internal/handlers/apps.go +++ b/internal/handlers/apps.go @@ -2,6 +2,7 @@ package handlers import ( "net/http" + "sort" "github.com/go-chi/chi/v5" "github.com/go-chi/render" @@ -9,6 +10,7 @@ import ( "github.com/toboshii/hajimari/internal/hajimari/customapps" "github.com/toboshii/hajimari/internal/models" "github.com/toboshii/hajimari/internal/services" + utilStrings "github.com/toboshii/hajimari/internal/util/strings" ) type appResource struct { @@ -57,6 +59,11 @@ func (rs *appResource) ListApps(w http.ResponseWriter, r *http.Request) { customApps = append(customApps[:x], customApps[x+1:]...) } } + + // Sort ingressApps[i].Apps alphabetically + sort.Slice(ingressApps[i].Apps, func(j, k int) bool { + return utilStrings.CompareNormalized(ingressApps[i].Apps[j].Name, ingressApps[i].Apps[k].Name) == -1 + }) } apps = append(ingressApps, customApps...) diff --git a/internal/kube/wrappers/ingress.go b/internal/kube/wrappers/ingress.go index 5695b572..d3fc3bb9 100644 --- a/internal/kube/wrappers/ingress.go +++ b/internal/kube/wrappers/ingress.go @@ -50,9 +50,9 @@ func (iw *IngressWrapper) GetNamespace() string { // GetGroup func extracts group name from the ingress func (iw *IngressWrapper) GetGroup() string { if groupFromAnnotation := iw.GetAnnotationValue(annotations.HajimariGroupAnnotation); groupFromAnnotation != "" { - return groupFromAnnotation + return utilStrings.NormalizeString(groupFromAnnotation) } - return iw.GetNamespace() + return utilStrings.NormalizeString(iw.GetNamespace()) } // GetGroup func extracts group name from the ingress diff --git a/internal/util/strings/strings.go b/internal/util/strings/strings.go index 5a0b9d92..94a917cb 100644 --- a/internal/util/strings/strings.go +++ b/internal/util/strings/strings.go @@ -23,3 +23,13 @@ func ContainsBetweenDelimiter(fullString string, search string, delimiter string } return false } + +// NormalizeString trims extra spaces and changes the string to lower-case +func NormalizeString(str string) string { + return strings.TrimSpace(strings.ToLower(str)) +} + +// CompareNormalized compares two strings after normalizing them +func CompareNormalized(a string, b string) int { + return strings.Compare(NormalizeString(a), NormalizeString(b)) +}