mirror of
https://github.com/gogrlx/snack.git
synced 2026-04-02 05:08:42 -07:00
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
This commit is contained in:
43
detect/detect.go
Normal file
43
detect/detect.go
Normal file
@@ -0,0 +1,43 @@
|
||||
// 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
|
||||
}
|
||||
Reference in New Issue
Block a user