refactor(snack): merge GroupIsInstalled into Grouper interface

GroupQuerier was an unnecessary indirection — GroupIsInstalled is a group
operation and belongs on Grouper. No v1 stability guarantee, so breaking
the interface is fine.
This commit is contained in:
2026-02-28 07:08:34 +00:00
parent bbb745434e
commit 83d92be37a
4 changed files with 1 additions and 8 deletions

View File

@@ -15,7 +15,6 @@ var (
_ snack.RepoManager = (*DNF)(nil)
_ snack.KeyManager = (*DNF)(nil)
_ snack.Grouper = (*DNF)(nil)
_ snack.GroupQuerier = (*DNF)(nil)
_ snack.NameNormalizer = (*DNF)(nil)
_ snack.DryRunner = (*DNF)(nil)
)

View File

@@ -468,6 +468,5 @@ var (
_ snack.RepoManager = (*DNF)(nil)
_ snack.KeyManager = (*DNF)(nil)
_ snack.Grouper = (*DNF)(nil)
_ snack.GroupQuerier = (*DNF)(nil)
_ snack.NameNormalizer = (*DNF)(nil)
)

View File

@@ -12,7 +12,6 @@ var (
_ snack.Cleaner = (*Pacman)(nil)
_ snack.FileOwner = (*Pacman)(nil)
_ snack.Grouper = (*Pacman)(nil)
_ snack.GroupQuerier = (*Pacman)(nil)
_ snack.DryRunner = (*Pacman)(nil)
)

View File

@@ -189,16 +189,12 @@ type Grouper interface {
// GroupInstall installs all packages in a group.
GroupInstall(ctx context.Context, group string, opts ...Option) error
}
// GroupQuerier provides an efficient check for whether a package group is
// fully installed. This is an optional extension of [Grouper].
// Supported by: pacman, dnf/yum.
type GroupQuerier interface {
// GroupIsInstalled reports whether all packages in the group are installed.
GroupIsInstalled(ctx context.Context, group string) (bool, error)
}
// NormalizeName provides package name normalization.
// Supported by: apt (strips :arch suffixes), rpm.
type NameNormalizer interface {