Files
sub2api-cn-relay-manager/internal/provision/naming.go
phamnazage-jpg 71cbaf5fa6 test(project): achieve ≥70% package coverage across all internal packages
- store/sqlite: 75.4% (repos + db coverage)
- host/sub2api: 80.8% (httptest mock server, pure function tests)
- app: 74.2% (handler error paths, NewActionSet closures)
- pack: 72.4%
- provision: 75.2%
- access: 77.3%
- config: 94.7% (lookup mock tests)

All tests pass: build, vet, race, coverage gates.
2026-05-15 19:26:25 +08:00

41 lines
883 B
Go

package provision
import (
"fmt"
"regexp"
"strings"
"sub2api-cn-relay-manager/internal/pack"
)
var nonSlugPattern = regexp.MustCompile(`[^a-z0-9]+`)
type ResourceNames struct {
Group string
Channel string
Plan string
}
func SuggestAccountNamePrefix(provider pack.ProviderManifest) string {
return fmt.Sprintf("%s-", resourceSlug(provider.ProviderID))
}
func SuggestResourceNames(provider pack.ProviderManifest) ResourceNames {
slug := resourceSlug(provider.ProviderID)
return ResourceNames{
Group: fmt.Sprintf("crm-%s-group", slug),
Channel: fmt.Sprintf("crm-%s-channel", slug),
Plan: fmt.Sprintf("crm-%s-plan", slug),
}
}
func resourceSlug(raw string) string {
slug := strings.ToLower(strings.TrimSpace(raw))
slug = nonSlugPattern.ReplaceAllString(slug, "-")
slug = strings.Trim(slug, "-")
if slug == "" {
return "provider"
}
return slug
}