Files
snack/detect/detect.go
Tai Groot 08514a27e1 feat: initial project scaffold
- Common Manager interface, Package type, functional options
- Sentinel errors for common package manager failures
- Sub-package stubs for: pacman, aur, apk, apt, dpkg, dnf, rpm,
  flatpak, snap, pkg (FreeBSD), ports (OpenBSD)
- detect/ package for auto-detection of system package manager
- 0BSD license
2026-02-25 20:01:51 +00:00

44 lines
1.0 KiB
Go

// Package detect provides auto-detection of the system's available package manager.
package detect
import (
"os/exec"
"github.com/gogrlx/snack"
)
// probeOrder defines the order in which package managers are probed.
// The first available manager wins.
var probeOrder = []struct {
name string
bin string
}{
{"pacman", "pacman"},
{"apk", "apk"},
{"apt", "apt-get"},
{"dnf", "dnf"},
{"rpm", "rpm"},
{"flatpak", "flatpak"},
{"snap", "snap"},
{"pkg", "pkg"},
}
// Default returns the first available package manager on the system.
// Returns ErrManagerNotFound if no supported manager is detected.
func Default() (snack.Manager, error) {
// TODO: implement — probe for each manager in order, return first match
return nil, snack.ErrManagerNotFound
}
// All returns all available package managers on the system.
func All() []snack.Manager {
// TODO: implement
return nil
}
// HasBinary reports whether a binary is available in PATH.
func HasBinary(name string) bool {
_, err := exec.LookPath(name)
return err == nil
}