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 +}