mirror of
https://github.com/gogrlx/snack.git
synced 2026-04-02 13:18:43 -07:00
- 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>
22 lines
679 B
Go
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, ""
|
|
}
|