From a29de2e52df22bcfbecb4cfd8dd994f743853104 Mon Sep 17 00:00:00 2001 From: EnumDev Date: Thu, 5 Feb 2026 17:52:40 +0200 Subject: [PATCH] Show virtual package providers in readable info --- src/bpmlib/databases.go | 55 ++++++++++++++++++++++++++++++++++++----- src/bpmlib/packages.go | 55 ++++++++++++++++++++++++++++++++++++----- 2 files changed, 98 insertions(+), 12 deletions(-) diff --git a/src/bpmlib/databases.go b/src/bpmlib/databases.go index 7cc4d03..be077e0 100644 --- a/src/bpmlib/databases.go +++ b/src/bpmlib/databases.go @@ -343,6 +343,34 @@ func (entry *BPMDatabaseEntry) CreateReadableInfo(rootDir string, humanReadableS builder.WriteString(" - " + val + "\n") } } + builderWriteDependencyArray := func(label string, depends []string) { + if len(depends) == 0 { + return + } + + // Sort array + slices.Sort(depends) + + builder.WriteString(label + ":\n") + for _, val := range depends { + builder.WriteString(" - " + val) + + // Show virtual package providers + if providers := GetDatabaseVirtualPackageEntry(val); len(providers) > 0 { + builder.WriteString(" (") + for i, vpkg := range providers { + if i == len(providers)-1 { + builder.WriteString(vpkg.Info.Name) + } else { + builder.WriteString(vpkg.Info.Name + ", ") + } + } + builder.WriteString(")") + } + + builder.WriteString("\n") + } + } // Main information builder.WriteString("Name: " + entry.Info.Name + "\n") @@ -359,21 +387,36 @@ func (entry *BPMDatabaseEntry) CreateReadableInfo(rootDir string, humanReadableS builder.WriteString("Type: " + entry.Info.Type + "\n") // Dependencies - builderWriteArray("Dependencies", entry.Info.Depends, true) + builderWriteDependencyArray("Dependencies", entry.Info.Depends) if entry.Info.Type == "source" { - builderWriteArray("Make dependencies", entry.Info.MakeDepends, true) - builderWriteArray("Check dependencies", entry.Info.CheckDepends, true) + builderWriteDependencyArray("Make dependencies", entry.Info.MakeDepends) + builderWriteDependencyArray("Check dependencies", entry.Info.CheckDepends) } - builderWriteArray("Runtime dependencies", entry.Info.RuntimeDepends, true) + builderWriteDependencyArray("Runtime dependencies", entry.Info.RuntimeDepends) if len(entry.Info.OptionalDepends) > 0 { builder.WriteString("Optional dependencies:\n") for _, depend := range entry.Info.OptionalDepends { dependSplit := strings.SplitN(depend, ":", 2) if len(dependSplit) == 2 { - builder.WriteString(fmt.Sprintf(" - %s (%s)\n", dependSplit[0], dependSplit[1])) + builder.WriteString(fmt.Sprintf(" - %s (%s)", dependSplit[0], dependSplit[1])) } else { - builder.WriteString(" - " + dependSplit[0] + "\n") + builder.WriteString(" - " + dependSplit[0]) } + + // Show virtual package providers + if providers := GetDatabaseVirtualPackageEntry(dependSplit[0]); len(providers) > 0 { + builder.WriteString(" (") + for i, vpkg := range providers { + if i == len(providers)-1 { + builder.WriteString(vpkg.Info.Name) + } else { + builder.WriteString(vpkg.Info.Name + ", ") + } + } + builder.WriteString(")") + } + + builder.WriteString("\n") } } builderWriteArray("Dependant packages", entry.GetEntryDependants(), true) diff --git a/src/bpmlib/packages.go b/src/bpmlib/packages.go index faed442..88dd12c 100644 --- a/src/bpmlib/packages.go +++ b/src/bpmlib/packages.go @@ -552,6 +552,34 @@ func (pkgInfo *PackageInfo) CreateReadableInfo(rootDir string) string { builder.WriteString(" - " + val + "\n") } } + builderWriteDependencyArray := func(label string, depends []string) { + if len(depends) == 0 { + return + } + + // Sort array + slices.Sort(depends) + + builder.WriteString(label + ":\n") + for _, val := range depends { + builder.WriteString(" - " + val) + + // Show virtual package providers + if providers := GetVirtualPackageInfo(val, rootDir); len(providers) > 0 { + builder.WriteString(" (") + for i, vpkg := range providers { + if i == len(providers)-1 { + builder.WriteString(vpkg.Name) + } else { + builder.WriteString(vpkg.Name + ", ") + } + } + builder.WriteString(")") + } + + builder.WriteString("\n") + } + } // Main information builder.WriteString("Name: " + pkgInfo.Name + "\n") @@ -567,21 +595,36 @@ func (pkgInfo *PackageInfo) CreateReadableInfo(rootDir string) string { builder.WriteString("Type: " + pkgInfo.Type + "\n") // Dependencies - builderWriteArray("Dependencies", pkgInfo.Depends, true) + builderWriteDependencyArray("Dependencies", pkgInfo.Depends) if pkgInfo.Type == "source" { - builderWriteArray("Make dependencies", pkgInfo.MakeDepends, true) - builderWriteArray("Check dependencies", pkgInfo.CheckDepends, true) + builderWriteDependencyArray("Make dependencies", pkgInfo.MakeDepends) + builderWriteDependencyArray("Check dependencies", pkgInfo.CheckDepends) } - builderWriteArray("Runtime dependencies", pkgInfo.RuntimeDepends, true) + builderWriteDependencyArray("Runtime dependencies", pkgInfo.RuntimeDepends) if len(pkgInfo.OptionalDepends) > 0 { builder.WriteString("Optional dependencies:\n") for _, depend := range pkgInfo.OptionalDepends { dependSplit := strings.SplitN(depend, ":", 2) if len(dependSplit) == 2 { - builder.WriteString(fmt.Sprintf(" - %s (%s)\n", dependSplit[0], dependSplit[1])) + builder.WriteString(fmt.Sprintf(" - %s (%s)", dependSplit[0], dependSplit[1])) } else { - builder.WriteString(" - " + dependSplit[0] + "\n") + builder.WriteString(" - " + dependSplit[0]) } + + // Show virtual package providers + if providers := GetVirtualPackageInfo(dependSplit[0], rootDir); len(providers) > 0 { + builder.WriteString(" (") + for i, vpkg := range providers { + if i == len(providers)-1 { + builder.WriteString(vpkg.Name) + } else { + builder.WriteString(vpkg.Name + ", ") + } + } + builder.WriteString(")") + } + + builder.WriteString("\n") } } builderWriteArray("Dependant packages", pkgInfo.GetPackageDependants(rootDir), true)