package shortcuts import ( "strings" "git.zb-server.de/Sebi/ssh-netbox-wrapper/internal/config" ) // Normalize strips configured domain suffixes and optionally hyphens from a hostname. // The result is lowercased for case-insensitive comparison. func Normalize(name string, cfg config.ShortcutsConfig) string { s := strings.ToLower(name) for _, domain := range cfg.Domains { suffix := strings.ToLower(domain) if !strings.HasPrefix(suffix, ".") { suffix = "." + suffix } if strings.HasSuffix(s, suffix) { s = s[:len(s)-len(suffix)] break } } if cfg.StripHyphens { s = strings.ReplaceAll(s, "-", "") } return s } // MakeNormalizer returns a closure bound to cfg, suitable for Cache.GetByShortcut. func MakeNormalizer(cfg config.ShortcutsConfig) func(string) string { return func(name string) string { return Normalize(name, cfg) } } // AliasName returns a shell-safe alias name for the given host. // It normalizes the name (strips configured domains and optionally hyphens) then // replaces any remaining dots with underscores so the result is a valid identifier. func AliasName(name string, cfg config.ShortcutsConfig) string { s := Normalize(name, cfg) return strings.ReplaceAll(s, ".", "_") }