From bd41075e8a4ab6d1cce4193eb4e13a88540ee792 Mon Sep 17 00:00:00 2001 From: Arsen Musayelyan Date: Wed, 28 Dec 2022 19:04:38 -0800 Subject: [PATCH] Display only info for current distro in lure info --- info.go | 36 ++++++++++++++++++++++++++++ internal/overrides/overrides.go | 25 ++++++++++++------- internal/overrides/overrides_test.go | 2 ++ main.go | 7 ++++++ 4 files changed, 61 insertions(+), 9 deletions(-) diff --git a/info.go b/info.go index c1908cb..43e7d2d 100644 --- a/info.go +++ b/info.go @@ -25,6 +25,8 @@ import ( "go.arsenm.dev/logger/log" "github.com/urfave/cli/v2" + "go.arsenm.dev/lure/distro" + "go.arsenm.dev/lure/internal/overrides" "go.arsenm.dev/lure/internal/repos" "gopkg.in/yaml.v3" ) @@ -51,7 +53,41 @@ func infoCmd(c *cli.Context) error { pkgs := flattenFoundPkgs(found, "show") + var names []string + + if !c.Bool("all") { + info, err := distro.ParseOSRelease(c.Context) + if err != nil { + log.Fatal("Error parsing os-release file").Err(err).Send() + } + names = overrides.Resolve(info, overrides.DefaultOpts) + } + for _, pkg := range pkgs { + if !c.Bool("all") { + depsSet := false + buildDepsSet := false + for _, name := range names { + if deps, ok := pkg.Depends.Val[name]; ok && !depsSet { + pkg.Depends.Val = map[string][]string{name: deps} + depsSet = true + } + + if buildDeps, ok := pkg.BuildDepends.Val[name]; ok && !buildDepsSet { + pkg.BuildDepends.Val = map[string][]string{name: buildDeps} + buildDepsSet = true + } + } + + if !depsSet { + pkg.Depends.Val = nil + } + + if !buildDepsSet { + pkg.BuildDepends.Val = nil + } + } + err = yaml.NewEncoder(os.Stdout).Encode(pkg) if err != nil { log.Fatal("Error encoding script variables").Err(err).Send() diff --git a/internal/overrides/overrides.go b/internal/overrides/overrides.go index 6ba4232..3b9d03f 100644 --- a/internal/overrides/overrides.go +++ b/internal/overrides/overrides.go @@ -65,9 +65,7 @@ func Resolve(info *distro.OSRelease, opts *Opts) []string { out = append(out, opts.Name+"_"+arch) } } - if opts.Name != "" { - out = append(out, opts.Name) - } + out = append(out, opts.Name) for index, item := range out { out[index] = strings.ReplaceAll(item, "-", "_") @@ -77,16 +75,25 @@ func Resolve(info *distro.OSRelease, opts *Opts) []string { } func (o *Opts) WithName(name string) *Opts { - o.Name = name - return o + out := &Opts{} + *out = *o + + out.Name = name + return out } func (o *Opts) WithOverrides(v bool) *Opts { - o.Overrides = v - return o + out := &Opts{} + *out = *o + + out.Overrides = v + return out } func (o *Opts) WithLikeDistros(v bool) *Opts { - o.LikeDistros = v - return o + out := &Opts{} + *out = *o + + out.LikeDistros = v + return out } diff --git a/internal/overrides/overrides_test.go b/internal/overrides/overrides_test.go index b9fcb4b..9a2d7cd 100644 --- a/internal/overrides/overrides_test.go +++ b/internal/overrides/overrides_test.go @@ -24,6 +24,7 @@ func TestResolve(t *testing.T) { "amd64_fedora", "fedora", "amd64", + "", } if !reflect.DeepEqual(names, expected) { @@ -64,6 +65,7 @@ func TestResolveNoLikeDistros(t *testing.T) { "amd64_centos", "centos", "amd64", + "", } if !reflect.DeepEqual(names, expected) { diff --git a/main.go b/main.go index 647a054..efdbd9a 100644 --- a/main.go +++ b/main.go @@ -84,6 +84,13 @@ func main() { Action: upgradeCmd, }, { + Flags: []cli.Flag{ + &cli.BoolFlag{ + Name: "all", + Aliases: []string{"a"}, + Usage: "Show all information, not just for the current distro", + }, + }, Name: "info", Usage: "Print information about a package", Action: infoCmd,