You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@skywalking.apache.org by wu...@apache.org on 2023/02/13 04:30:39 UTC

[skywalking-eyes] branch main updated: dep/maven: use output file to store the dep tree for cleaner result (#146)

This is an automated email from the ASF dual-hosted git repository.

wusheng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-eyes.git


The following commit(s) were added to refs/heads/main by this push:
     new bd8d2db  dep/maven: use output file to store the dep tree for cleaner result (#146)
bd8d2db is described below

commit bd8d2db65f2fea938b74401ae72b0365733bdfdc
Author: kezhenxu94 <ke...@apache.org>
AuthorDate: Mon Feb 13 12:30:33 2023 +0800

    dep/maven: use output file to store the dep tree for cleaner result (#146)
---
 pkg/deps/golang.go |  2 +-
 pkg/deps/maven.go  | 25 ++++++++++++++-----------
 2 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/pkg/deps/golang.go b/pkg/deps/golang.go
index 507dc7b..ea32f0b 100644
--- a/pkg/deps/golang.go
+++ b/pkg/deps/golang.go
@@ -85,7 +85,7 @@ func (resolver *GoModResolver) Resolve(goModFile string, config *ConfigDeps, rep
 func (resolver *GoModResolver) ResolvePackages(modules []*packages.Module, config *ConfigDeps, report *Report) error {
 	for _, module := range modules {
 		func() {
-			if exclued, _ := config.IsExcluded(module.Path, module.Version); exclued {
+			if excluded, _ := config.IsExcluded(module.Path, module.Version); excluded {
 				return
 			}
 			if l, ok := config.GetUserConfiguredLicense(module.Path, module.Version); ok {
diff --git a/pkg/deps/maven.go b/pkg/deps/maven.go
index 0c5b146..3c1a506 100644
--- a/pkg/deps/maven.go
+++ b/pkg/deps/maven.go
@@ -18,11 +18,10 @@
 package deps
 
 import (
-	"bufio"
-	"bytes"
 	"encoding/xml"
 	"fmt"
 	"io"
+	"io/ioutil"
 	"os"
 	"os/exec"
 	"path/filepath"
@@ -126,19 +125,23 @@ func (resolver *MavenPomResolver) DownloadDeps() error {
 }
 
 func (resolver *MavenPomResolver) LoadDependencies(config *ConfigDeps) ([]*Dependency, error) {
-	buf := bytes.NewBuffer(nil)
-
-	cmd := exec.Command(resolver.maven, "dependency:tree") // #nosec G204
-	cmd.Stdout = bufio.NewWriter(buf)
-	cmd.Stderr = os.Stderr
+	depsFile, err := ioutil.TempFile(os.TempDir(), "maven-dependencies.txt")
+	if err != nil {
+		return nil, err
+	}
+	defer os.Remove(depsFile.Name())
 
-	logger.Log.Debugf("Running command: [%v], please wait", cmd.String())
-	err := cmd.Run()
+	output, err := exec.Command(resolver.maven, "dependency:tree", "-DoutputFile="+depsFile.Name()).Output() // #nosec G204
 	if err != nil {
+		logger.Log.Errorln(string(output))
 		return nil, err
 	}
 
-	deps := LoadDependencies(buf.Bytes(), config)
+	buf, err := os.ReadFile(depsFile.Name())
+	if err != nil {
+		return nil, err
+	}
+	deps := LoadDependencies(buf, config)
 	return deps, nil
 }
 
@@ -335,7 +338,7 @@ func LoadDependenciesTree(data []byte) []*Dependency {
 	stack := []Elem{}
 	unique := make(map[string]struct{})
 
-	reFind := regexp.MustCompile(`(?im)^.*? ([| ]*)(\+-|\\-) (?P<gid>\b.+?):(?P<aid>\b.+?):(?P<packaging>\b.+)(:\b.+)?:(?P<version>\b.+):(?P<scope>\b.+?)(?P<optional>\b.+?)?$`) //nolint:lll // can't break down regex
+	reFind := regexp.MustCompile(`(?im)^.*?([| ]*)(\+-|\\-) (?P<gid>\b.+?):(?P<aid>\b.+?):(?P<packaging>\b.+)(:\b.+)?:(?P<version>\b.+):(?P<scope>\b.+?)(?P<optional>\b.+?)?$`) //nolint:lll // can't break down regex
 	rawDeps := reFind.FindAllSubmatch(data, -1)
 
 	deps := make([]*Dependency, 0, len(rawDeps))