From b2beb66b0fccdb508a81ec63aa4120fd127893bc Mon Sep 17 00:00:00 2001 From: Emily McMullan Date: Wed, 27 Mar 2024 11:30:05 -0400 Subject: [PATCH] trim dep prefixes outside of internal provider Signed-off-by: Emily McMullan --- cmd/analyzer/main.go | 48 ++++++++++++++++++++++++++-- provider/internal/java/dependency.go | 2 +- 2 files changed, 46 insertions(+), 4 deletions(-) diff --git a/cmd/analyzer/main.go b/cmd/analyzer/main.go index 5e6d446e..f6eee686 100644 --- a/cmd/analyzer/main.go +++ b/cmd/analyzer/main.go @@ -5,6 +5,7 @@ import ( "encoding/json" "fmt" "os" + "path/filepath" "sort" "strings" "sync" @@ -443,10 +444,17 @@ func DependencyOutput(ctx context.Context, providers map[string]provider.Interna continue } for u, ds := range deps { + var outputDepDag []konveyor.DepDAGItem + // trim m2 repo prefix for java deps + if name == "java" { + outputDepDag = trimDagItemPrefixes(ds) + } else { + outputDepDag = ds + } depsTree = append(depsTree, konveyor.DepsTreeItem{ FileURI: string(u), Provider: name, - Dependencies: ds, + Dependencies: outputDepDag, }) } } else { @@ -456,11 +464,17 @@ func DependencyOutput(ctx context.Context, providers map[string]provider.Interna continue } for u, ds := range deps { - newDeps := ds + var outputDeps []*konveyor.Dep + // trim m2 repo prefix for java deps + if name == "java" { + outputDeps = trimFlatDepPrefixes(ds) + } else { + outputDeps = ds + } depsFlat = append(depsFlat, konveyor.DepsFlatItem{ Provider: name, FileURI: string(u), - Dependencies: newDeps, + Dependencies: outputDeps, }) } } @@ -503,3 +517,31 @@ func DependencyOutput(ctx context.Context, providers map[string]provider.Interna } } + +func trimFlatDepPrefixes(deps []*konveyor.Dep) []*konveyor.Dep { + for _, dep := range deps { + dep.FileURIPrefix = fmt.Sprintf("file:///%s", filepath.Join(strings.Replace( + dep.Extras["groupId"].(string), ".", "/", -1), dep.Extras["artifactId"].(string), dep.Version)) + } + return deps +} + +func trimDagItemPrefixes(depItem []konveyor.DepDAGItem) []konveyor.DepDAGItem { + newDagItem := make([]konveyor.DepDAGItem, len(depItem)) + for i, item := range depItem { + d := item.Dep + newDagItem[i] = item + d.FileURIPrefix = fmt.Sprintf("file:///%s", filepath.Join(strings.Replace( + d.Extras["groupId"].(string), ".", "/", -1), d.Extras["artifactId"].(string), d.Version)) + + newDagItem[i].Dep.FileURIPrefix = d.FileURIPrefix + + for j, de := range item.AddedDeps { + de.Dep.FileURIPrefix = fmt.Sprintf("file:///%s", filepath.Join(strings.Replace( + de.Dep.Extras["groupId"].(string), ".", "/", -1), de.Dep.Extras["artifactId"].(string), de.Dep.Version)) + + newDagItem[i].AddedDeps[j].Dep.FileURIPrefix = de.Dep.FileURIPrefix + } + } + return newDagItem +} diff --git a/provider/internal/java/dependency.go b/provider/internal/java/dependency.go index 3cf7af76..38ba7633 100644 --- a/provider/internal/java/dependency.go +++ b/provider/internal/java/dependency.go @@ -411,7 +411,7 @@ func (p *javaServiceClient) parseDepString(dep, localRepoPath, pomPath string) ( fp := resolveDepFilepath(&d, p, group, artifact, localRepoPath) d.Labels = addDepLabels(p.depToLabels, d.Name) - d.FileURIPrefix = fmt.Sprintf("file://%v", filepath.Dir(strings.TrimPrefix(fp, localRepoPath))) + d.FileURIPrefix = fmt.Sprintf("file://%v", filepath.Dir(fp)) d.Extras = map[string]interface{}{ groupIdKey: group,