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 9edff327323334b9e9b14063a980ba86b8fa4b9f
Author: Doru Bercea <[email protected]>
AuthorDate: Tue Nov 3 16:38:33 2020 -0500

    Factor out common code between inspect and run-local commands.
---
 pkg/cmd/inspect.go                           | 266 +-------------------------
 pkg/cmd/local_run.go                         |  77 +++-----
 pkg/cmd/{inspect.go => util_dependencies.go} | 269 ++++++++++++---------------
 3 files changed, 140 insertions(+), 472 deletions(-)

diff --git a/pkg/cmd/inspect.go b/pkg/cmd/inspect.go
index 02eed21..e524e56 100644
--- a/pkg/cmd/inspect.go
+++ b/pkg/cmd/inspect.go
@@ -19,27 +19,11 @@ package cmd
 
 import (
        "fmt"
-       "io/ioutil"
-       "os"
-       "path"
        "strings"
 
-       v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
-       "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"
-       "github.com/apache/camel-k/pkg/util/defaults"
-       "github.com/apache/camel-k/pkg/util/maven"
-       "github.com/pkg/errors"
-       "github.com/scylladb/go-set/strset"
        "github.com/spf13/cobra"
 )
 
-var acceptedDependencyTypes = []string{"bom", "camel", "camel-k", 
"camel-quarkus", "mvn", "github"}
-
-const defaultDependenciesDirectoryName = "dependencies"
-
 func newCmdInspect(rootCmdOptions *RootCmdOptions) (*cobra.Command, 
*inspectCmdOptions) {
        options := inspectCmdOptions{
                RootCmdOptions: rootCmdOptions,
@@ -84,261 +68,21 @@ type inspectCmdOptions struct {
 }
 
 func (command *inspectCmdOptions) validate(args []string) error {
-       // If no source files have been provided there is nothing to inspect.
-       if len(args) == 0 {
-               return errors.New("no integration files have been provided, 
nothing to inspect")
-       }
-
-       // Ensure source files exist.
-       for _, arg := range args {
-               // fmt.Printf("Validating file: %v\n", arg)
-               fileExists, err := util.FileExists(arg)
-
-               // Report any error.
-               if err != nil {
-                       return err
-               }
-
-               // Signal file not found.
-               if !fileExists {
-                       return errors.New("input file " + arg + " file does not 
exist")
-               }
-       }
-
-       // Validate list of additional dependencies i.e. make sure that each 
dependency has
-       // a valid type.
-       if command.AdditionalDependencies != nil {
-               for _, additionalDependency := range 
command.AdditionalDependencies {
-                       dependencyComponents := 
strings.Split(additionalDependency, ":")
-
-                       TypeIsValid := false
-                       for _, dependencyType := range acceptedDependencyTypes {
-                               if dependencyType == dependencyComponents[0] {
-                                       TypeIsValid = true
-                               }
-                       }
-
-                       if !TypeIsValid {
-                               return errors.New("Unexpected type for 
user-provided dependency: " + additionalDependency + ", check command usage for 
valid format.")
-                       }
-
-               }
-       }
-
-       return nil
+       return validateIntegrationForDependencies(args, 
command.AdditionalDependencies)
 }
 
 func (command *inspectCmdOptions) run(args []string) error {
-       // 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.
-       // Do not output these options when transitive options are enbled.
-       dependencies, err := getTopLevelDependencies(catalog, 
command.OutputFormat, args, !command.AllDependencies)
-       if err != nil {
-               return err
-       }
-
-       // Add additional user-provided dependencies.
-       if command.AdditionalDependencies != nil {
-               for _, additionalDependency := range 
command.AdditionalDependencies {
-                       dependencies = append(dependencies, 
additionalDependency)
-               }
-       }
-
-       // Top level dependencies are printed out.
-       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
-               }
-       }
-
-       return nil
-}
-
-func getTopLevelDependencies(catalog *camel.RuntimeCatalog, format string, 
args []string, printDependencies bool) ([]string, error) {
-       // List of top-level dependencies.
-       dependencies := strset.New()
-
-       // Invoke the dependency inspector code for each source file.
-       for _, source := range args {
-               data, _, err := loadContent(source, false, false)
-               if err != nil {
-                       return []string{}, err
-               }
-
-               sourceSpec := v1.SourceSpec{
-                       DataSpec: v1.DataSpec{
-                               Name:        path.Base(source),
-                               Content:     data,
-                               Compression: false,
-                       },
-               }
-
-               // Extract list of top-level dependencies.
-               dependencies.Merge(trait.AddSourceDependencies(sourceSpec, 
catalog))
-       }
-
-       if printDependencies {
-               err := outputDependencies(dependencies.List(), format)
-               if err != nil {
-                       return []string{}, err
-               }
-       }
-
-       return dependencies.List(), nil
-}
-
-func generateCatalog() (*camel.RuntimeCatalog, error) {
-       // A Camel catalog is requiref for this operatio.
-       settings := ""
-       mvn := v1.MavenSpec{
-               LocalRepository: "",
-       }
-       runtime := v1.RuntimeSpec{
-               Version:  defaults.DefaultRuntimeVersion,
-               Provider: v1.RuntimeProviderQuarkus,
-       }
-       providerDependencies := []maven.Dependency{}
-       catalog, err := camel.GenerateCatalogCommon(settings, mvn, runtime, 
providerDependencies)
-       if err != nil {
-               return nil, err
-       }
-
-       return catalog, nil
-}
-
-func getTransitiveDependencies(
-       catalog *camel.RuntimeCatalog,
-       dependencies []string,
-       command *inspectCmdOptions) error {
-
-       mvn := v1.MavenSpec{
-               LocalRepository: "",
-       }
-
-       // Create Maven project.
-       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)
-       if err != nil {
-               return err
-       }
-
-       // Create local Maven context.
-       temporaryDirectory, err := ioutil.TempDir(os.TempDir(), "maven-")
+       // Fetch dependencies.
+       dependencies, err := getDependencies(args, 
command.AdditionalDependencies, command.AllDependencies)
        if err != nil {
                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
-
-       // Make maven command less verbose.
-       mc.AdditionalArguments = append(mc.AdditionalArguments, "-q")
-
-       err = runtime.BuildQuarkusRunnerCommon(mc)
+       // Print dependencies.
+       err = outputDependencies(dependencies, command.OutputFormat)
        if err != nil {
                return err
        }
 
-       // Compute dependencies.
-       content, err := runtime.ComputeQuarkusDependenciesCommon(mc, 
catalog.Runtime.Version)
-       if err != nil {
-               return err
-       }
-
-       // Compose artifacts list.
-       artifacts := []v1.Artifact{}
-       artifacts, err = runtime.ProcessQuarkusTransitiveDependencies(mc, 
content)
-       if err != nil {
-               return err
-       }
-
-       // Dump dependencies in the dependencies directory and construct the 
list of dependencies.
-       transitiveDependencies := []string{}
-       for _, entry := range artifacts {
-               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)
-       if err != nil {
-               return err
-       }
-
-       return nil
-}
-
-func outputDependencies(dependencies []string, format string) error {
-       if format != "" {
-               err := printDependencies(format, dependencies)
-               if err != nil {
-                       return err
-               }
-       } else {
-               // 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
-}
-
-func getWorkingDirectory() (string, error) {
-       currentDirectory, err := os.Getwd()
-       if err != nil {
-               return "", err
-       }
-
-       return currentDirectory, nil
-}
-
-func createCamelCatalog() (*camel.RuntimeCatalog, error) {
-       // Attempt to reuse existing Camel catalog if one is present.
-       catalog, err := camel.DefaultCatalog()
-       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/local_run.go b/pkg/cmd/local_run.go
index 70af154..8a0bdb2 100644
--- a/pkg/cmd/local_run.go
+++ b/pkg/cmd/local_run.go
@@ -18,15 +18,9 @@ limitations under the License.
 package cmd
 
 import (
-       "errors"
        "fmt"
-       "path"
+       "strings"
 
-       v1 "github.com/apache/camel-k/pkg/apis/camel/v1"
-       "github.com/apache/camel-k/pkg/trait"
-       "github.com/apache/camel-k/pkg/util"
-       "github.com/apache/camel-k/pkg/util/camel"
-       "github.com/scylladb/go-set/strset"
        "github.com/spf13/cobra"
 )
 
@@ -55,76 +49,47 @@ func newCmdLocalRun(rootCmdOptions *RootCmdOptions) 
(*cobra.Command, *localRunCm
                },
        }
 
-       cmd.Flags().StringP("properties", "p", "", "Output format. One of: 
json|yaml")
+       cmd.Flags().StringArrayP("properties-file", "p", nil, "File containing 
the integration properties.")
+       cmd.Flags().StringArrayP("dependency", "d", nil, `Additional top-level 
dependency with the format:
+<type>:<dependency-name>
+where <type> is one of {`+strings.Join(acceptedDependencyTypes, "|")+`}.`)
 
        return &cmd, &options
 }
 
 type localRunCmdOptions struct {
        *RootCmdOptions
-       Properties string `mapstructure:"properties"`
+       PropertiesFiles        []string `mapstructure:"properties"`
+       AdditionalDependencies []string `mapstructure:"dependencies"`
 }
 
 func (command *localRunCmdOptions) validate(args []string) error {
-       // If no source files have been provided there is nothing to inspect.
-       if len(args) == 0 {
-               return errors.New("no integration files have been provided, 
nothing to inspect")
+       // Validate additional dependencies specified by the user.
+       err := validateIntegrationForDependencies(args, 
command.AdditionalDependencies)
+       if err != nil {
+               return err
        }
 
-       // Ensure source files exist.
-       for _, arg := range args {
-               // fmt.Printf("Validating file: %v\n", arg)
-               fileExists, err := util.FileExists(arg)
-
-               // Report any error.
-               if err != nil {
-                       return err
-               }
-
-               // Signal file not found.
-               if !fileExists {
-                       return errors.New("input file " + arg + " file does not 
exist")
-               }
+       // Validate properties file.
+       err = validateFiles(command.PropertiesFiles)
+       if err != nil {
+               return nil
        }
 
        return nil
 }
 
 func (command *localRunCmdOptions) run(args []string) error {
-       // Attempt to reuse existing Camel catalog if one is present.
-       catalog, err := camel.MainCatalog()
+       // Fetch dependencies.
+       dependencies, err := getDependencies(args, 
command.AdditionalDependencies, true)
        if err != nil {
                return err
        }
 
-       // Generate catalog if one was not found.
-       if catalog == nil {
-               catalog, err = generateCatalog()
-               if err != nil {
-                       return err
-               }
-       }
-
-       // List of top-level dependencies.
-       dependencies := strset.New()
-
-       // Invoke the dependency inspector code for each source file.
-       for _, source := range args {
-               data, _, err := loadContent(source, false, false)
-               if err != nil {
-                       return err
-               }
-
-               sourceSpec := v1.SourceSpec{
-                       DataSpec: v1.DataSpec{
-                               Name:        path.Base(source),
-                               Content:     data,
-                               Compression: false,
-                       },
-               }
-
-               // Extract list of top-level dependencies.
-               dependencies.Merge(trait.AddSourceDependencies(sourceSpec, 
catalog))
+       // Print dependencies.
+       err = outputDependencies(dependencies, "")
+       if err != nil {
+               return err
        }
 
        return nil
diff --git a/pkg/cmd/inspect.go b/pkg/cmd/util_dependencies.go
similarity index 64%
copy from pkg/cmd/inspect.go
copy to pkg/cmd/util_dependencies.go
index 02eed21..49d0d07 100644
--- a/pkg/cmd/inspect.go
+++ b/pkg/cmd/util_dependencies.go
@@ -33,132 +33,41 @@ import (
        "github.com/apache/camel-k/pkg/util/maven"
        "github.com/pkg/errors"
        "github.com/scylladb/go-set/strset"
-       "github.com/spf13/cobra"
 )
 
 var acceptedDependencyTypes = []string{"bom", "camel", "camel-k", 
"camel-quarkus", "mvn", "github"}
 
 const defaultDependenciesDirectoryName = "dependencies"
 
-func newCmdInspect(rootCmdOptions *RootCmdOptions) (*cobra.Command, 
*inspectCmdOptions) {
-       options := inspectCmdOptions{
-               RootCmdOptions: rootCmdOptions,
-       }
-
-       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
-top level dependencies only. When --all-dependencies is enabled, the 
transitive dependencies
-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 {
-                               return err
-                       }
-                       if err := options.run(args); err != nil {
-                               fmt.Println(err.Error())
-                       }
-
-                       return nil
-               },
-               Annotations: map[string]string{
-                       offlineCommandLabel: "true",
-               },
-       }
-
-       cmd.Flags().Bool("all-dependencies", false, "Compute transitive 
dependencies and move them to directory pointed to by the 
--dependencies-directory flag.")
-       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().StringP("output", "o", "", "Output format. One of: 
json|yaml")
-
-       return &cmd, &options
-}
-
-type inspectCmdOptions struct {
-       *RootCmdOptions
-       AllDependencies        bool     `mapstructure:"all-dependencies"`
-       OutputFormat           string   `mapstructure:"output"`
-       AdditionalDependencies []string `mapstructure:"dependencies"`
-}
-
-func (command *inspectCmdOptions) validate(args []string) error {
-       // If no source files have been provided there is nothing to inspect.
-       if len(args) == 0 {
-               return errors.New("no integration files have been provided, 
nothing to inspect")
-       }
-
-       // Ensure source files exist.
-       for _, arg := range args {
-               // fmt.Printf("Validating file: %v\n", arg)
-               fileExists, err := util.FileExists(arg)
-
-               // Report any error.
-               if err != nil {
-                       return err
-               }
-
-               // Signal file not found.
-               if !fileExists {
-                       return errors.New("input file " + arg + " file does not 
exist")
-               }
-       }
-
-       // Validate list of additional dependencies i.e. make sure that each 
dependency has
-       // a valid type.
-       if command.AdditionalDependencies != nil {
-               for _, additionalDependency := range 
command.AdditionalDependencies {
-                       dependencyComponents := 
strings.Split(additionalDependency, ":")
-
-                       TypeIsValid := false
-                       for _, dependencyType := range acceptedDependencyTypes {
-                               if dependencyType == dependencyComponents[0] {
-                                       TypeIsValid = true
-                               }
-                       }
-
-                       if !TypeIsValid {
-                               return errors.New("Unexpected type for 
user-provided dependency: " + additionalDependency + ", check command usage for 
valid format.")
-                       }
-
-               }
-       }
-
-       return nil
-}
-
-func (command *inspectCmdOptions) run(args []string) error {
+func getDependencies(args []string, additionalDependencies []string, 
allDependencies bool) ([]string, error) {
        // 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.
-       // Do not output these options when transitive options are enbled.
-       dependencies, err := getTopLevelDependencies(catalog, 
command.OutputFormat, args, !command.AllDependencies)
+       // Get top-level dependencies.
+       dependencies, err := getTopLevelDependencies(catalog, args)
        if err != nil {
-               return err
+               return nil, err
        }
 
        // Add additional user-provided dependencies.
-       if command.AdditionalDependencies != nil {
-               for _, additionalDependency := range 
command.AdditionalDependencies {
+       if additionalDependencies != nil {
+               for _, additionalDependency := range additionalDependencies {
                        dependencies = append(dependencies, 
additionalDependency)
                }
        }
 
-       // Top level dependencies are printed out.
-       if command.AllDependencies {
-               // If --all-dependencies flag is set, move all transitive 
dependencies in the --dependencies-directory.
-               err = getTransitiveDependencies(catalog, dependencies, command)
+       // Compute transitive dependencies.
+       if allDependencies {
+               dependencies, err = getTransitiveDependencies(catalog, 
dependencies)
                if err != nil {
-                       return err
+                       return nil, err
                }
        }
 
-       return nil
+       return dependencies, nil
 }
 
-func getTopLevelDependencies(catalog *camel.RuntimeCatalog, format string, 
args []string, printDependencies bool) ([]string, error) {
+func getTopLevelDependencies(catalog *camel.RuntimeCatalog, args []string) 
([]string, error) {
        // List of top-level dependencies.
        dependencies := strset.New()
 
@@ -181,39 +90,12 @@ func getTopLevelDependencies(catalog 
*camel.RuntimeCatalog, format string, args
                dependencies.Merge(trait.AddSourceDependencies(sourceSpec, 
catalog))
        }
 
-       if printDependencies {
-               err := outputDependencies(dependencies.List(), format)
-               if err != nil {
-                       return []string{}, err
-               }
-       }
-
        return dependencies.List(), nil
 }
 
-func generateCatalog() (*camel.RuntimeCatalog, error) {
-       // A Camel catalog is requiref for this operatio.
-       settings := ""
-       mvn := v1.MavenSpec{
-               LocalRepository: "",
-       }
-       runtime := v1.RuntimeSpec{
-               Version:  defaults.DefaultRuntimeVersion,
-               Provider: v1.RuntimeProviderQuarkus,
-       }
-       providerDependencies := []maven.Dependency{}
-       catalog, err := camel.GenerateCatalogCommon(settings, mvn, runtime, 
providerDependencies)
-       if err != nil {
-               return nil, err
-       }
-
-       return catalog, nil
-}
-
 func getTransitiveDependencies(
        catalog *camel.RuntimeCatalog,
-       dependencies []string,
-       command *inspectCmdOptions) error {
+       dependencies []string) ([]string, error) {
 
        mvn := v1.MavenSpec{
                LocalRepository: "",
@@ -227,13 +109,13 @@ func getTransitiveDependencies(
        // Inject dependencies into Maven project.
        err := camel.ManageIntegrationDependencies(&project, dependencies, 
catalog)
        if err != nil {
-               return err
+               return nil, err
        }
 
        // Create local Maven context.
        temporaryDirectory, err := ioutil.TempDir(os.TempDir(), "maven-")
        if err != nil {
-               return err
+               return nil, err
        }
 
        // Maven local context to be used for generating the transitive 
dependencies.
@@ -246,20 +128,20 @@ func getTransitiveDependencies(
 
        err = runtime.BuildQuarkusRunnerCommon(mc)
        if err != nil {
-               return err
+               return nil, err
        }
 
        // Compute dependencies.
        content, err := runtime.ComputeQuarkusDependenciesCommon(mc, 
catalog.Runtime.Version)
        if err != nil {
-               return err
+               return nil, err
        }
 
        // Compose artifacts list.
        artifacts := []v1.Artifact{}
        artifacts, err = runtime.ProcessQuarkusTransitiveDependencies(mc, 
content)
        if err != nil {
-               return err
+               return nil, err
        }
 
        // Dump dependencies in the dependencies directory and construct the 
list of dependencies.
@@ -271,13 +153,44 @@ func getTransitiveDependencies(
        // 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)
+       return transitiveDependencies, nil
+}
+
+func generateCatalog() (*camel.RuntimeCatalog, error) {
+       // A Camel catalog is requiref for this operatio.
+       settings := ""
+       mvn := v1.MavenSpec{
+               LocalRepository: "",
+       }
+       runtime := v1.RuntimeSpec{
+               Version:  defaults.DefaultRuntimeVersion,
+               Provider: v1.RuntimeProviderQuarkus,
+       }
+       providerDependencies := []maven.Dependency{}
+       catalog, err := camel.GenerateCatalogCommon(settings, mvn, runtime, 
providerDependencies)
        if err != nil {
-               return err
+               return nil, err
        }
 
-       return nil
+       return catalog, nil
+}
+
+func createCamelCatalog() (*camel.RuntimeCatalog, error) {
+       // Attempt to reuse existing Camel catalog if one is present.
+       catalog, err := camel.DefaultCatalog()
+       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
 }
 
 func outputDependencies(dependencies []string, format string) error {
@@ -316,29 +229,75 @@ func printDependencies(format string, dependecies 
[]string) error {
        return nil
 }
 
-func getWorkingDirectory() (string, error) {
-       currentDirectory, err := os.Getwd()
+func validateFile(file string) error {
+       fileExists, err := util.FileExists(file)
+
+       // Report any error.
        if err != nil {
-               return "", err
+               return err
        }
 
-       return currentDirectory, nil
+       // Signal file not found.
+       if !fileExists {
+               return errors.New("File " + file + " file does not exist")
+       }
+
+       return nil
 }
 
-func createCamelCatalog() (*camel.RuntimeCatalog, error) {
-       // Attempt to reuse existing Camel catalog if one is present.
-       catalog, err := camel.DefaultCatalog()
-       if err != nil {
-               return nil, err
+func validateFiles(args []string) error {
+       // Ensure source files exist.
+       for _, arg := range args {
+               err := validateFile(arg)
+               if err != nil {
+                       return nil
+               }
        }
 
-       // Generate catalog if one was not found.
-       if catalog == nil {
-               catalog, err = generateCatalog()
-               if err != nil {
-                       return nil, err
+       return nil
+}
+
+func validateAdditionalDependencies(additionalDependencies []string) error {
+       // Validate list of additional dependencies i.e. make sure that each 
dependency has
+       // a valid type.
+       if additionalDependencies != nil {
+               for _, additionalDependency := range additionalDependencies {
+                       dependencyComponents := 
strings.Split(additionalDependency, ":")
+
+                       TypeIsValid := false
+                       for _, dependencyType := range acceptedDependencyTypes {
+                               if dependencyType == dependencyComponents[0] {
+                                       TypeIsValid = true
+                               }
+                       }
+
+                       if !TypeIsValid {
+                               return errors.New("Unexpected type for 
user-provided dependency: " + additionalDependency + ", check command usage for 
valid format.")
+                       }
+
                }
        }
 
-       return catalog, nil
+       return nil
+}
+
+func validateIntegrationForDependencies(args []string, additionalDependencies 
[]string) error {
+       // If no source files have been provided there is nothing to inspect.
+       if len(args) == 0 {
+               return errors.New("no integration files have been provided")
+       }
+
+       // Validate integration files.
+       err := validateFiles(args)
+       if err != nil {
+               return nil
+       }
+
+       // Validate additional dependencies specified by the user.
+       err = validateAdditionalDependencies(additionalDependencies)
+       if err != nil {
+               return err
+       }
+
+       return nil
 }

Reply via email to