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 <gheorghe-teod.ber...@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 --

Reply via email to