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/11/05 22:54:09 UTC

[camel-k] 12/19: Move builder independent functions to utils.

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 3f2a7e2f6ac4314c2b1e1d9709b226cbaf81b13f
Author: Doru Bercea <gh...@ibm.com>
AuthorDate: Tue Oct 27 15:45:56 2020 -0400

    Move builder independent functions to utils.
---
 pkg/builder/builder_steps.go         | 165 +------------------------------
 pkg/cmd/inspect.go                   |   3 +-
 pkg/util/camel/camel_dependencies.go | 185 +++++++++++++++++++++++++++++++++++
 3 files changed, 189 insertions(+), 164 deletions(-)

diff --git a/pkg/builder/builder_steps.go b/pkg/builder/builder_steps.go
index 0c29790..8e0126f 100644
--- a/pkg/builder/builder_steps.go
+++ b/pkg/builder/builder_steps.go
@@ -23,14 +23,9 @@ import (
 	"os"
 	"path"
 	"reflect"
-	"strings"
-
-	"github.com/apache/camel-k/pkg/util/camel"
-	"github.com/apache/camel-k/pkg/util/jitpack"
-
-	"github.com/rs/xid"
 
 	"github.com/apache/camel-k/pkg/util/controller"
+	"github.com/apache/camel-k/pkg/util/camel"
 	"k8s.io/apimachinery/pkg/selection"
 
 	k8sclient "sigs.k8s.io/controller-runtime/pkg/client"
@@ -38,7 +33,6 @@ import (
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
 	"github.com/apache/camel-k/pkg/util"
 	"github.com/apache/camel-k/pkg/util/kubernetes"
-	"github.com/apache/camel-k/pkg/util/maven"
 )
 
 var stepsByID = make(map[string]Step)
@@ -141,164 +135,11 @@ func generateProjectSettings(ctx *Context) error {
 
 func injectDependencies(ctx *Context) error {
 	// Add dependencies from build
-	return InjectDependenciesCommon(&ctx.Maven.Project, ctx.Build.Dependencies, ctx.Catalog)
-}
-
-// InjectDependenciesCommon --
-func InjectDependenciesCommon(
-	project *maven.Project,
-	dependencies []string,
-	catalog *camel.RuntimeCatalog) error {
-
-	// Add dependencies from build
-	for _, d := range dependencies {
-		switch {
-		case strings.HasPrefix(d, "bom:"):
-			mid := strings.TrimPrefix(d, "bom:")
-			gav := strings.Replace(mid, "/", ":", -1)
-
-			d, err := maven.ParseGAV(gav)
-			if err != nil {
-				return err
-			}
-
-			project.DependencyManagement.Dependencies = append(project.DependencyManagement.Dependencies, maven.Dependency{
-				GroupID:    d.GroupID,
-				ArtifactID: d.ArtifactID,
-				Version:    d.Version,
-				Type:       "pom",
-				Scope:      "import",
-			})
-		case strings.HasPrefix(d, "camel:"):
-			artifactID := strings.TrimPrefix(d, "camel:")
-
-			if !strings.HasPrefix(artifactID, "camel-") {
-				artifactID = "camel-" + artifactID
-			}
-
-			project.AddDependencyGAV("org.apache.camel", artifactID, "")
-		case strings.HasPrefix(d, "camel-k:"):
-			artifactID := strings.TrimPrefix(d, "camel-k:")
-
-			if !strings.HasPrefix(artifactID, "camel-k-") {
-				artifactID = "camel-k-" + artifactID
-			}
-
-			project.AddDependencyGAV("org.apache.camel.k", artifactID, "")
-		case strings.HasPrefix(d, "camel-quarkus:"):
-			artifactID := strings.TrimPrefix(d, "camel-quarkus:")
-
-			if !strings.HasPrefix(artifactID, "camel-quarkus-") {
-				artifactID = "camel-quarkus-" + artifactID
-			}
-
-			project.AddDependencyGAV("org.apache.camel.quarkus", artifactID, "")
-		case strings.HasPrefix(d, "mvn:"):
-			mid := strings.TrimPrefix(d, "mvn:")
-			gav := strings.Replace(mid, "/", ":", -1)
-
-			project.AddEncodedDependencyGAV(gav)
-		default:
-			if dep := jitpack.ToDependency(d); dep != nil {
-				project.AddDependency(*dep)
-
-				addRepo := true
-				for _, repo := range project.Repositories {
-					if repo.URL == jitpack.RepoURL {
-						addRepo = false
-						break
-					}
-				}
-				if addRepo {
-					project.Repositories = append(project.Repositories, maven.Repository{
-						ID:  "jitpack.io-" + xid.New().String(),
-						URL: jitpack.RepoURL,
-						Releases: maven.RepositoryPolicy{
-							Enabled:        true,
-							ChecksumPolicy: "fail",
-						},
-						Snapshots: maven.RepositoryPolicy{
-							Enabled:        true,
-							ChecksumPolicy: "fail",
-						},
-					})
-				}
-			} else {
-				return fmt.Errorf("unknown dependency type: %s", d)
-			}
-		}
-	}
-
-	// Add dependencies from catalog
-	deps := make([]maven.Dependency, len(project.Dependencies))
-	copy(deps, project.Dependencies)
-
-	for _, d := range deps {
-		if a, ok := catalog.Artifacts[d.ArtifactID]; ok {
-			for _, dep := range a.Dependencies {
-				md := maven.Dependency{
-					GroupID:    dep.GroupID,
-					ArtifactID: dep.ArtifactID,
-				}
-
-				project.AddDependency(md)
-
-				for _, e := range dep.Exclusions {
-					me := maven.Exclusion{
-						GroupID:    e.GroupID,
-						ArtifactID: e.ArtifactID,
-					}
-
-					project.AddDependencyExclusion(md, me)
-				}
-			}
-		}
-	}
-
-	// Post process dependencies
-	deps = make([]maven.Dependency, len(project.Dependencies))
-	copy(deps, project.Dependencies)
-
-	for _, d := range deps {
-		if a, ok := catalog.Artifacts[d.ArtifactID]; ok {
-			md := maven.Dependency{
-				GroupID:    a.GroupID,
-				ArtifactID: a.ArtifactID,
-			}
-
-			for _, e := range a.Exclusions {
-				me := maven.Exclusion{
-					GroupID:    e.GroupID,
-					ArtifactID: e.ArtifactID,
-				}
-
-				project.AddDependencyExclusion(md, me)
-			}
-		}
-	}
-
-	return nil
+	return camel.ManageIntegrationDependencies(&ctx.Maven.Project, ctx.Build.Dependencies, ctx.Catalog)
 }
 
 func sanitizeDependencies(ctx *Context) error {
-	for i := 0; i < len(ctx.Maven.Project.Dependencies); i++ {
-		dep := ctx.Maven.Project.Dependencies[i]
-
-		// It may be externalized into runtime provider specific steps
-		switch dep.GroupID {
-		case "org.apache.camel":
-			fallthrough
-		case "org.apache.camel.k":
-			fallthrough
-		case "org.apache.camel.quarkus":
-			//
-			// Remove the version so we force using the one configured by the bom
-			//
-			ctx.Maven.Project.Dependencies[i].Version = ""
-		}
-	}
-
-	return nil
+	return camel.SanitizeIntegrationDependencies(ctx.Maven.Project.Dependencies)
 }
 
 type artifactsSelector func(ctx *Context) error
diff --git a/pkg/cmd/inspect.go b/pkg/cmd/inspect.go
index 2c96a19..834b98b 100644
--- a/pkg/cmd/inspect.go
+++ b/pkg/cmd/inspect.go
@@ -26,7 +26,6 @@ import (
 	"strings"
 
 	v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
-	"github.com/apache/camel-k/pkg/builder"
 	"github.com/apache/camel-k/pkg/builder/runtime"
 	"github.com/apache/camel-k/pkg/trait"
 	"github.com/apache/camel-k/pkg/util"
@@ -255,7 +254,7 @@ func getTransitiveDependencies(
 	project := runtime.GenerateProjectCommon(defaults.CamelVersion, defaults.DefaultRuntimeVersion)
 
 	// Inject dependencies into Maven project.
-	err := builder.InjectDependenciesCommon(&project, dependencies, catalog)
+	err := camel.ManageIntegrationDependencies(&project, dependencies, catalog)
 	if err != nil {
 		return err
 	}
diff --git a/pkg/util/camel/camel_dependencies.go b/pkg/util/camel/camel_dependencies.go
new file mode 100644
index 0000000..eb0dbf4
--- /dev/null
+++ b/pkg/util/camel/camel_dependencies.go
@@ -0,0 +1,185 @@
+/*
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package camel
+
+import (
+	"fmt"
+	"strings"
+
+	"github.com/apache/camel-k/pkg/util/jitpack"
+	"github.com/apache/camel-k/pkg/util/maven"
+	"github.com/rs/xid"
+)
+
+// ManageIntegrationDependencies --
+func ManageIntegrationDependencies(
+	project *maven.Project,
+	dependencies []string,
+	catalog *RuntimeCatalog) error {
+
+	// Add dependencies from build
+	for _, d := range dependencies {
+		switch {
+		case strings.HasPrefix(d, "bom:"):
+			mid := strings.TrimPrefix(d, "bom:")
+			gav := strings.Replace(mid, "/", ":", -1)
+
+			d, err := maven.ParseGAV(gav)
+			if err != nil {
+				return err
+			}
+
+			project.DependencyManagement.Dependencies = append(project.DependencyManagement.Dependencies, maven.Dependency{
+				GroupID:    d.GroupID,
+				ArtifactID: d.ArtifactID,
+				Version:    d.Version,
+				Type:       "pom",
+				Scope:      "import",
+			})
+		case strings.HasPrefix(d, "camel:"):
+			artifactID := strings.TrimPrefix(d, "camel:")
+
+			if !strings.HasPrefix(artifactID, "camel-") {
+				artifactID = "camel-" + artifactID
+			}
+
+			project.AddDependencyGAV("org.apache.camel", artifactID, "")
+		case strings.HasPrefix(d, "camel-k:"):
+			artifactID := strings.TrimPrefix(d, "camel-k:")
+
+			if !strings.HasPrefix(artifactID, "camel-k-") {
+				artifactID = "camel-k-" + artifactID
+			}
+
+			project.AddDependencyGAV("org.apache.camel.k", artifactID, "")
+		case strings.HasPrefix(d, "camel-quarkus:"):
+			artifactID := strings.TrimPrefix(d, "camel-quarkus:")
+
+			if !strings.HasPrefix(artifactID, "camel-quarkus-") {
+				artifactID = "camel-quarkus-" + artifactID
+			}
+
+			project.AddDependencyGAV("org.apache.camel.quarkus", artifactID, "")
+		case strings.HasPrefix(d, "mvn:"):
+			mid := strings.TrimPrefix(d, "mvn:")
+			gav := strings.Replace(mid, "/", ":", -1)
+
+			project.AddEncodedDependencyGAV(gav)
+		default:
+			if dep := jitpack.ToDependency(d); dep != nil {
+				project.AddDependency(*dep)
+
+				addRepo := true
+				for _, repo := range project.Repositories {
+					if repo.URL == jitpack.RepoURL {
+						addRepo = false
+						break
+					}
+				}
+				if addRepo {
+					project.Repositories = append(project.Repositories, maven.Repository{
+						ID:  "jitpack.io-" + xid.New().String(),
+						URL: jitpack.RepoURL,
+						Releases: maven.RepositoryPolicy{
+							Enabled:        true,
+							ChecksumPolicy: "fail",
+						},
+						Snapshots: maven.RepositoryPolicy{
+							Enabled:        true,
+							ChecksumPolicy: "fail",
+						},
+					})
+				}
+			} else {
+				return fmt.Errorf("unknown dependency type: %s", d)
+			}
+		}
+	}
+
+	// Add dependencies from catalog
+	deps := make([]maven.Dependency, len(project.Dependencies))
+	copy(deps, project.Dependencies)
+
+	for _, d := range deps {
+		if a, ok := catalog.Artifacts[d.ArtifactID]; ok {
+			for _, dep := range a.Dependencies {
+				md := maven.Dependency{
+					GroupID:    dep.GroupID,
+					ArtifactID: dep.ArtifactID,
+				}
+
+				project.AddDependency(md)
+
+				for _, e := range dep.Exclusions {
+					me := maven.Exclusion{
+						GroupID:    e.GroupID,
+						ArtifactID: e.ArtifactID,
+					}
+
+					project.AddDependencyExclusion(md, me)
+				}
+			}
+		}
+	}
+
+	// Post process dependencies
+	deps = make([]maven.Dependency, len(project.Dependencies))
+	copy(deps, project.Dependencies)
+
+	for _, d := range deps {
+		if a, ok := catalog.Artifacts[d.ArtifactID]; ok {
+			md := maven.Dependency{
+				GroupID:    a.GroupID,
+				ArtifactID: a.ArtifactID,
+			}
+
+			for _, e := range a.Exclusions {
+				me := maven.Exclusion{
+					GroupID:    e.GroupID,
+					ArtifactID: e.ArtifactID,
+				}
+
+				project.AddDependencyExclusion(md, me)
+			}
+		}
+	}
+
+	return nil
+}
+
+// SanitizeIntegrationDependencies --
+func SanitizeIntegrationDependencies(dependencies []maven.Dependency) error {
+	for i := 0; i < len(dependencies); i++ {
+		dep := dependencies[i]
+
+		// It may be externalized into runtime provider specific steps
+		switch dep.GroupID {
+		case "org.apache.camel":
+			fallthrough
+		case "org.apache.camel.k":
+			fallthrough
+		case "org.apache.camel.quarkus":
+			//
+			// Remove the version so we force using the one configured by the bom
+			//
+			dependencies[i].Version = ""
+		}
+	}
+
+	return nil
+}