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

Reply via email to