You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by nf...@apache.org on 2020/10/21 21:27:37 UTC

[camel-k] 02/13: Factor out loader dependency computation. Add check.

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

nferraro pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git

commit e7513f8335770fa34440d1de7229473a6a5acac9
Author: Doru Bercea <gh...@ibm.com>
AuthorDate: Mon Oct 12 13:52:40 2020 -0400

    Factor out loader dependency computation. Add check.
---
 pkg/cmd/inspect.go        | 29 ++---------------------------
 pkg/trait/dependencies.go | 28 +++-------------------------
 pkg/trait/util.go         | 36 ++++++++++++++++++++++++++++++++++++
 pkg/util/util.go          |  7 ++++++-
 4 files changed, 47 insertions(+), 53 deletions(-)

diff --git a/pkg/cmd/inspect.go b/pkg/cmd/inspect.go
index 5c9fd95..7a92d02 100644
--- a/pkg/cmd/inspect.go
+++ b/pkg/cmd/inspect.go
@@ -23,7 +23,7 @@ import (
 	"path"
 
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
-	"github.com/apache/camel-k/pkg/metadata"
+	"github.com/apache/camel-k/pkg/trait"
 	"github.com/apache/camel-k/pkg/util"
 	"github.com/apache/camel-k/pkg/util/camel"
 	"github.com/apache/camel-k/pkg/util/maven"
@@ -148,32 +148,7 @@ func (command *inspectCmdOptions) run(args []string) error {
 		}
 
 		// Extract list of top-level dependencies.
-		metadata.Extract(catalog, sourceSpec)
-		meta := metadata.Extract(catalog, sourceSpec)
-		lang := sourceSpec.InferLanguage()
-
-		// add auto-detected dependencies
-		dependencies.Merge(meta.Dependencies)
-
-		for loader, v := range catalog.Loaders {
-			// add loader specific dependencies
-			if sourceSpec.Loader != "" && sourceSpec.Loader == loader {
-				dependencies.Add(fmt.Sprintf("mvn:%s/%s", v.GroupID, v.ArtifactID))
-
-				for _, d := range v.Dependencies {
-					dependencies.Add(fmt.Sprintf("mvn:%s/%s", d.GroupID, d.ArtifactID))
-				}
-			} else if sourceSpec.Loader == "" {
-				// add language specific dependencies
-				if util.StringSliceExists(v.Languages, string(lang)) {
-					dependencies.Add(fmt.Sprintf("mvn:%s/%s", v.GroupID, v.ArtifactID))
-
-					for _, d := range v.Dependencies {
-						dependencies.Add(fmt.Sprintf("mvn:%s/%s", d.GroupID, d.ArtifactID))
-					}
-				}
-			}
-		}
+		dependencies.Merge(trait.AddSourceDependencies(sourceSpec, catalog))
 	}
 
 	for _, dep := range dependencies.List() {
diff --git a/pkg/trait/dependencies.go b/pkg/trait/dependencies.go
index 5fc0264..3a5df80 100644
--- a/pkg/trait/dependencies.go
+++ b/pkg/trait/dependencies.go
@@ -70,32 +70,10 @@ func (t *dependenciesTrait) Apply(e *Environment) error {
 		return err
 	}
 	for _, s := range sources {
-		meta := metadata.Extract(e.CamelCatalog, s)
-		lang := s.InferLanguage()
-
-		// add auto-detected dependencies
-		dependencies.Merge(meta.Dependencies)
-
-		for loader, v := range e.CamelCatalog.Loaders {
-			// add loader specific dependencies
-			if s.Loader != "" && s.Loader == loader {
-				dependencies.Add(fmt.Sprintf("mvn:%s/%s", v.GroupID, v.ArtifactID))
-
-				for _, d := range v.Dependencies {
-					dependencies.Add(fmt.Sprintf("mvn:%s/%s", d.GroupID, d.ArtifactID))
-				}
-			} else if s.Loader == "" {
-				// add language specific dependencies
-				if util.StringSliceExists(v.Languages, string(lang)) {
-					dependencies.Add(fmt.Sprintf("mvn:%s/%s", v.GroupID, v.ArtifactID))
-
-					for _, d := range v.Dependencies {
-						dependencies.Add(fmt.Sprintf("mvn:%s/%s", d.GroupID, d.ArtifactID))
-					}
-				}
-			}
-		}
+		// Add source-related dependencies.
+		dependencies.Merge(AddSourceDependencies(s, e.CamelCatalog))
 
+		meta := metadata.Extract(e.CamelCatalog, s)
 		meta.RequiredCapabilities.Each(func(item string) bool {
 			util.StringSliceUniqueAdd(&e.Integration.Status.Capabilities, item)
 			return true
diff --git a/pkg/trait/util.go b/pkg/trait/util.go
index 1fcf299..7a28e6e 100644
--- a/pkg/trait/util.go
+++ b/pkg/trait/util.go
@@ -31,6 +31,9 @@ import (
 
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/pkg/client"
+	"github.com/apache/camel-k/pkg/metadata"
+	"github.com/apache/camel-k/pkg/util"
+	"github.com/apache/camel-k/pkg/util/camel"
 )
 
 var exactVersionRegexp = regexp.MustCompile(`^(\d+)\.(\d+)\.([\w-.]+)$`)
@@ -152,3 +155,36 @@ func toHostDir(host string) string {
 	h := strings.Replace(strings.Replace(host, "https://", "", 1), "http://", "", 1)
 	return toFileName.ReplaceAllString(h, "_")
 }
+
+// AddSourceDependencies --
+func AddSourceDependencies(source v1.SourceSpec, catalog *camel.RuntimeCatalog) *strset.Set {
+	dependencies := strset.New()
+
+	// Add auto-detected dependencies.
+	meta := metadata.Extract(catalog, source)
+	dependencies.Merge(meta.Dependencies)
+
+	// Add loader dependencies.
+	lang := source.InferLanguage()
+	for loader, v := range catalog.Loaders {
+		// add loader specific dependencies
+		if source.Loader != "" && source.Loader == loader {
+			dependencies.Add(fmt.Sprintf("mvn:%s/%s", v.GroupID, v.ArtifactID))
+
+			for _, d := range v.Dependencies {
+				dependencies.Add(fmt.Sprintf("mvn:%s/%s", d.GroupID, d.ArtifactID))
+			}
+		} else if source.Loader == "" {
+			// add language specific dependencies
+			if util.StringSliceExists(v.Languages, string(lang)) {
+				dependencies.Add(fmt.Sprintf("mvn:%s/%s", v.GroupID, v.ArtifactID))
+
+				for _, d := range v.Dependencies {
+					dependencies.Add(fmt.Sprintf("mvn:%s/%s", d.GroupID, d.ArtifactID))
+				}
+			}
+		}
+	}
+
+	return dependencies
+}
diff --git a/pkg/util/util.go b/pkg/util/util.go
index ab3feef..7b76d88 100644
--- a/pkg/util/util.go
+++ b/pkg/util/util.go
@@ -237,7 +237,12 @@ func DirectoryExists(directory string) (bool, error) {
 	if os.IsNotExist(err) {
 		return false, nil
 	}
-	return info.IsDir(), err
+
+	if err != nil {
+		return false, err
+	}
+
+	return info.IsDir(), nil
 }
 
 // BytesMarshaller --