diff --git a/query.go b/query.go index 747e1f9d..10000baa 100644 --- a/query.go +++ b/query.go @@ -43,6 +43,20 @@ func syncInfo(ctx context.Context, run *runtime.Runtime, ) pkgS = query.RemoveInvalidTargets(run.Logger, pkgS, run.Cfg.Mode) + + expandedPackages := []string{} + for _, pkg := range pkgS { + groupPackages := dbExecutor.PackagesFromGroup(pkg) + if len(groupPackages) > 0 { + for _, p := range groupPackages { + expandedPackages = append(expandedPackages, p.Name()) + } + } else { + expandedPackages = append(expandedPackages, pkg) + } + } + pkgS = expandedPackages + aurS, repoS := packageSlices(pkgS, run.Cfg, dbExecutor) if len(repoS) == 0 && len(aurS) == 0 { diff --git a/query_test.go b/query_test.go index 11231a9c..215c580a 100644 --- a/query_test.go +++ b/query_test.go @@ -84,6 +84,12 @@ func TestSyncInfo(t *testing.T) { wantShow: []string{}, wantErr: true, }, + { + name: "Si arduino", + args: []string{"S", "i"}, + targets: []string{"arduino"}, + wantShow: []string{"pacman", "-S", "-i", "--config", "/etc/pacman.conf", "--", "arduino-cli"}, + }, } dbExc := &mock.DBExecutor{ @@ -94,9 +100,20 @@ func TestSyncInfo(t *testing.T) { PBase: "linux", } } + if s == "arduino-cli" { + return &mock.Package{ + PName: "arduino-cli", + PBase: "arduino-cli", + } + } return nil }, PackagesFromGroupFn: func(s string) []mock.IPackage { + if s == "arduino" { + return []mock.IPackage{ + &mock.Package{PName: "arduino-cli"}, + } + } return nil }, }