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:
2026-02-25 20:01:51 +00:00
commit 08514a27e1
18 changed files with 326 additions and 0 deletions

31
errors.go Normal file
View File

@@ -0,0 +1,31 @@
package snack
import "errors"
var (
// ErrNotInstalled is returned when a queried package is not installed.
ErrNotInstalled = errors.New("package is not installed")
// ErrNotFound is returned when a package cannot be found in any repository.
ErrNotFound = errors.New("package not found")
// ErrUnsupportedPlatform is returned when a package manager is not
// available on the current platform.
ErrUnsupportedPlatform = errors.New("package manager not available on this platform")
// ErrPermissionDenied is returned when an operation requires elevated
// privileges that were not provided.
ErrPermissionDenied = errors.New("permission denied; try WithSudo()")
// ErrAlreadyInstalled is returned when attempting to install a package
// that is already present.
ErrAlreadyInstalled = errors.New("package is already installed")
// ErrDependencyConflict is returned when a package has unresolvable
// dependency conflicts.
ErrDependencyConflict = errors.New("dependency conflict")
// ErrManagerNotFound is returned by detect when no supported package
// manager can be found on the system.
ErrManagerNotFound = errors.New("no supported package manager found")
)