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:53:57 UTC

[camel-k] branch master updated (3e8f12d -> 04d7909)

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

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


    from 3e8f12d  Updated CHANGELOG.md
     new 552e6a8  Support computing and outputting of transitive dependencies.
     new e47c8f8  Move dependencies to dependencies folder.
     new ceb5daf  Clean-up.
     new 97ed848  Remove double printing of top level dependencies.
     new 36f5cbf  Fix default versions.
     new 3435eb1  Add capability to process several additional dependencies flags.
     new 792e087  Only print top-level dependencies if they are requested.
     new bd0c53d  Fix after rebase.
     new 7dab1aa  Update Camel version.
     new f0684ca  Remove workspace directory. Make maven directory temporary.
     new 5f2c9e0  Refactor output of dependencies.
     new 3f2a7e2  Move builder independent functions to utils.
     new 1b24a78  Only print transitive dependencies.
     new 1afd591  Update comment.
     new a6a3157  Remove hardcoded camel runtime version.
     new 5ff028f  Use default and quarkus runtime.
     new 95ad3c0  Move to quarkus.
     new 0612d97  Make output of maven quiet for local runs.
     new 04d7909  Remove comment.

The 19 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 pkg/builder/builder_steps.go         | 154 +-------------------------
 pkg/builder/runtime/main.go          |  63 ++++++++---
 pkg/builder/runtime/quarkus.go       |  82 ++++++++++----
 pkg/cmd/inspect.go                   | 208 +++++++++++++++++++++++++++++++----
 pkg/util/camel/camel_dependencies.go | 185 +++++++++++++++++++++++++++++++
 pkg/util/camel/catalog.go            |   6 +-
 pkg/util/util.go                     |  18 +++
 7 files changed, 503 insertions(+), 213 deletions(-)
 create mode 100644 pkg/util/camel/camel_dependencies.go


[camel-k] 05/19: Fix default versions.

Posted by nf...@apache.org.
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 36f5cbf5a329ac3c958e84f26d3eb1a41cf308d8
Author: Doru Bercea <gh...@ibm.com>
AuthorDate: Wed Oct 21 12:24:57 2020 -0400

    Fix default versions.
---
 pkg/cmd/inspect.go            | 4 +---
 pkg/util/defaults/defaults.go | 3 +++
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/pkg/cmd/inspect.go b/pkg/cmd/inspect.go
index ee2d461..c3d9f723 100644
--- a/pkg/cmd/inspect.go
+++ b/pkg/cmd/inspect.go
@@ -39,8 +39,6 @@ import (
 var acceptedDependencyTypes = []string{"bom", "camel", "camel-k", "camel-quarkus", "mvn", "github"}
 
 const (
-	defaultRuntimeVersion            = "1.3.0"
-	defaultCamelVersion              = "3.3.0"
 	defaultWorkspaceDirectoryName    = "workspace"
 	defaultDependenciesDirectoryName = "dependencies"
 )
@@ -303,7 +301,7 @@ func getTransitiveDependencies(
 	}
 
 	// Create Maven project.
-	project := runtime.GenerateProjectCommon(defaultCamelVersion, defaultRuntimeVersion)
+	project := runtime.GenerateProjectCommon(defaults.CamelVersion, defaults.DefaultRuntimeVersion)
 
 	// Inject dependencies into Maven project.
 	err := builder.InjectDependenciesCommon(&project, dependencies, catalog)
diff --git a/pkg/util/defaults/defaults.go b/pkg/util/defaults/defaults.go
index ede7d07..66885fb 100644
--- a/pkg/util/defaults/defaults.go
+++ b/pkg/util/defaults/defaults.go
@@ -42,4 +42,7 @@ const (
 
 	// ImageName --
 	ImageName = "docker.io/apache/camel-k"
+
+	// CamelVersion --
+	CamelVersion = "3.3.0"
 )


[camel-k] 14/19: Update comment.

Posted by nf...@apache.org.
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 1afd5915271c2328fd77dbd48c8bbecb8486034e
Author: Doru Bercea <gh...@ibm.com>
AuthorDate: Mon Nov 2 13:29:18 2020 -0500

    Update comment.
---
 pkg/cmd/inspect.go | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/pkg/cmd/inspect.go b/pkg/cmd/inspect.go
index 8fc25e9..bfb1ed6 100644
--- a/pkg/cmd/inspect.go
+++ b/pkg/cmd/inspect.go
@@ -50,8 +50,7 @@ func newCmdInspect(rootCmdOptions *RootCmdOptions) (*cobra.Command, *inspectCmdO
 		Short: "Generate dependencies list given integration files.",
 		Long: `Output dependencies for a list of integration files. By default this command returns the
 top level dependencies only. When --all-dependencies is enabled, the transitive dependencies
-will be generated by calling Maven and then copied into the directory pointed to by the
---dependencies-directory flag.`,
+will be generated by calling Maven and then printed in the selected output format.`,
 		PreRunE: decode(&options),
 		RunE: func(_ *cobra.Command, args []string) error {
 			if err := options.validate(args); err != nil {


[camel-k] 06/19: Add capability to process several additional dependencies flags.

Posted by nf...@apache.org.
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 3435eb15bb9e8c6fdba7bdc783fa3177dfd162eb
Author: Doru Bercea <gh...@ibm.com>
AuthorDate: Wed Oct 21 16:31:35 2020 -0400

    Add capability to process several additional dependencies flags.
---
 pkg/cmd/inspect.go | 87 ++++++++++++++++++++++++++++++------------------------
 pkg/cmd/root.go    |  1 -
 2 files changed, 49 insertions(+), 39 deletions(-)

diff --git a/pkg/cmd/inspect.go b/pkg/cmd/inspect.go
index c3d9f723..fbf25c6 100644
--- a/pkg/cmd/inspect.go
+++ b/pkg/cmd/inspect.go
@@ -75,23 +75,23 @@ will be generated by calling Maven and then copied into the directory pointed to
 	}
 
 	cmd.Flags().Bool("all-dependencies", false, "Compute transitive dependencies and move them to directory pointed to by the --dependencies-directory flag.")
-	cmd.Flags().String("additional-dependencies", "", `Comma-separated list of additional top-level dependencies with the format:
+	cmd.Flags().StringArrayP("additional-dependencies", "d", nil, `Comma-separated lists of additional top-level dependencies with the format:
 <type>:<dependency-name>
 where <type> is one of {`+strings.Join(acceptedDependencyTypes, "|")+`}.`)
-	cmd.Flags().String("workspace", "", "Absolute path to workspace directory. Default: <kamel-invocation-directory>/workspace")
+	cmd.Flags().String("workspace", "", "Workspace directory. Default: <kamel-invocation-directory>/workspace")
+	cmd.Flags().String("dependencies-directory", "", "Directory that will contain all the computed dependencies. Default: <kamel-invocation-directory>/<kamel-workspace-directory>/dependencies")
 	cmd.Flags().StringP("output", "o", "", "Output format. One of: json|yaml")
-	cmd.Flags().String("dependencies-directory", "", "Absolute path to directory containing all dependencies. Default: <kamel-invocation-directory>/workspace/dependencies")
 
 	return &cmd, &options
 }
 
 type inspectCmdOptions struct {
 	*RootCmdOptions
-	AllDependencies        bool   `mapstructure:"all-dependencies"`
-	OutputFormat           string `mapstructure:"output"`
-	AdditionalDependencies string `mapstructure:"additional-dependencies"`
-	Workspace              string `mapstructure:"workspace"`
-	DependenciesDirectory  string `mapstructure:"dependencies-directory"`
+	AllDependencies        bool     `mapstructure:"all-dependencies"`
+	OutputFormat           string   `mapstructure:"output"`
+	Workspace              string   `mapstructure:"workspace"`
+	DependenciesDirectory  string   `mapstructure:"dependencies-directory"`
+	AdditionalDependencies []string `mapstructure:"additional-dependencies"`
 }
 
 func (command *inspectCmdOptions) validate(args []string) error {
@@ -118,21 +118,23 @@ func (command *inspectCmdOptions) validate(args []string) error {
 
 	// Validate list of additional dependencies i.e. make sure that each dependency has
 	// a valid type.
-	if command.AdditionalDependencies != "" {
-		additionalDependencies := strings.Split(command.AdditionalDependencies, ",")
-
-		for _, dependency := range additionalDependencies {
-			dependencyComponents := strings.Split(dependency, ":")
-
-			TypeIsValid := false
-			for _, dependencyType := range acceptedDependencyTypes {
-				if dependencyType == dependencyComponents[0] {
-					TypeIsValid = true
+	if command.AdditionalDependencies != nil {
+		for _, additionalDependency := range command.AdditionalDependencies {
+			additionalDependencies := strings.Split(additionalDependency, ",")
+
+			for _, dependency := range additionalDependencies {
+				dependencyComponents := strings.Split(dependency, ":")
+
+				TypeIsValid := false
+				for _, dependencyType := range acceptedDependencyTypes {
+					if dependencyType == dependencyComponents[0] {
+						TypeIsValid = true
+					}
 				}
-			}
 
-			if !TypeIsValid {
-				return errors.New("Unexpected type for user-provided dependency: " + dependency + ", check command usage for valid format.")
+				if !TypeIsValid {
+					return errors.New("Unexpected type for user-provided dependency: " + dependency + ", check command usage for valid format.")
+				}
 			}
 		}
 	}
@@ -175,19 +177,8 @@ func (command *inspectCmdOptions) initialize(args []string) error {
 }
 
 func (command *inspectCmdOptions) run(args []string) error {
-	// Attempt to reuse existing Camel catalog if one is present.
-	catalog, err := camel.MainCatalog()
-	if err != nil {
-		return err
-	}
-
-	// Generate catalog if one was not found.
-	if catalog == nil {
-		catalog, err = generateCatalog()
-		if err != nil {
-			return err
-		}
-	}
+	// Fetch existing catalog or create new one if one does not already exist.
+	catalog, err := createCamelCatalog()
 
 	// Get top-level dependencies, this is the default behavior when no other options are provided.
 	dependencies, err := getTopLevelDependencies(catalog, command.OutputFormat, args)
@@ -196,10 +187,12 @@ func (command *inspectCmdOptions) run(args []string) error {
 	}
 
 	// Add additional user-provided dependencies.
-	if command.AdditionalDependencies != "" {
-		additionalDependencies := strings.Split(command.AdditionalDependencies, ",")
-		for _, dependency := range additionalDependencies {
-			dependencies = append(dependencies, dependency)
+	if command.AdditionalDependencies != nil {
+		for _, additionalDependency := range command.AdditionalDependencies {
+			additionalDependencies := strings.Split(additionalDependency, ",")
+			for _, dependency := range additionalDependencies {
+				dependencies = append(dependencies, dependency)
+			}
 		}
 	}
 
@@ -376,3 +369,21 @@ func createAndSetDependenciesDirectory(command *inspectCmdOptions) error {
 
 	return nil
 }
+
+func createCamelCatalog() (*camel.RuntimeCatalog, error) {
+	// Attempt to reuse existing Camel catalog if one is present.
+	catalog, err := camel.MainCatalog()
+	if err != nil {
+		return nil, err
+	}
+
+	// Generate catalog if one was not found.
+	if catalog == nil {
+		catalog, err = generateCatalog()
+		if err != nil {
+			return nil, err
+		}
+	}
+
+	return catalog, nil
+}
diff --git a/pkg/cmd/root.go b/pkg/cmd/root.go
index 2eab1ef..6be4a68 100644
--- a/pkg/cmd/root.go
+++ b/pkg/cmd/root.go
@@ -137,7 +137,6 @@ func addKamelSubcommands(cmd *cobra.Command, options *RootCmdOptions) {
 	cmd.AddCommand(cmdOnly(newCmdBuilder(options)))
 	cmd.AddCommand(cmdOnly(newCmdInit(options)))
 	cmd.AddCommand(cmdOnly(newCmdDebug(options)))
-	cmd.AddCommand(cmdOnly(newCmdInspect(options)))
 }
 
 func addHelpSubCommands(cmd *cobra.Command, options *RootCmdOptions) error {


[camel-k] 17/19: Move to quarkus.

Posted by nf...@apache.org.
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 95ad3c0c9d1b45388133579de0326d3cdc0683b5
Author: Doru Bercea <gh...@ibm.com>
AuthorDate: Thu Nov 5 11:48:17 2020 -0500

    Move to quarkus.
---
 pkg/builder/runtime/quarkus.go | 82 +++++++++++++++++++++++++++++++-----------
 pkg/cmd/inspect.go             | 15 ++++++--
 2 files changed, 74 insertions(+), 23 deletions(-)

diff --git a/pkg/builder/runtime/quarkus.go b/pkg/builder/runtime/quarkus.go
index 06655dc..a98faba 100644
--- a/pkg/builder/runtime/quarkus.go
+++ b/pkg/builder/runtime/quarkus.go
@@ -62,14 +62,23 @@ func loadCamelQuarkusCatalog(ctx *builder.Context) error {
 }
 
 func generateQuarkusProject(ctx *builder.Context) error {
+	p := GenerateQuarkusProjectCommon(ctx.Build.Runtime.Metadata["camel-quarkus.version"], ctx.Build.Runtime.Version, ctx.Build.Runtime.Metadata["quarkus.version"])
+
+	// Add all the properties from the build configuration
+	p.Properties.AddAll(ctx.Build.Properties)
+
+	ctx.Maven.Project = p
+
+	return nil
+}
+
+// GenerateQuarkusProjectCommon --
+func GenerateQuarkusProjectCommon(camelQuarkusVersion string, runtimeVersion string, quarkusVersion string) maven.Project {
 	p := maven.NewProjectWithGAV("org.apache.camel.k.integration", "camel-k-integration", defaults.Version)
 	p.DependencyManagement = &maven.DependencyManagement{Dependencies: make([]maven.Dependency, 0)}
 	p.Dependencies = make([]maven.Dependency, 0)
 	p.Build = &maven.Build{Plugins: make([]maven.Plugin, 0)}
 
-	// Add all the properties from the build configuration
-	p.Properties.AddAll(ctx.Build.Properties)
-
 	// camel-quarkus doe routes discovery at startup but we don't want
 	// this to happen as routes are loaded at runtime and looking for
 	// routes at build time may try to load camel-k-runtime routes builder
@@ -84,14 +93,14 @@ func generateQuarkusProject(ctx *builder.Context) error {
 		maven.Dependency{
 			GroupID:    "org.apache.camel.quarkus",
 			ArtifactID: "camel-quarkus-bom",
-			Version:    ctx.Build.Runtime.Metadata["camel-quarkus.version"],
+			Version:    camelQuarkusVersion,
 			Type:       "pom",
 			Scope:      "import",
 		},
 		maven.Dependency{
 			GroupID:    "org.apache.camel.k",
 			ArtifactID: "camel-k-runtime-bom",
-			Version:    ctx.Build.Runtime.Version,
+			Version:    runtimeVersion,
 			Type:       "pom",
 			Scope:      "import",
 		},
@@ -102,7 +111,7 @@ func generateQuarkusProject(ctx *builder.Context) error {
 		maven.Plugin{
 			GroupID:    "io.quarkus",
 			ArtifactID: "quarkus-maven-plugin",
-			Version:    ctx.Build.Runtime.Metadata["quarkus.version"],
+			Version:    quarkusVersion,
 			Executions: []maven.Execution{
 				{
 					Goals: []string{
@@ -113,9 +122,7 @@ func generateQuarkusProject(ctx *builder.Context) error {
 		},
 	)
 
-	ctx.Maven.Project = p
-
-	return nil
+	return p
 }
 
 func buildQuarkusRunner(ctx *builder.Context) error {
@@ -124,6 +131,16 @@ func buildQuarkusRunner(ctx *builder.Context) error {
 	mc.LocalRepository = ctx.Build.Maven.LocalRepository
 	mc.Timeout = ctx.Build.Maven.GetTimeout().Duration
 
+	err := BuildQuarkusRunnerCommon(mc)
+	if err != nil {
+		return err
+	}
+
+	return nil
+}
+
+// BuildQuarkusRunnerCommon --
+func BuildQuarkusRunnerCommon(mc maven.Context) error {
 	resourcesPath := path.Join(mc.Path, "src", "main", "resources")
 	if err := os.MkdirAll(resourcesPath, os.ModePerm); err != nil {
 		return errors.Wrap(err, "failure while creating resource folder")
@@ -154,30 +171,55 @@ func computeQuarkusDependencies(ctx *builder.Context) error {
 	mc.LocalRepository = ctx.Build.Maven.LocalRepository
 	mc.Timeout = ctx.Build.Maven.GetTimeout().Duration
 
+	// Compute dependencies.
+	content, err := ComputeQuarkusDependenciesCommon(mc, ctx.Catalog.Runtime.Version)
+	if err != nil {
+		return err
+	}
+
+	// Process artifacts list and add it to existing artifacts.
+	artifacts := []v1.Artifact{}
+	artifacts, err = ProcessQuarkusTransitiveDependencies(mc, content)
+	if err != nil {
+		return err
+	}
+	ctx.Artifacts = append(ctx.Artifacts, artifacts...)
+
+	return nil
+}
+
+// ComputeQuarkusDependenciesCommon --
+func ComputeQuarkusDependenciesCommon(mc maven.Context, runtimeVersion string) ([]byte, error) {
 	// Retrieve the runtime dependencies
-	mc.AddArgumentf("org.apache.camel.k:camel-k-maven-plugin:%s:generate-dependency-list", ctx.Catalog.Runtime.Version)
+	mc.AddArgumentf("org.apache.camel.k:camel-k-maven-plugin:%s:generate-dependency-list", runtimeVersion)
 	if err := maven.Run(mc); err != nil {
-		return errors.Wrap(err, "failure while determining classpath")
+		return nil, errors.Wrap(err, "failure while determining classpath")
 	}
 
 	dependencies := path.Join(mc.Path, "target", "dependencies.yaml")
 	content, err := ioutil.ReadFile(dependencies)
 	if err != nil {
-		return err
+		return nil, err
 	}
 
+	return content, nil
+}
+
+// ProcessQuarkusTransitiveDependencies --
+func ProcessQuarkusTransitiveDependencies(mc maven.Context, content []byte) ([]v1.Artifact, error) {
 	cp := make(map[string][]v1.Artifact)
-	err = yaml2.Unmarshal(content, &cp)
+	err := yaml2.Unmarshal(content, &cp)
 	if err != nil {
-		return err
+		return nil, err
 	}
 
+	artifacts := []v1.Artifact{}
 	for _, e := range cp["dependencies"] {
 		_, fileName := path.Split(e.Location)
 
 		gav, err := maven.ParseGAV(e.ID)
 		if err != nil {
-			return err
+			return nil, err
 		}
 
 		//
@@ -186,13 +228,13 @@ func computeQuarkusDependencies(ctx *builder.Context) error {
 		if e.Checksum == "" {
 			chksum, err := digest.ComputeSHA1(e.Location)
 			if err != nil {
-				return err
+				return nil, err
 			}
 
 			e.Checksum = "sha1:" + chksum
 		}
 
-		ctx.Artifacts = append(ctx.Artifacts, v1.Artifact{
+		artifacts = append(artifacts, v1.Artifact{
 			ID:       e.ID,
 			Location: e.Location,
 			Target:   path.Join("dependencies", gav.GroupID+"."+fileName),
@@ -207,15 +249,15 @@ func computeQuarkusDependencies(ctx *builder.Context) error {
 	//
 	runnerChecksum, err := digest.ComputeSHA1(mc.Path, "target", runner)
 	if err != nil {
-		return err
+		return nil, err
 	}
 
-	ctx.Artifacts = append(ctx.Artifacts, v1.Artifact{
+	artifacts = append(artifacts, v1.Artifact{
 		ID:       runner,
 		Location: path.Join(mc.Path, "target", runner),
 		Target:   path.Join("dependencies", runner),
 		Checksum: "sha1:" + runnerChecksum,
 	})
 
-	return nil
+	return artifacts, nil
 }
diff --git a/pkg/cmd/inspect.go b/pkg/cmd/inspect.go
index 3eef300..e580552 100644
--- a/pkg/cmd/inspect.go
+++ b/pkg/cmd/inspect.go
@@ -220,7 +220,10 @@ func getTransitiveDependencies(
 	}
 
 	// Create Maven project.
-	project := runtime.GenerateProjectCommon(catalog.CamelCatalogSpec.Runtime.Metadata["camel.version"], defaults.DefaultRuntimeVersion)
+	//project := runtime.GenerateProjectCommon(catalog.CamelCatalogSpec.Runtime.Metadata["camel.version"], defaults.DefaultRuntimeVersion)
+	project := runtime.GenerateQuarkusProjectCommon(
+		catalog.CamelCatalogSpec.Runtime.Metadata["camel-quarkus.version"],
+		defaults.DefaultRuntimeVersion, catalog.CamelCatalogSpec.Runtime.Metadata["quarkus.version"])
 
 	// Inject dependencies into Maven project.
 	err := camel.ManageIntegrationDependencies(&project, dependencies, catalog)
@@ -237,16 +240,22 @@ func getTransitiveDependencies(
 	mc := maven.NewContext(temporaryDirectory, project)
 	mc.LocalRepository = mvn.LocalRepository
 	mc.Timeout = mvn.GetTimeout().Duration
+	// mc.Stdout = os.Stderr
+
+	err = runtime.BuildQuarkusRunnerCommon(mc)
+	if err != nil {
+		return err
+	}
 
 	// Compute dependencies.
-	content, err := runtime.ComputeDependenciesCommon(mc, catalog.Runtime.Version)
+	content, err := runtime.ComputeQuarkusDependenciesCommon(mc, catalog.Runtime.Version)
 	if err != nil {
 		return err
 	}
 
 	// Compose artifacts list.
 	artifacts := []v1.Artifact{}
-	artifacts, err = runtime.ProcessTransitiveDependencies(content)
+	artifacts, err = runtime.ProcessQuarkusTransitiveDependencies(mc, content)
 	if err != nil {
 		return err
 	}


[camel-k] 08/19: Fix after rebase.

Posted by nf...@apache.org.
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 bd0c53d6e2e864b81eab0484f84b6325cec3cfd9
Author: Doru Bercea <gh...@ibm.com>
AuthorDate: Wed Oct 21 18:53:43 2020 -0400

    Fix after rebase.
---
 pkg/cmd/root.go | 1 +
 1 file changed, 1 insertion(+)

diff --git a/pkg/cmd/root.go b/pkg/cmd/root.go
index 6be4a68..2eab1ef 100644
--- a/pkg/cmd/root.go
+++ b/pkg/cmd/root.go
@@ -137,6 +137,7 @@ func addKamelSubcommands(cmd *cobra.Command, options *RootCmdOptions) {
 	cmd.AddCommand(cmdOnly(newCmdBuilder(options)))
 	cmd.AddCommand(cmdOnly(newCmdInit(options)))
 	cmd.AddCommand(cmdOnly(newCmdDebug(options)))
+	cmd.AddCommand(cmdOnly(newCmdInspect(options)))
 }
 
 func addHelpSubCommands(cmd *cobra.Command, options *RootCmdOptions) error {


[camel-k] 02/19: Move dependencies to dependencies folder.

Posted by nf...@apache.org.
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 e47c8f8fc8c1e75e8855e45e33ebf6c5fea9e1d5
Author: Doru Bercea <gh...@ibm.com>
AuthorDate: Fri Oct 9 12:38:38 2020 -0400

    Move dependencies to dependencies folder.
---
 pkg/cmd/inspect.go | 120 ++++++++++++++++++++++++++++++++++++-----------------
 1 file changed, 82 insertions(+), 38 deletions(-)

diff --git a/pkg/cmd/inspect.go b/pkg/cmd/inspect.go
index b10d32a..b3ef4ec 100644
--- a/pkg/cmd/inspect.go
+++ b/pkg/cmd/inspect.go
@@ -39,9 +39,10 @@ import (
 var acceptedDependencyTypes = []string{"bom", "camel", "camel-k", "camel-quarkus", "mvn", "github"}
 
 const (
-	defaultRuntimeVersion         = "1.3.0"
-	defaultCamelVersion           = "3.3.0"
-	defaultWorkspaceDirectoryName = "workspace"
+	defaultRuntimeVersion            = "1.3.0"
+	defaultCamelVersion              = "3.3.0"
+	defaultWorkspaceDirectoryName    = "workspace"
+	defaultDependenciesDirectoryName = "dependencies"
 )
 
 func newCmdInspect(rootCmdOptions *RootCmdOptions) (*cobra.Command, *inspectCmdOptions) {
@@ -50,14 +51,21 @@ func newCmdInspect(rootCmdOptions *RootCmdOptions) (*cobra.Command, *inspectCmdO
 	}
 
 	cmd := cobra.Command{
-		Use:     "inspect [files to inspect]",
-		Short:   "Generate dependencies list the given integration files.",
-		Long:    "Output dependencies for a list of integration files. By default this command returns the top level dependencies only.",
+		Use:   "inspect [files to inspect]",
+		Short: "Generate dependencies list given integration files.",
+		Long: `
+	Output dependencies for a list of integration files. By default this command returns the
+top level dependencies only. When --all-dependencies is enabled, the transitive dependencies
+will be generated by calling Maven and then copied into the directory pointed to by the
+--dependencies-directory flag.`,
 		PreRunE: decode(&options),
 		RunE: func(_ *cobra.Command, args []string) error {
 			if err := options.validate(args); err != nil {
 				return err
 			}
+			if err := options.initialize(args); err != nil {
+				return err
+			}
 			if err := options.run(args); err != nil {
 				fmt.Println(err.Error())
 			}
@@ -69,10 +77,10 @@ func newCmdInspect(rootCmdOptions *RootCmdOptions) (*cobra.Command, *inspectCmdO
 		},
 	}
 
-	cmd.Flags().Bool("all-dependencies", false, "Compute and output transitive dependencies.")
+	cmd.Flags().Bool("all-dependencies", false, "Compute transitive dependencies and move them to directory pointed to by the --dependencies-directory flag.")
 	cmd.Flags().String("additional-dependencies", "", `Comma-separated list of additional top-level dependencies with the format:
-		<type>:<dependency-name>
-			where <type> is one of {`+strings.Join(acceptedDependencyTypes, "|")+`}.`)
+<type>:<dependency-name>
+where <type> is one of {`+strings.Join(acceptedDependencyTypes, "|")+`}.`)
 	cmd.Flags().String("workspace", "", "Absolute path to workspace directory. Default: <kamel-invocation-directory>/workspace")
 	cmd.Flags().StringP("output", "o", "", "Output format. One of: json|yaml")
 	cmd.Flags().String("dependencies-directory", "", "Absolute path to directory containing all dependencies. Default: <kamel-invocation-directory>/workspace/dependencies")
@@ -149,6 +157,26 @@ func (command *inspectCmdOptions) validate(args []string) error {
 	return nil
 }
 
+func (command *inspectCmdOptions) initialize(args []string) error {
+	// If --all-dependencies flag is set the workspace and dependencies directories need to have
+	// valid values. If not provided on the command line, the values need to be initialized with
+	// their default values.
+	if command.AllDependencies {
+		// Create workspace directory to hold all intermediate files.
+		err := createAndSetWorkspaceDirectory(command)
+		if err != nil {
+			return err
+		}
+
+		// Move the integration dependecies to the dependencies directory.
+		err = createAndSetDependenciesDirectory(command)
+		if err != nil {
+			return err
+		}
+	}
+	return nil
+}
+
 func (command *inspectCmdOptions) run(args []string) error {
 	// Attempt to reuse existing Camel catalog if one is present.
 	catalog, err := camel.MainCatalog()
@@ -178,25 +206,19 @@ func (command *inspectCmdOptions) run(args []string) error {
 		}
 	}
 
-	// If --all-dependencies flag is set, add transitive dependencies.
-	if command.AllDependencies {
-		// Create workspace directory to hold all intermediate files.
-		workspaceDirectory, err := getWorkspaceDirectory(command)
-		if err != nil {
-			return err
+	// Top level dependencies are printed out.
+	if !command.AllDependencies {
+		for _, dep := range dependencies {
+			fmt.Printf("%v\n", dep)
 		}
 
 		// The dependencies var will contain both top level and transitive dependencies.
-		dependencies, err = getTransitiveDependencies(catalog, dependencies, workspaceDirectory)
+		err = getTransitiveDependencies(catalog, dependencies, command)
 		if err != nil {
 			return err
 		}
 	}
 
-	for _, dep := range dependencies {
-		fmt.Printf("%v\n", dep)
-	}
-
 	return nil
 }
 
@@ -279,7 +301,7 @@ func printDependencies(format string, dependecies *strset.Set) error {
 func getTransitiveDependencies(
 	catalog *camel.RuntimeCatalog,
 	dependencies []string,
-	workspaceDirectory string) ([]string, error) {
+	command *inspectCmdOptions) error {
 
 	mvn := v1.MavenSpec{
 		LocalRepository: "",
@@ -291,51 +313,73 @@ func getTransitiveDependencies(
 	// Inject dependencies into Maven project.
 	err := builder.InjectDependenciesCommon(&project, dependencies, catalog)
 	if err != nil {
-		return []string{}, err
+		return err
 	}
 
 	// Create local Maven context.
-	mc := maven.NewContext(path.Join(workspaceDirectory, "maven"), project)
+	mc := maven.NewContext(path.Join(command.Workspace, "maven"), project)
 	mc.LocalRepository = mvn.LocalRepository
 	mc.Timeout = mvn.GetTimeout().Duration
 
 	// Compute dependencies.
 	content, err := runtime.ComputeDependenciesCommon(mc, catalog.Runtime.Version)
 	if err != nil {
-		return nil, err
+		return err
 	}
 
-	// Compose artifcats list.
+	// Compose artifacts list.
 	artifacts := []v1.Artifact{}
-	artifacts, err = runtime.ProcessTransitiveDependencies(content, "dependencies")
+	artifacts, err = runtime.ProcessTransitiveDependencies(content, command.DependenciesDirectory)
 	if err != nil {
-		return nil, err
+		return err
 	}
 
-	allDependencies := strset.New()
 	for _, entry := range artifacts {
-		allDependencies.Add(fmt.Sprintf("%s\n", entry.Location))
+		// Copy dependencies from Maven default directory to the DependenciesDirectory.
+		_, err := util.CopyFile(entry.Location, entry.Target)
+		if err != nil {
+			return err
+		}
 	}
 
-	return allDependencies.List(), nil
+	return nil
 }
 
-func getWorkspaceDirectory(command *inspectCmdOptions) (string, error) {
-	// Path to workspace directory.
-	workspaceDirectory := command.Workspace
+func createAndSetWorkspaceDirectory(command *inspectCmdOptions) error {
 	if command.Workspace == "" {
 		currentDirectory, err := os.Getwd()
 		if err != nil {
-			return "", err
+			return err
+		}
+		command.Workspace = path.Join(currentDirectory, defaultWorkspaceDirectoryName)
+	}
+
+	// Create the workspace directory if it does not already exist.
+	err := util.CreateDirectory(command.Workspace)
+	if err != nil {
+		return err
+	}
+
+	return nil
+}
+
+func createAndSetDependenciesDirectory(command *inspectCmdOptions) error {
+	if command.DependenciesDirectory == "" {
+		if command.Workspace == "" {
+			err := createAndSetWorkspaceDirectory(command)
+			if err != nil {
+				return err
+			}
 		}
-		workspaceDirectory = path.Join(currentDirectory, defaultWorkspaceDirectoryName)
+
+		command.DependenciesDirectory = path.Join(command.Workspace, defaultDependenciesDirectoryName)
 	}
 
 	// Create the workspace directory if it does not already exist.
-	err := util.CreateDirectory(workspaceDirectory)
+	err := util.CreateDirectory(command.DependenciesDirectory)
 	if err != nil {
-		return "", err
+		return err
 	}
 
-	return workspaceDirectory, nil
+	return nil
 }


[camel-k] 19/19: Remove comment.

Posted by nf...@apache.org.
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 04d790972b74d70aa351659fb12e6a068bddce84
Author: Doru Bercea <gh...@ibm.com>
AuthorDate: Thu Nov 5 16:53:37 2020 -0500

    Remove comment.
---
 pkg/cmd/inspect.go | 1 -
 1 file changed, 1 deletion(-)

diff --git a/pkg/cmd/inspect.go b/pkg/cmd/inspect.go
index 9b73bc6..1c2cbf4 100644
--- a/pkg/cmd/inspect.go
+++ b/pkg/cmd/inspect.go
@@ -220,7 +220,6 @@ func getTransitiveDependencies(
 	}
 
 	// Create Maven project.
-	//project := runtime.GenerateProjectCommon(catalog.CamelCatalogSpec.Runtime.Metadata["camel.version"], defaults.DefaultRuntimeVersion)
 	project := runtime.GenerateQuarkusProjectCommon(
 		catalog.CamelCatalogSpec.Runtime.Metadata["camel-quarkus.version"],
 		defaults.DefaultRuntimeVersion, catalog.CamelCatalogSpec.Runtime.Metadata["quarkus.version"])


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

Posted by nf...@apache.org.
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
+}


[camel-k] 07/19: Only print top-level dependencies if they are requested.

Posted by nf...@apache.org.
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 792e0876cd630d29acbb3426813d9444df8b222e
Author: Doru Bercea <gh...@ibm.com>
AuthorDate: Wed Oct 21 16:43:56 2020 -0400

    Only print top-level dependencies if they are requested.
---
 pkg/cmd/inspect.go | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/pkg/cmd/inspect.go b/pkg/cmd/inspect.go
index fbf25c6..cbb823d 100644
--- a/pkg/cmd/inspect.go
+++ b/pkg/cmd/inspect.go
@@ -180,8 +180,11 @@ func (command *inspectCmdOptions) run(args []string) error {
 	// Fetch existing catalog or create new one if one does not already exist.
 	catalog, err := createCamelCatalog()
 
+	// Output top-level dependencies.
+	outputTopLevel := !command.AllDependencies
+
 	// Get top-level dependencies, this is the default behavior when no other options are provided.
-	dependencies, err := getTopLevelDependencies(catalog, command.OutputFormat, args)
+	dependencies, err := getTopLevelDependencies(catalog, command.OutputFormat, args, outputTopLevel)
 	if err != nil {
 		return err
 	}
@@ -208,7 +211,7 @@ func (command *inspectCmdOptions) run(args []string) error {
 	return nil
 }
 
-func getTopLevelDependencies(catalog *camel.RuntimeCatalog, format string, args []string) ([]string, error) {
+func getTopLevelDependencies(catalog *camel.RuntimeCatalog, format string, args []string, outputTopLevel bool) ([]string, error) {
 	// List of top-level dependencies.
 	dependencies := strset.New()
 
@@ -236,7 +239,7 @@ func getTopLevelDependencies(catalog *camel.RuntimeCatalog, format string, args
 		if err != nil {
 			return []string{}, err
 		}
-	} else {
+	} else if outputTopLevel {
 		// Print output in text form.
 		for _, dep := range dependencies.List() {
 			fmt.Printf("%v\n", dep)


[camel-k] 15/19: Remove hardcoded camel runtime version.

Posted by nf...@apache.org.
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 a6a3157a45901a3098a9bf443a4460545bac957a
Author: Doru Bercea <gh...@ibm.com>
AuthorDate: Wed Nov 4 12:52:14 2020 -0500

    Remove hardcoded camel runtime version.
---
 pkg/cmd/inspect.go            | 2 +-
 pkg/util/defaults/defaults.go | 3 ---
 2 files changed, 1 insertion(+), 4 deletions(-)

diff --git a/pkg/cmd/inspect.go b/pkg/cmd/inspect.go
index bfb1ed6..caa2af9 100644
--- a/pkg/cmd/inspect.go
+++ b/pkg/cmd/inspect.go
@@ -220,7 +220,7 @@ func getTransitiveDependencies(
 	}
 
 	// Create Maven project.
-	project := runtime.GenerateProjectCommon(defaults.CamelVersion, defaults.DefaultRuntimeVersion)
+	project := runtime.GenerateProjectCommon(catalog.CamelCatalogSpec.Runtime.Metadata["camel.version"], defaults.DefaultRuntimeVersion)
 
 	// Inject dependencies into Maven project.
 	err := camel.ManageIntegrationDependencies(&project, dependencies, catalog)
diff --git a/pkg/util/defaults/defaults.go b/pkg/util/defaults/defaults.go
index 2ef059d..ede7d07 100644
--- a/pkg/util/defaults/defaults.go
+++ b/pkg/util/defaults/defaults.go
@@ -42,7 +42,4 @@ const (
 
 	// ImageName --
 	ImageName = "docker.io/apache/camel-k"
-
-	// CamelVersion --
-	CamelVersion = "3.6.0"
 )


[camel-k] 03/19: Clean-up.

Posted by nf...@apache.org.
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 ceb5daf64fcec62d26e0993ad0d29b95b2354fa1
Author: Doru Bercea <gh...@ibm.com>
AuthorDate: Mon Oct 12 12:12:39 2020 -0400

    Clean-up.
---
 pkg/cmd/inspect.go | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/pkg/cmd/inspect.go b/pkg/cmd/inspect.go
index b3ef4ec..d6bae77 100644
--- a/pkg/cmd/inspect.go
+++ b/pkg/cmd/inspect.go
@@ -53,8 +53,7 @@ func newCmdInspect(rootCmdOptions *RootCmdOptions) (*cobra.Command, *inspectCmdO
 	cmd := cobra.Command{
 		Use:   "inspect [files to inspect]",
 		Short: "Generate dependencies list given integration files.",
-		Long: `
-	Output dependencies for a list of integration files. By default this command returns the
+		Long: `Output dependencies for a list of integration files. By default this command returns the
 top level dependencies only. When --all-dependencies is enabled, the transitive dependencies
 will be generated by calling Maven and then copied into the directory pointed to by the
 --dependencies-directory flag.`,


[camel-k] 09/19: Update Camel version.

Posted by nf...@apache.org.
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 7dab1aa00d4ef20eccc2511f817911600a5914a1
Author: Doru Bercea <gh...@ibm.com>
AuthorDate: Fri Oct 23 15:34:59 2020 -0400

    Update Camel version.
---
 pkg/util/defaults/defaults.go | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pkg/util/defaults/defaults.go b/pkg/util/defaults/defaults.go
index 66885fb..2ef059d 100644
--- a/pkg/util/defaults/defaults.go
+++ b/pkg/util/defaults/defaults.go
@@ -44,5 +44,5 @@ const (
 	ImageName = "docker.io/apache/camel-k"
 
 	// CamelVersion --
-	CamelVersion = "3.3.0"
+	CamelVersion = "3.6.0"
 )


[camel-k] 11/19: Refactor output of dependencies.

Posted by nf...@apache.org.
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 5f2c9e025d99575ea8274d04e2dd91d0546ecde7
Author: Doru Bercea <gh...@ibm.com>
AuthorDate: Tue Oct 27 14:45:49 2020 -0400

    Refactor output of dependencies.
---
 pkg/cmd/inspect.go | 90 ++++++++++++++++++++++++++++++++----------------------
 1 file changed, 54 insertions(+), 36 deletions(-)

diff --git a/pkg/cmd/inspect.go b/pkg/cmd/inspect.go
index a4539ff..2c96a19 100644
--- a/pkg/cmd/inspect.go
+++ b/pkg/cmd/inspect.go
@@ -166,11 +166,9 @@ func (command *inspectCmdOptions) run(args []string) error {
 	// Fetch existing catalog or create new one if one does not already exist.
 	catalog, err := createCamelCatalog()
 
-	// Output top-level dependencies.
-	outputTopLevel := !command.AllDependencies
-
 	// Get top-level dependencies, this is the default behavior when no other options are provided.
-	dependencies, err := getTopLevelDependencies(catalog, command.OutputFormat, args, outputTopLevel)
+	// Do not output these options when transitive options are enbled.
+	dependencies, err := getTopLevelDependencies(catalog, command.OutputFormat, args, !command.AllDependencies)
 	if err != nil {
 		return err
 	}
@@ -178,7 +176,6 @@ func (command *inspectCmdOptions) run(args []string) error {
 	// Add additional user-provided dependencies.
 	if command.AdditionalDependencies != nil {
 		for _, additionalDependency := range command.AdditionalDependencies {
-			fmt.Printf(" Dep : %v \n", additionalDependency)
 			dependencies = append(dependencies, additionalDependency)
 		}
 	}
@@ -195,7 +192,7 @@ func (command *inspectCmdOptions) run(args []string) error {
 	return nil
 }
 
-func getTopLevelDependencies(catalog *camel.RuntimeCatalog, format string, args []string, outputTopLevel bool) ([]string, error) {
+func getTopLevelDependencies(catalog *camel.RuntimeCatalog, format string, args []string, outputPlainText bool) ([]string, error) {
 	// List of top-level dependencies.
 	dependencies := strset.New()
 
@@ -218,17 +215,11 @@ func getTopLevelDependencies(catalog *camel.RuntimeCatalog, format string, args
 		dependencies.Merge(trait.AddSourceDependencies(sourceSpec, catalog))
 	}
 
-	if format != "" {
-		err := printDependencies(format, dependencies)
-		if err != nil {
-			return []string{}, err
-		}
-	} else if outputTopLevel {
-		// Print output in text form.
-		for _, dep := range dependencies.List() {
-			fmt.Printf("%v\n", dep)
-		}
+	err := outputDependencies(dependencies.List(), format, outputPlainText)
+	if err != nil {
+		return []string{}, err
 	}
+
 	return dependencies.List(), nil
 }
 
@@ -251,26 +242,6 @@ func generateCatalog() (*camel.RuntimeCatalog, error) {
 	return catalog, nil
 }
 
-func printDependencies(format string, dependecies *strset.Set) error {
-	switch format {
-	case "yaml":
-		data, err := util.DependenciesToYAML(dependecies.List())
-		if err != nil {
-			return err
-		}
-		fmt.Print(string(data))
-	case "json":
-		data, err := util.DependenciesToJSON(dependecies.List())
-		if err != nil {
-			return err
-		}
-		fmt.Print(string(data))
-	default:
-		return errors.New("unknown output format: " + format)
-	}
-	return nil
-}
-
 func getTransitiveDependencies(
 	catalog *camel.RuntimeCatalog,
 	dependencies []string,
@@ -312,16 +283,63 @@ func getTransitiveDependencies(
 		return err
 	}
 
+	// Dump dependencies in the dependencies directory and construct the list of dependencies.
+	transitiveDependencies := []string{}
 	for _, entry := range artifacts {
 		// Copy dependencies from Maven default directory to the DependenciesDirectory.
 		_, err := util.CopyFile(entry.Location, entry.Target)
 		if err != nil {
 			return err
 		}
+
+		transitiveDependencies = append(transitiveDependencies, entry.Target)
 	}
 
+	// Remove directory used for computing the dependencies.
 	defer os.RemoveAll(temporaryDirectory)
 
+	// Output transitive dependencies only if requested via the output format flag.
+	err = outputDependencies(transitiveDependencies, command.OutputFormat, false)
+	if err != nil {
+		return err
+	}
+
+	return nil
+}
+
+func outputDependencies(dependencies []string, format string, outputPlainText bool) error {
+	if format != "" {
+		err := printDependencies(format, dependencies)
+		if err != nil {
+			return err
+		}
+	} else if outputPlainText {
+		// Print output in text form.
+		for _, dep := range dependencies {
+			fmt.Printf("%v\n", dep)
+		}
+	}
+
+	return nil
+}
+
+func printDependencies(format string, dependecies []string) error {
+	switch format {
+	case "yaml":
+		data, err := util.DependenciesToYAML(dependecies)
+		if err != nil {
+			return err
+		}
+		fmt.Print(string(data))
+	case "json":
+		data, err := util.DependenciesToJSON(dependecies)
+		if err != nil {
+			return err
+		}
+		fmt.Print(string(data))
+	default:
+		return errors.New("unknown output format: " + format)
+	}
 	return nil
 }
 


[camel-k] 18/19: Make output of maven quiet for local runs.

Posted by nf...@apache.org.
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 0612d978486dc57135500b667acda008d0476b19
Author: Doru Bercea <gh...@ibm.com>
AuthorDate: Thu Nov 5 14:25:24 2020 -0500

    Make output of maven quiet for local runs.
---
 pkg/cmd/inspect.go | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/pkg/cmd/inspect.go b/pkg/cmd/inspect.go
index e580552..9b73bc6 100644
--- a/pkg/cmd/inspect.go
+++ b/pkg/cmd/inspect.go
@@ -237,10 +237,13 @@ func getTransitiveDependencies(
 		return err
 	}
 
+	// Maven local context to be used for generating the transitive dependencies.
 	mc := maven.NewContext(temporaryDirectory, project)
 	mc.LocalRepository = mvn.LocalRepository
 	mc.Timeout = mvn.GetTimeout().Duration
-	// mc.Stdout = os.Stderr
+
+	// Make maven command less verbose.
+	mc.AdditionalArguments = append(mc.AdditionalArguments, "-q")
 
 	err = runtime.BuildQuarkusRunnerCommon(mc)
 	if err != nil {


[camel-k] 13/19: Only print transitive dependencies.

Posted by nf...@apache.org.
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 1b24a78470059f50271f4f282fb519f3cebc926b
Author: Doru Bercea <gh...@ibm.com>
AuthorDate: Mon Nov 2 12:31:36 2020 -0500

    Only print transitive dependencies.
---
 pkg/builder/runtime/main.go |  6 ++--
 pkg/cmd/inspect.go          | 77 +++++++--------------------------------------
 2 files changed, 14 insertions(+), 69 deletions(-)

diff --git a/pkg/builder/runtime/main.go b/pkg/builder/runtime/main.go
index d6f973a..fdf681b 100644
--- a/pkg/builder/runtime/main.go
+++ b/pkg/builder/runtime/main.go
@@ -109,7 +109,7 @@ func computeDependencies(ctx *builder.Context) error {
 
 	// Process artifacts list and add it to existing artifacts.
 	artifacts := []v1.Artifact{}
-	artifacts, err = ProcessTransitiveDependencies(content, "dependencies")
+	artifacts, err = ProcessTransitiveDependencies(content)
 	if err != nil {
 		return err
 	}
@@ -136,7 +136,7 @@ func ComputeDependenciesCommon(mc maven.Context, runtimeVersion string) ([]byte,
 }
 
 // ProcessTransitiveDependencies --
-func ProcessTransitiveDependencies(content []byte, outputDir string) ([]v1.Artifact, error) {
+func ProcessTransitiveDependencies(content []byte) ([]v1.Artifact, error) {
 	cp := make(map[string][]v1.Artifact)
 	err := yaml2.Unmarshal(content, &cp)
 	if err != nil {
@@ -167,7 +167,7 @@ func ProcessTransitiveDependencies(content []byte, outputDir string) ([]v1.Artif
 		artifacts = append(artifacts, v1.Artifact{
 			ID:       e.ID,
 			Location: e.Location,
-			Target:   path.Join(outputDir, gav.GroupID+"."+fileName),
+			Target:   path.Join("dependencies", gav.GroupID+"."+fileName),
 			Checksum: e.Checksum,
 		})
 	}
diff --git a/pkg/cmd/inspect.go b/pkg/cmd/inspect.go
index 834b98b..8fc25e9 100644
--- a/pkg/cmd/inspect.go
+++ b/pkg/cmd/inspect.go
@@ -57,9 +57,6 @@ will be generated by calling Maven and then copied into the directory pointed to
 			if err := options.validate(args); err != nil {
 				return err
 			}
-			if err := options.initialize(args); err != nil {
-				return err
-			}
 			if err := options.run(args); err != nil {
 				fmt.Println(err.Error())
 			}
@@ -75,7 +72,6 @@ will be generated by calling Maven and then copied into the directory pointed to
 	cmd.Flags().StringArrayP("dependency", "d", nil, `Additional top-level dependency with the format:
 <type>:<dependency-name>
 where <type> is one of {`+strings.Join(acceptedDependencyTypes, "|")+`}.`)
-	cmd.Flags().String("dependencies-directory", "", "Directory that will contain all the computed dependencies. Default: <kamel-invocation-directory>/dependencies")
 	cmd.Flags().StringP("output", "o", "", "Output format. One of: json|yaml")
 
 	return &cmd, &options
@@ -85,7 +81,6 @@ type inspectCmdOptions struct {
 	*RootCmdOptions
 	AllDependencies        bool     `mapstructure:"all-dependencies"`
 	OutputFormat           string   `mapstructure:"output"`
-	DependenciesDirectory  string   `mapstructure:"dependencies-directory"`
 	AdditionalDependencies []string `mapstructure:"dependencies"`
 }
 
@@ -131,33 +126,6 @@ func (command *inspectCmdOptions) validate(args []string) error {
 		}
 	}
 
-	// If provided, ensure that that the dependencies directory exists.
-	if command.DependenciesDirectory != "" {
-		dependenciesDirectoryExists, err := util.DirectoryExists(command.DependenciesDirectory)
-		// Report any error.
-		if err != nil {
-			return err
-		}
-
-		// Signal file not found.
-		if !dependenciesDirectoryExists {
-			return errors.New("input file " + command.DependenciesDirectory + " file does not exist")
-		}
-	}
-
-	return nil
-}
-
-func (command *inspectCmdOptions) initialize(args []string) error {
-	// If --all-dependencies flag is set the dependencies directory needs to have a valid value.
-	// If not provided on the command line, the value needs to be initialized with the default.
-	if command.AllDependencies {
-		// Move the integration dependecies to the dependencies directory.
-		err := createAndSetDependenciesDirectory(command)
-		if err != nil {
-			return err
-		}
-	}
 	return nil
 }
 
@@ -191,7 +159,7 @@ func (command *inspectCmdOptions) run(args []string) error {
 	return nil
 }
 
-func getTopLevelDependencies(catalog *camel.RuntimeCatalog, format string, args []string, outputPlainText bool) ([]string, error) {
+func getTopLevelDependencies(catalog *camel.RuntimeCatalog, format string, args []string, printDependencies bool) ([]string, error) {
 	// List of top-level dependencies.
 	dependencies := strset.New()
 
@@ -214,9 +182,11 @@ func getTopLevelDependencies(catalog *camel.RuntimeCatalog, format string, args
 		dependencies.Merge(trait.AddSourceDependencies(sourceSpec, catalog))
 	}
 
-	err := outputDependencies(dependencies.List(), format, outputPlainText)
-	if err != nil {
-		return []string{}, err
+	if printDependencies {
+		err := outputDependencies(dependencies.List(), format)
+		if err != nil {
+			return []string{}, err
+		}
 	}
 
 	return dependencies.List(), nil
@@ -277,7 +247,7 @@ func getTransitiveDependencies(
 
 	// Compose artifacts list.
 	artifacts := []v1.Artifact{}
-	artifacts, err = runtime.ProcessTransitiveDependencies(content, command.DependenciesDirectory)
+	artifacts, err = runtime.ProcessTransitiveDependencies(content)
 	if err != nil {
 		return err
 	}
@@ -285,20 +255,14 @@ func getTransitiveDependencies(
 	// Dump dependencies in the dependencies directory and construct the list of dependencies.
 	transitiveDependencies := []string{}
 	for _, entry := range artifacts {
-		// Copy dependencies from Maven default directory to the DependenciesDirectory.
-		_, err := util.CopyFile(entry.Location, entry.Target)
-		if err != nil {
-			return err
-		}
-
-		transitiveDependencies = append(transitiveDependencies, entry.Target)
+		transitiveDependencies = append(transitiveDependencies, entry.Location)
 	}
 
 	// Remove directory used for computing the dependencies.
 	defer os.RemoveAll(temporaryDirectory)
 
 	// Output transitive dependencies only if requested via the output format flag.
-	err = outputDependencies(transitiveDependencies, command.OutputFormat, false)
+	err = outputDependencies(transitiveDependencies, command.OutputFormat)
 	if err != nil {
 		return err
 	}
@@ -306,13 +270,13 @@ func getTransitiveDependencies(
 	return nil
 }
 
-func outputDependencies(dependencies []string, format string, outputPlainText bool) error {
+func outputDependencies(dependencies []string, format string) error {
 	if format != "" {
 		err := printDependencies(format, dependencies)
 		if err != nil {
 			return err
 		}
-	} else if outputPlainText {
+	} else {
 		// Print output in text form.
 		for _, dep := range dependencies {
 			fmt.Printf("%v\n", dep)
@@ -351,25 +315,6 @@ func getWorkingDirectory() (string, error) {
 	return currentDirectory, nil
 }
 
-func createAndSetDependenciesDirectory(command *inspectCmdOptions) error {
-	if command.DependenciesDirectory == "" {
-		currentDirectory, err := getWorkingDirectory()
-		if err != nil {
-			return err
-		}
-
-		command.DependenciesDirectory = path.Join(currentDirectory, defaultDependenciesDirectoryName)
-	}
-
-	// Create the dependencies directory if it does not already exist.
-	err := util.CreateDirectory(command.DependenciesDirectory)
-	if err != nil {
-		return err
-	}
-
-	return nil
-}
-
 func createCamelCatalog() (*camel.RuntimeCatalog, error) {
 	// Attempt to reuse existing Camel catalog if one is present.
 	catalog, err := camel.MainCatalog()


[camel-k] 16/19: Use default and quarkus runtime.

Posted by nf...@apache.org.
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 5ff028f9dab2aa827364e7b58f6a7962a93adc78
Author: Doru Bercea <gh...@ibm.com>
AuthorDate: Thu Nov 5 09:39:01 2020 -0500

    Use default and quarkus runtime.
---
 pkg/cmd/inspect.go | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/pkg/cmd/inspect.go b/pkg/cmd/inspect.go
index caa2af9..3eef300 100644
--- a/pkg/cmd/inspect.go
+++ b/pkg/cmd/inspect.go
@@ -199,7 +199,7 @@ func generateCatalog() (*camel.RuntimeCatalog, error) {
 	}
 	runtime := v1.RuntimeSpec{
 		Version:  defaults.DefaultRuntimeVersion,
-		Provider: v1.RuntimeProviderMain,
+		Provider: v1.RuntimeProviderQuarkus,
 	}
 	providerDependencies := []maven.Dependency{}
 	catalog, err := camel.GenerateCatalogCommon(settings, mvn, runtime, providerDependencies)
@@ -316,7 +316,7 @@ func getWorkingDirectory() (string, error) {
 
 func createCamelCatalog() (*camel.RuntimeCatalog, error) {
 	// Attempt to reuse existing Camel catalog if one is present.
-	catalog, err := camel.MainCatalog()
+	catalog, err := camel.DefaultCatalog()
 	if err != nil {
 		return nil, err
 	}


[camel-k] 10/19: Remove workspace directory. Make maven directory temporary.

Posted by nf...@apache.org.
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 f0684ca3b9488a4da5ea6719eb3f79c73c110516
Author: Doru Bercea <gh...@ibm.com>
AuthorDate: Tue Oct 27 14:05:28 2020 -0400

    Remove workspace directory. Make maven directory temporary.
---
 pkg/cmd/inspect.go | 92 +++++++++++++++++++++---------------------------------
 1 file changed, 36 insertions(+), 56 deletions(-)

diff --git a/pkg/cmd/inspect.go b/pkg/cmd/inspect.go
index cbb823d..a4539ff 100644
--- a/pkg/cmd/inspect.go
+++ b/pkg/cmd/inspect.go
@@ -20,6 +20,7 @@ package cmd
 import (
 	"errors"
 	"fmt"
+	"io/ioutil"
 	"os"
 	"path"
 	"strings"
@@ -38,10 +39,7 @@ import (
 
 var acceptedDependencyTypes = []string{"bom", "camel", "camel-k", "camel-quarkus", "mvn", "github"}
 
-const (
-	defaultWorkspaceDirectoryName    = "workspace"
-	defaultDependenciesDirectoryName = "dependencies"
-)
+const defaultDependenciesDirectoryName = "dependencies"
 
 func newCmdInspect(rootCmdOptions *RootCmdOptions) (*cobra.Command, *inspectCmdOptions) {
 	options := inspectCmdOptions{
@@ -75,11 +73,10 @@ will be generated by calling Maven and then copied into the directory pointed to
 	}
 
 	cmd.Flags().Bool("all-dependencies", false, "Compute transitive dependencies and move them to directory pointed to by the --dependencies-directory flag.")
-	cmd.Flags().StringArrayP("additional-dependencies", "d", nil, `Comma-separated lists of additional top-level dependencies with the format:
+	cmd.Flags().StringArrayP("dependency", "d", nil, `Additional top-level dependency with the format:
 <type>:<dependency-name>
 where <type> is one of {`+strings.Join(acceptedDependencyTypes, "|")+`}.`)
-	cmd.Flags().String("workspace", "", "Workspace directory. Default: <kamel-invocation-directory>/workspace")
-	cmd.Flags().String("dependencies-directory", "", "Directory that will contain all the computed dependencies. Default: <kamel-invocation-directory>/<kamel-workspace-directory>/dependencies")
+	cmd.Flags().String("dependencies-directory", "", "Directory that will contain all the computed dependencies. Default: <kamel-invocation-directory>/dependencies")
 	cmd.Flags().StringP("output", "o", "", "Output format. One of: json|yaml")
 
 	return &cmd, &options
@@ -89,9 +86,8 @@ type inspectCmdOptions struct {
 	*RootCmdOptions
 	AllDependencies        bool     `mapstructure:"all-dependencies"`
 	OutputFormat           string   `mapstructure:"output"`
-	Workspace              string   `mapstructure:"workspace"`
 	DependenciesDirectory  string   `mapstructure:"dependencies-directory"`
-	AdditionalDependencies []string `mapstructure:"additional-dependencies"`
+	AdditionalDependencies []string `mapstructure:"dependencies"`
 }
 
 func (command *inspectCmdOptions) validate(args []string) error {
@@ -120,22 +116,19 @@ func (command *inspectCmdOptions) validate(args []string) error {
 	// a valid type.
 	if command.AdditionalDependencies != nil {
 		for _, additionalDependency := range command.AdditionalDependencies {
-			additionalDependencies := strings.Split(additionalDependency, ",")
-
-			for _, dependency := range additionalDependencies {
-				dependencyComponents := strings.Split(dependency, ":")
+			dependencyComponents := strings.Split(additionalDependency, ":")
 
-				TypeIsValid := false
-				for _, dependencyType := range acceptedDependencyTypes {
-					if dependencyType == dependencyComponents[0] {
-						TypeIsValid = true
-					}
+			TypeIsValid := false
+			for _, dependencyType := range acceptedDependencyTypes {
+				if dependencyType == dependencyComponents[0] {
+					TypeIsValid = true
 				}
+			}
 
-				if !TypeIsValid {
-					return errors.New("Unexpected type for user-provided dependency: " + dependency + ", check command usage for valid format.")
-				}
+			if !TypeIsValid {
+				return errors.New("Unexpected type for user-provided dependency: " + additionalDependency + ", check command usage for valid format.")
 			}
+
 		}
 	}
 
@@ -157,18 +150,11 @@ func (command *inspectCmdOptions) validate(args []string) error {
 }
 
 func (command *inspectCmdOptions) initialize(args []string) error {
-	// If --all-dependencies flag is set the workspace and dependencies directories need to have
-	// valid values. If not provided on the command line, the values need to be initialized with
-	// their default values.
+	// If --all-dependencies flag is set the dependencies directory needs to have a valid value.
+	// If not provided on the command line, the value needs to be initialized with the default.
 	if command.AllDependencies {
-		// Create workspace directory to hold all intermediate files.
-		err := createAndSetWorkspaceDirectory(command)
-		if err != nil {
-			return err
-		}
-
 		// Move the integration dependecies to the dependencies directory.
-		err = createAndSetDependenciesDirectory(command)
+		err := createAndSetDependenciesDirectory(command)
 		if err != nil {
 			return err
 		}
@@ -192,10 +178,8 @@ func (command *inspectCmdOptions) run(args []string) error {
 	// Add additional user-provided dependencies.
 	if command.AdditionalDependencies != nil {
 		for _, additionalDependency := range command.AdditionalDependencies {
-			additionalDependencies := strings.Split(additionalDependency, ",")
-			for _, dependency := range additionalDependencies {
-				dependencies = append(dependencies, dependency)
-			}
+			fmt.Printf(" Dep : %v \n", additionalDependency)
+			dependencies = append(dependencies, additionalDependency)
 		}
 	}
 
@@ -306,7 +290,12 @@ func getTransitiveDependencies(
 	}
 
 	// Create local Maven context.
-	mc := maven.NewContext(path.Join(command.Workspace, "maven"), project)
+	temporaryDirectory, err := ioutil.TempDir(os.TempDir(), "maven-")
+	if err != nil {
+		return err
+	}
+
+	mc := maven.NewContext(temporaryDirectory, project)
 	mc.LocalRepository = mvn.LocalRepository
 	mc.Timeout = mvn.GetTimeout().Duration
 
@@ -331,40 +320,31 @@ func getTransitiveDependencies(
 		}
 	}
 
+	defer os.RemoveAll(temporaryDirectory)
+
 	return nil
 }
 
-func createAndSetWorkspaceDirectory(command *inspectCmdOptions) error {
-	if command.Workspace == "" {
-		currentDirectory, err := os.Getwd()
-		if err != nil {
-			return err
-		}
-		command.Workspace = path.Join(currentDirectory, defaultWorkspaceDirectoryName)
-	}
-
-	// Create the workspace directory if it does not already exist.
-	err := util.CreateDirectory(command.Workspace)
+func getWorkingDirectory() (string, error) {
+	currentDirectory, err := os.Getwd()
 	if err != nil {
-		return err
+		return "", err
 	}
 
-	return nil
+	return currentDirectory, nil
 }
 
 func createAndSetDependenciesDirectory(command *inspectCmdOptions) error {
 	if command.DependenciesDirectory == "" {
-		if command.Workspace == "" {
-			err := createAndSetWorkspaceDirectory(command)
-			if err != nil {
-				return err
-			}
+		currentDirectory, err := getWorkingDirectory()
+		if err != nil {
+			return err
 		}
 
-		command.DependenciesDirectory = path.Join(command.Workspace, defaultDependenciesDirectoryName)
+		command.DependenciesDirectory = path.Join(currentDirectory, defaultDependenciesDirectoryName)
 	}
 
-	// Create the workspace directory if it does not already exist.
+	// Create the dependencies directory if it does not already exist.
 	err := util.CreateDirectory(command.DependenciesDirectory)
 	if err != nil {
 		return err


[camel-k] 01/19: Support computing and outputting of transitive dependencies.

Posted by nf...@apache.org.
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 552e6a8cddd5e4d2a293e6333c0171fbf4f881b0
Author: Doru Bercea <gh...@ibm.com>
AuthorDate: Thu Oct 8 18:41:04 2020 -0400

    Support computing and outputting of transitive dependencies.
---
 pkg/builder/builder_steps.go |  47 +++++++-----
 pkg/builder/runtime/main.go  |  65 ++++++++++++----
 pkg/cmd/inspect.go           | 175 ++++++++++++++++++++++++++++++++++++++++---
 pkg/util/camel/catalog.go    |   6 +-
 pkg/util/util.go             |  18 +++++
 5 files changed, 265 insertions(+), 46 deletions(-)

diff --git a/pkg/builder/builder_steps.go b/pkg/builder/builder_steps.go
index a1ce547..0c29790 100644
--- a/pkg/builder/builder_steps.go
+++ b/pkg/builder/builder_steps.go
@@ -25,6 +25,7 @@ import (
 	"reflect"
 	"strings"
 
+	"github.com/apache/camel-k/pkg/util/camel"
 	"github.com/apache/camel-k/pkg/util/jitpack"
 
 	"github.com/rs/xid"
@@ -140,7 +141,17 @@ func generateProjectSettings(ctx *Context) error {
 
 func injectDependencies(ctx *Context) error {
 	// Add dependencies from build
-	for _, d := range ctx.Build.Dependencies {
+	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:")
@@ -151,7 +162,7 @@ func injectDependencies(ctx *Context) error {
 				return err
 			}
 
-			ctx.Maven.Project.DependencyManagement.Dependencies = append(ctx.Maven.Project.DependencyManagement.Dependencies, maven.Dependency{
+			project.DependencyManagement.Dependencies = append(project.DependencyManagement.Dependencies, maven.Dependency{
 				GroupID:    d.GroupID,
 				ArtifactID: d.ArtifactID,
 				Version:    d.Version,
@@ -165,7 +176,7 @@ func injectDependencies(ctx *Context) error {
 				artifactID = "camel-" + artifactID
 			}
 
-			ctx.Maven.Project.AddDependencyGAV("org.apache.camel", artifactID, "")
+			project.AddDependencyGAV("org.apache.camel", artifactID, "")
 		case strings.HasPrefix(d, "camel-k:"):
 			artifactID := strings.TrimPrefix(d, "camel-k:")
 
@@ -173,7 +184,7 @@ func injectDependencies(ctx *Context) error {
 				artifactID = "camel-k-" + artifactID
 			}
 
-			ctx.Maven.Project.AddDependencyGAV("org.apache.camel.k", artifactID, "")
+			project.AddDependencyGAV("org.apache.camel.k", artifactID, "")
 		case strings.HasPrefix(d, "camel-quarkus:"):
 			artifactID := strings.TrimPrefix(d, "camel-quarkus:")
 
@@ -181,25 +192,25 @@ func injectDependencies(ctx *Context) error {
 				artifactID = "camel-quarkus-" + artifactID
 			}
 
-			ctx.Maven.Project.AddDependencyGAV("org.apache.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)
 
-			ctx.Maven.Project.AddEncodedDependencyGAV(gav)
+			project.AddEncodedDependencyGAV(gav)
 		default:
 			if dep := jitpack.ToDependency(d); dep != nil {
-				ctx.Maven.Project.AddDependency(*dep)
+				project.AddDependency(*dep)
 
 				addRepo := true
-				for _, repo := range ctx.Maven.Project.Repositories {
+				for _, repo := range project.Repositories {
 					if repo.URL == jitpack.RepoURL {
 						addRepo = false
 						break
 					}
 				}
 				if addRepo {
-					ctx.Maven.Project.Repositories = append(ctx.Maven.Project.Repositories, maven.Repository{
+					project.Repositories = append(project.Repositories, maven.Repository{
 						ID:  "jitpack.io-" + xid.New().String(),
 						URL: jitpack.RepoURL,
 						Releases: maven.RepositoryPolicy{
@@ -219,18 +230,18 @@ func injectDependencies(ctx *Context) error {
 	}
 
 	// Add dependencies from catalog
-	deps := make([]maven.Dependency, len(ctx.Maven.Project.Dependencies))
-	copy(deps, ctx.Maven.Project.Dependencies)
+	deps := make([]maven.Dependency, len(project.Dependencies))
+	copy(deps, project.Dependencies)
 
 	for _, d := range deps {
-		if a, ok := ctx.Catalog.Artifacts[d.ArtifactID]; ok {
+		if a, ok := catalog.Artifacts[d.ArtifactID]; ok {
 			for _, dep := range a.Dependencies {
 				md := maven.Dependency{
 					GroupID:    dep.GroupID,
 					ArtifactID: dep.ArtifactID,
 				}
 
-				ctx.Maven.Project.AddDependency(md)
+				project.AddDependency(md)
 
 				for _, e := range dep.Exclusions {
 					me := maven.Exclusion{
@@ -238,18 +249,18 @@ func injectDependencies(ctx *Context) error {
 						ArtifactID: e.ArtifactID,
 					}
 
-					ctx.Maven.Project.AddDependencyExclusion(md, me)
+					project.AddDependencyExclusion(md, me)
 				}
 			}
 		}
 	}
 
 	// Post process dependencies
-	deps = make([]maven.Dependency, len(ctx.Maven.Project.Dependencies))
-	copy(deps, ctx.Maven.Project.Dependencies)
+	deps = make([]maven.Dependency, len(project.Dependencies))
+	copy(deps, project.Dependencies)
 
 	for _, d := range deps {
-		if a, ok := ctx.Catalog.Artifacts[d.ArtifactID]; ok {
+		if a, ok := catalog.Artifacts[d.ArtifactID]; ok {
 			md := maven.Dependency{
 				GroupID:    a.GroupID,
 				ArtifactID: a.ArtifactID,
@@ -261,7 +272,7 @@ func injectDependencies(ctx *Context) error {
 					ArtifactID: e.ArtifactID,
 				}
 
-				ctx.Maven.Project.AddDependencyExclusion(md, me)
+				project.AddDependencyExclusion(md, me)
 			}
 		}
 	}
diff --git a/pkg/builder/runtime/main.go b/pkg/builder/runtime/main.go
index 991f548..d6f973a 100644
--- a/pkg/builder/runtime/main.go
+++ b/pkg/builder/runtime/main.go
@@ -60,32 +60,39 @@ func loadCamelCatalog(ctx *builder.Context) error {
 }
 
 func generateProject(ctx *builder.Context) error {
-	p := maven.NewProjectWithGAV("org.apache.camel.k.integration", "camel-k-integration", defaults.Version)
+	p := GenerateProjectCommon(ctx.Build.Runtime.Metadata["camel.version"], ctx.Build.Runtime.Version)
 
 	// Add all the properties from the build configuration
 	p.Properties.AddAll(ctx.Build.Properties)
 
+	ctx.Maven.Project = p
+
+	return nil
+}
+
+// GenerateProjectCommon --
+func GenerateProjectCommon(camelVersion string, runtimeVersion string) maven.Project {
+	p := maven.NewProjectWithGAV("org.apache.camel.k.integration", "camel-k-integration", defaults.Version)
+
 	p.Dependencies = make([]maven.Dependency, 0)
 	p.DependencyManagement = &maven.DependencyManagement{Dependencies: make([]maven.Dependency, 0)}
 
 	p.DependencyManagement.Dependencies = append(p.DependencyManagement.Dependencies, maven.Dependency{
 		GroupID:    "org.apache.camel",
 		ArtifactID: "camel-bom",
-		Version:    ctx.Build.Runtime.Metadata["camel.version"],
+		Version:    camelVersion,
 		Type:       "pom",
 		Scope:      "import",
 	})
 	p.DependencyManagement.Dependencies = append(p.DependencyManagement.Dependencies, maven.Dependency{
 		GroupID:    "org.apache.camel.k",
 		ArtifactID: "camel-k-runtime-bom",
-		Version:    ctx.Build.Runtime.Version,
+		Version:    runtimeVersion,
 		Type:       "pom",
 		Scope:      "import",
 	})
 
-	ctx.Maven.Project = p
-
-	return nil
+	return p
 }
 
 func computeDependencies(ctx *builder.Context) error {
@@ -93,30 +100,56 @@ func computeDependencies(ctx *builder.Context) error {
 	mc.SettingsContent = ctx.Maven.SettingsData
 	mc.LocalRepository = ctx.Build.Maven.LocalRepository
 	mc.Timeout = ctx.Build.Maven.GetTimeout().Duration
-	mc.AddArgumentf("org.apache.camel.k:camel-k-maven-plugin:%s:generate-dependency-list", ctx.Catalog.Runtime.Version)
+
+	// Compute dependencies.
+	content, err := ComputeDependenciesCommon(mc, ctx.Catalog.Runtime.Version)
+	if err != nil {
+		return err
+	}
+
+	// Process artifacts list and add it to existing artifacts.
+	artifacts := []v1.Artifact{}
+	artifacts, err = ProcessTransitiveDependencies(content, "dependencies")
+	if err != nil {
+		return err
+	}
+	ctx.Artifacts = append(ctx.Artifacts, artifacts...)
+
+	return nil
+}
+
+// ComputeDependenciesCommon --
+func ComputeDependenciesCommon(mc maven.Context, runtimeVersion string) ([]byte, error) {
+	mc.AddArgumentf("org.apache.camel.k:camel-k-maven-plugin:%s:generate-dependency-list", runtimeVersion)
 
 	if err := maven.Run(mc); err != nil {
-		return errors.Wrap(err, "failure while determining classpath")
+		return nil, errors.Wrap(err, "failure while determining classpath")
 	}
 
 	dependencies := path.Join(mc.Path, "target", "dependencies.yaml")
 	content, err := ioutil.ReadFile(dependencies)
 	if err != nil {
-		return err
+		return nil, err
 	}
 
+	return content, nil
+}
+
+// ProcessTransitiveDependencies --
+func ProcessTransitiveDependencies(content []byte, outputDir string) ([]v1.Artifact, error) {
 	cp := make(map[string][]v1.Artifact)
-	err = yaml2.Unmarshal(content, &cp)
+	err := yaml2.Unmarshal(content, &cp)
 	if err != nil {
-		return err
+		return nil, err
 	}
 
+	artifacts := []v1.Artifact{}
 	for _, e := range cp["dependencies"] {
 		_, fileName := path.Split(e.Location)
 
 		gav, err := maven.ParseGAV(e.ID)
 		if err != nil {
-			return nil
+			return nil, err
 		}
 
 		//
@@ -125,19 +158,19 @@ func computeDependencies(ctx *builder.Context) error {
 		if e.Checksum == "" {
 			chksum, err := digest.ComputeSHA1(e.Location)
 			if err != nil {
-				return err
+				return nil, err
 			}
 
 			e.Checksum = "sha1:" + chksum
 		}
 
-		ctx.Artifacts = append(ctx.Artifacts, v1.Artifact{
+		artifacts = append(artifacts, v1.Artifact{
 			ID:       e.ID,
 			Location: e.Location,
-			Target:   path.Join("dependencies", gav.GroupID+"."+fileName),
+			Target:   path.Join(outputDir, gav.GroupID+"."+fileName),
 			Checksum: e.Checksum,
 		})
 	}
 
-	return nil
+	return artifacts, nil
 }
diff --git a/pkg/cmd/inspect.go b/pkg/cmd/inspect.go
index f899c95..b10d32a 100644
--- a/pkg/cmd/inspect.go
+++ b/pkg/cmd/inspect.go
@@ -20,9 +20,13 @@ package cmd
 import (
 	"errors"
 	"fmt"
+	"os"
 	"path"
+	"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"
 	"github.com/apache/camel-k/pkg/util/camel"
@@ -32,6 +36,14 @@ import (
 	"github.com/spf13/cobra"
 )
 
+var acceptedDependencyTypes = []string{"bom", "camel", "camel-k", "camel-quarkus", "mvn", "github"}
+
+const (
+	defaultRuntimeVersion         = "1.3.0"
+	defaultCamelVersion           = "3.3.0"
+	defaultWorkspaceDirectoryName = "workspace"
+)
+
 func newCmdInspect(rootCmdOptions *RootCmdOptions) (*cobra.Command, *inspectCmdOptions) {
 	options := inspectCmdOptions{
 		RootCmdOptions: rootCmdOptions,
@@ -40,7 +52,7 @@ func newCmdInspect(rootCmdOptions *RootCmdOptions) (*cobra.Command, *inspectCmdO
 	cmd := cobra.Command{
 		Use:     "inspect [files to inspect]",
 		Short:   "Generate dependencies list the given integration files.",
-		Long:    `Compute and emit the dependencies for a list of integration files.`,
+		Long:    "Output dependencies for a list of integration files. By default this command returns the top level dependencies only.",
 		PreRunE: decode(&options),
 		RunE: func(_ *cobra.Command, args []string) error {
 			if err := options.validate(args); err != nil {
@@ -57,14 +69,24 @@ func newCmdInspect(rootCmdOptions *RootCmdOptions) (*cobra.Command, *inspectCmdO
 		},
 	}
 
+	cmd.Flags().Bool("all-dependencies", false, "Compute and output transitive dependencies.")
+	cmd.Flags().String("additional-dependencies", "", `Comma-separated list of additional top-level dependencies with the format:
+		<type>:<dependency-name>
+			where <type> is one of {`+strings.Join(acceptedDependencyTypes, "|")+`}.`)
+	cmd.Flags().String("workspace", "", "Absolute path to workspace directory. Default: <kamel-invocation-directory>/workspace")
 	cmd.Flags().StringP("output", "o", "", "Output format. One of: json|yaml")
+	cmd.Flags().String("dependencies-directory", "", "Absolute path to directory containing all dependencies. Default: <kamel-invocation-directory>/workspace/dependencies")
 
 	return &cmd, &options
 }
 
 type inspectCmdOptions struct {
 	*RootCmdOptions
-	OutputFormat string `mapstructure:"output"`
+	AllDependencies        bool   `mapstructure:"all-dependencies"`
+	OutputFormat           string `mapstructure:"output"`
+	AdditionalDependencies string `mapstructure:"additional-dependencies"`
+	Workspace              string `mapstructure:"workspace"`
+	DependenciesDirectory  string `mapstructure:"dependencies-directory"`
 }
 
 func (command *inspectCmdOptions) validate(args []string) error {
@@ -89,6 +111,41 @@ func (command *inspectCmdOptions) validate(args []string) error {
 		}
 	}
 
+	// Validate list of additional dependencies i.e. make sure that each dependency has
+	// a valid type.
+	if command.AdditionalDependencies != "" {
+		additionalDependencies := strings.Split(command.AdditionalDependencies, ",")
+
+		for _, dependency := range additionalDependencies {
+			dependencyComponents := strings.Split(dependency, ":")
+
+			TypeIsValid := false
+			for _, dependencyType := range acceptedDependencyTypes {
+				if dependencyType == dependencyComponents[0] {
+					TypeIsValid = true
+				}
+			}
+
+			if !TypeIsValid {
+				return errors.New("Unexpected type for user-provided dependency: " + dependency + ", check command usage for valid format.")
+			}
+		}
+	}
+
+	// If provided, ensure that that the dependencies directory exists.
+	if command.DependenciesDirectory != "" {
+		dependenciesDirectoryExists, err := util.DirectoryExists(command.DependenciesDirectory)
+		// Report any error.
+		if err != nil {
+			return err
+		}
+
+		// Signal file not found.
+		if !dependenciesDirectoryExists {
+			return errors.New("input file " + command.DependenciesDirectory + " file does not exist")
+		}
+	}
+
 	return nil
 }
 
@@ -107,6 +164,43 @@ func (command *inspectCmdOptions) run(args []string) error {
 		}
 	}
 
+	// Get top-level dependencies, this is the default behavior when no other options are provided.
+	dependencies, err := getTopLevelDependencies(catalog, command.OutputFormat, args)
+	if err != nil {
+		return err
+	}
+
+	// Add additional user-provided dependencies.
+	if command.AdditionalDependencies != "" {
+		additionalDependencies := strings.Split(command.AdditionalDependencies, ",")
+		for _, dependency := range additionalDependencies {
+			dependencies = append(dependencies, dependency)
+		}
+	}
+
+	// If --all-dependencies flag is set, add transitive dependencies.
+	if command.AllDependencies {
+		// Create workspace directory to hold all intermediate files.
+		workspaceDirectory, err := getWorkspaceDirectory(command)
+		if err != nil {
+			return err
+		}
+
+		// The dependencies var will contain both top level and transitive dependencies.
+		dependencies, err = getTransitiveDependencies(catalog, dependencies, workspaceDirectory)
+		if err != nil {
+			return err
+		}
+	}
+
+	for _, dep := range dependencies {
+		fmt.Printf("%v\n", dep)
+	}
+
+	return nil
+}
+
+func getTopLevelDependencies(catalog *camel.RuntimeCatalog, format string, args []string) ([]string, error) {
 	// List of top-level dependencies.
 	dependencies := strset.New()
 
@@ -114,7 +208,7 @@ func (command *inspectCmdOptions) run(args []string) error {
 	for _, source := range args {
 		data, _, err := loadContent(source, false, false)
 		if err != nil {
-			return err
+			return []string{}, err
 		}
 
 		sourceSpec := v1.SourceSpec{
@@ -129,10 +223,10 @@ func (command *inspectCmdOptions) run(args []string) error {
 		dependencies.Merge(trait.AddSourceDependencies(sourceSpec, catalog))
 	}
 
-	if command.OutputFormat != "" {
-		err := printDependencies(command.OutputFormat, dependencies)
+	if format != "" {
+		err := printDependencies(format, dependencies)
 		if err != nil {
-			return err
+			return []string{}, err
 		}
 	} else {
 		// Print output in text form.
@@ -140,8 +234,7 @@ func (command *inspectCmdOptions) run(args []string) error {
 			fmt.Printf("%v\n", dep)
 		}
 	}
-
-	return nil
+	return dependencies.List(), nil
 }
 
 func generateCatalog() (*camel.RuntimeCatalog, error) {
@@ -155,7 +248,7 @@ func generateCatalog() (*camel.RuntimeCatalog, error) {
 		Provider: v1.RuntimeProviderMain,
 	}
 	providerDependencies := []maven.Dependency{}
-	catalog, err := camel.GenerateLocalCatalog(settings, mvn, runtime, providerDependencies)
+	catalog, err := camel.GenerateCatalogCommon(settings, mvn, runtime, providerDependencies)
 	if err != nil {
 		return nil, err
 	}
@@ -182,3 +275,67 @@ func printDependencies(format string, dependecies *strset.Set) error {
 	}
 	return nil
 }
+
+func getTransitiveDependencies(
+	catalog *camel.RuntimeCatalog,
+	dependencies []string,
+	workspaceDirectory string) ([]string, error) {
+
+	mvn := v1.MavenSpec{
+		LocalRepository: "",
+	}
+
+	// Create Maven project.
+	project := runtime.GenerateProjectCommon(defaultCamelVersion, defaultRuntimeVersion)
+
+	// Inject dependencies into Maven project.
+	err := builder.InjectDependenciesCommon(&project, dependencies, catalog)
+	if err != nil {
+		return []string{}, err
+	}
+
+	// Create local Maven context.
+	mc := maven.NewContext(path.Join(workspaceDirectory, "maven"), project)
+	mc.LocalRepository = mvn.LocalRepository
+	mc.Timeout = mvn.GetTimeout().Duration
+
+	// Compute dependencies.
+	content, err := runtime.ComputeDependenciesCommon(mc, catalog.Runtime.Version)
+	if err != nil {
+		return nil, err
+	}
+
+	// Compose artifcats list.
+	artifacts := []v1.Artifact{}
+	artifacts, err = runtime.ProcessTransitiveDependencies(content, "dependencies")
+	if err != nil {
+		return nil, err
+	}
+
+	allDependencies := strset.New()
+	for _, entry := range artifacts {
+		allDependencies.Add(fmt.Sprintf("%s\n", entry.Location))
+	}
+
+	return allDependencies.List(), nil
+}
+
+func getWorkspaceDirectory(command *inspectCmdOptions) (string, error) {
+	// Path to workspace directory.
+	workspaceDirectory := command.Workspace
+	if command.Workspace == "" {
+		currentDirectory, err := os.Getwd()
+		if err != nil {
+			return "", err
+		}
+		workspaceDirectory = path.Join(currentDirectory, defaultWorkspaceDirectoryName)
+	}
+
+	// Create the workspace directory if it does not already exist.
+	err := util.CreateDirectory(workspaceDirectory)
+	if err != nil {
+		return "", err
+	}
+
+	return workspaceDirectory, nil
+}
diff --git a/pkg/util/camel/catalog.go b/pkg/util/camel/catalog.go
index d073251..2d3d5e9 100644
--- a/pkg/util/camel/catalog.go
+++ b/pkg/util/camel/catalog.go
@@ -85,11 +85,11 @@ func GenerateCatalog(
 		return nil, err
 	}
 
-	return GenerateLocalCatalog(settings, mvn, runtime, providerDependencies)
+	return GenerateCatalogCommon(settings, mvn, runtime, providerDependencies)
 }
 
-// GenerateLocalCatalog --
-func GenerateLocalCatalog(
+// GenerateCatalogCommon --
+func GenerateCatalogCommon(
 	settings string,
 	mvn v1.MavenSpec,
 	runtime v1.RuntimeSpec,
diff --git a/pkg/util/util.go b/pkg/util/util.go
index 1ecff9b..30ff77b 100644
--- a/pkg/util/util.go
+++ b/pkg/util/util.go
@@ -247,6 +247,24 @@ func DirectoryExists(directory string) (bool, error) {
 	return info.IsDir(), nil
 }
 
+// CreateDirectory --
+func CreateDirectory(directory string) error {
+	// If directory does not exist, create it.
+	directoryExists, err := DirectoryExists(directory)
+	if err != nil {
+		return err
+	}
+
+	if !directoryExists {
+		err := os.MkdirAll(directory, 0777)
+		if err != nil {
+			return err
+		}
+	}
+
+	return nil
+}
+
 // BytesMarshaller --
 type BytesMarshaller interface {
 	MarshalBytes() ([]byte, error)


[camel-k] 04/19: Remove double printing of top level dependencies.

Posted by nf...@apache.org.
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 97ed84817e6f7a02cf0c01f29fce9ad4e3c1352f
Author: Doru Bercea <gh...@ibm.com>
AuthorDate: Tue Oct 20 14:02:33 2020 -0400

    Remove double printing of top level dependencies.
---
 pkg/cmd/inspect.go | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/pkg/cmd/inspect.go b/pkg/cmd/inspect.go
index d6bae77..ee2d461 100644
--- a/pkg/cmd/inspect.go
+++ b/pkg/cmd/inspect.go
@@ -206,12 +206,8 @@ func (command *inspectCmdOptions) run(args []string) error {
 	}
 
 	// Top level dependencies are printed out.
-	if !command.AllDependencies {
-		for _, dep := range dependencies {
-			fmt.Printf("%v\n", dep)
-		}
-
-		// The dependencies var will contain both top level and transitive dependencies.
+	if command.AllDependencies {
+		// If --all-dependencies flag is set, move all transitive dependencies in the --dependencies-directory.
 		err = getTransitiveDependencies(catalog, dependencies, command)
 		if err != nil {
 			return err