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

tsato pushed a commit to branch release-1.9.x
in repository https://gitbox.apache.org/repos/asf/camel-k.git

commit 0816829fc518d282f8f4237edb62345d29040bd2
Author: Adriano Machado <unknown>
AuthorDate: Wed Jun 15 19:39:46 2022 -0400

    Fixes `kamel local run` panic on Windows
---
 pkg/cmd/util_commands.go           |  9 ++++++++-
 pkg/resources/resources_support.go | 20 +++++++++++++++-----
 2 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/pkg/cmd/util_commands.go b/pkg/cmd/util_commands.go
index 794f49e33..04a189fce 100644
--- a/pkg/cmd/util_commands.go
+++ b/pkg/cmd/util_commands.go
@@ -22,6 +22,7 @@ import (
        "fmt"
        "io"
        "os/exec"
+       "runtime"
        "strings"
 
        "github.com/apache/camel-k/pkg/util"
@@ -49,7 +50,13 @@ func assembleClasspathArgValue(properties []string, 
dependencies []string, route
        classpathContents = append(classpathContents, properties...)
        classpathContents = append(classpathContents, routes...)
        classpathContents = append(classpathContents, dependencies...)
-       return strings.Join(classpathContents, ":")
+
+       pathSeparator := ":"
+       if runtime.GOOS == "windows" {
+               pathSeparator = ";"
+       }
+
+       return strings.Join(classpathContents, pathSeparator)
 }
 
 func assembleIntegrationRunCommand(ctx context.Context, properties []string, 
dependencies []string, routes []string, propertiesDir string, stdout, stderr 
io.Writer, local bool) (*exec.Cmd, error) {
diff --git a/pkg/resources/resources_support.go 
b/pkg/resources/resources_support.go
index 46a8c36b4..167ccce13 100644
--- a/pkg/resources/resources_support.go
+++ b/pkg/resources/resources_support.go
@@ -22,6 +22,7 @@ import (
        "io/ioutil"
        "os"
        "path/filepath"
+       "runtime"
        "strings"
        "text/template"
 
@@ -46,7 +47,7 @@ func Resource(name string) ([]byte, error) {
                name = "/" + name
        }
 
-       file, err := assets.Open(name)
+       file, err := assets.Open(fixPath(name))
        if err != nil {
                return nil, errors.Wrapf(err, "cannot access resource file %s", 
name)
        }
@@ -85,7 +86,7 @@ func TemplateResource(name string, params interface{}) 
(string, error) {
 
 // DirExists tells if a directory exists and can be listed for files.
 func DirExists(dirName string) bool {
-       if _, err := assets.Open(dirName); err != nil {
+       if _, err := assets.Open(fixPath(dirName)); err != nil {
                return false
        }
        return true
@@ -103,8 +104,9 @@ func WithPrefix(pathPrefix string) ([]string, error) {
 
        var res []string
        for i := range paths {
-               if result, _ := filepath.Match(pathPrefix+"*", paths[i]); 
result {
-                       res = append(res, paths[i])
+               path := fixPath(paths[i])
+               if result, _ := filepath.Match(pathPrefix+"*", path); result {
+                       res = append(res, path)
                }
        }
 
@@ -113,7 +115,7 @@ func WithPrefix(pathPrefix string) ([]string, error) {
 
 // Resources lists all file names in the given path (starts with '/').
 func Resources(dirName string) ([]string, error) {
-       dir, err := assets.Open(dirName)
+       dir, err := assets.Open(fixPath(dirName))
        if err != nil {
                if os.IsNotExist(err) {
                        return nil, nil
@@ -146,3 +148,11 @@ func Resources(dirName string) ([]string, error) {
 
        return res, dir.Close()
 }
+
+func fixPath(path string) string {
+       if runtime.GOOS == "windows" {
+               path = strings.ReplaceAll(path, "\\", "/")
+       }
+
+       return path
+}

Reply via email to