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
+}