Files
snack/brew/normalize.go
Tai Groot 934c6610c5 feat: add Homebrew provider, implement NameNormalizer across all managers
- Add brew package for Homebrew support on macOS and Linux
- Implement NameNormalizer interface (NormalizeName, ParseArch) for all providers
- Add darwin platform detection with Homebrew as default
- Consolidate capabilities by removing separate *_linux.go/*_other.go files
- Update tests for new capability expectations
- Add comprehensive tests for AUR and brew providers
- Update README with capability matrix and modern Target API usage

💘 Generated with Crush

Assisted-by: AWS Claude Opus 4.5 via Crush <crush@charm.land>
2026-03-05 20:40:32 -05:00

22 lines
679 B
Go

package brew
import "strings"
// normalizeName returns the canonical form of a package name.
// Homebrew formulae can have version suffixes like `python@3.12`.
// This strips the version suffix to get the base formula name.
func normalizeName(name string) string {
n, _ := parseVersionSuffix(name)
return n
}
// parseVersionSuffix extracts the version suffix from a formula name.
// Homebrew uses @ to denote versioned formulae (e.g., "python@3.12").
// Returns the name without version and the version string.
func parseVersionSuffix(name string) (string, string) {
if idx := strings.LastIndex(name, "@"); idx > 0 {
return name[:idx], name[idx+1:]
}
return name, ""
}