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 <[email protected]> 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 +}
