diff --git a/dnf/capabilities.go b/dnf/capabilities.go index 1279004..1b8dc38 100644 --- a/dnf/capabilities.go +++ b/dnf/capabilities.go @@ -15,6 +15,7 @@ var ( _ snack.RepoManager = (*DNF)(nil) _ snack.KeyManager = (*DNF)(nil) _ snack.Grouper = (*DNF)(nil) + _ snack.GroupQuerier = (*DNF)(nil) _ snack.NameNormalizer = (*DNF)(nil) ) diff --git a/dnf/parse_test.go b/dnf/parse_test.go index 8e9dfa6..4cc9f76 100644 --- a/dnf/parse_test.go +++ b/dnf/parse_test.go @@ -468,5 +468,6 @@ var ( _ snack.RepoManager = (*DNF)(nil) _ snack.KeyManager = (*DNF)(nil) _ snack.Grouper = (*DNF)(nil) + _ snack.GroupQuerier = (*DNF)(nil) _ snack.NameNormalizer = (*DNF)(nil) ) diff --git a/pacman/capabilities.go b/pacman/capabilities.go index 213c0bd..d5400ad 100644 --- a/pacman/capabilities.go +++ b/pacman/capabilities.go @@ -12,6 +12,7 @@ var ( _ snack.Cleaner = (*Pacman)(nil) _ snack.FileOwner = (*Pacman)(nil) _ snack.Grouper = (*Pacman)(nil) + _ snack.GroupQuerier = (*Pacman)(nil) ) // NOTE: snack.Holder is not implemented for pacman. While pacman supports diff --git a/snack.go b/snack.go index 10ba124..fea9ec2 100644 --- a/snack.go +++ b/snack.go @@ -186,7 +186,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) }