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

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


The following commit(s) were added to refs/heads/master by this push:
     new 849484e  Fix #1536: take modeline changes into account in dev mode 
(#1634)
849484e is described below

commit 849484eb3a2b8e0d90bdebd822baf14cab1ee5ff
Author: John Poth <[email protected]>
AuthorDate: Mon Jul 27 14:25:36 2020 +0200

    Fix #1536: take modeline changes into account in dev mode (#1634)
    
    * Fix #1536: take modeline changes into account in dev mode
    
    * fix test dev_mode_test
---
 e2e/common/dev_mode_test.go  |  7 +++++++
 examples/SampleModeline.java | 28 ++++++++++++++++++++++++++++
 pkg/cmd/run.go               | 15 ++++++++++++++-
 3 files changed, 49 insertions(+), 1 deletion(-)

diff --git a/e2e/common/dev_mode_test.go b/e2e/common/dev_mode_test.go
index 252a96b..6c34de7 100644
--- a/e2e/common/dev_mode_test.go
+++ b/e2e/common/dev_mode_test.go
@@ -24,6 +24,7 @@ package common
 import (
        "context"
        "io"
+       "os"
        "testing"
 
        . "github.com/apache/camel-k/e2e/support"
@@ -50,6 +51,9 @@ func TestRunDevMode(t *testing.T) {
 
                        logScanner := util.NewLogScanner(ctx, piper, 
`integration "yaml" in phase Running`, "Magicstring!", "Magicjordan!")
 
+                       args := os.Args
+                       defer func() { os.Args = args }()
+                       os.Args = []string{"kamel", "run", "-n", ns, file, 
"--dev"}
                        go kamelRun.Execute()
 
                        Eventually(logScanner.IsFound(`integration "yaml" in 
phase Running`), TestTimeoutMedium).Should(BeTrue())
@@ -74,6 +78,9 @@ func TestRunDevMode(t *testing.T) {
 
                        logScanner := util.NewLogScanner(ctx, piper, 
"Magicstring!")
 
+                       args := os.Args
+                       defer func() { os.Args = args }()
+                       os.Args = []string{"kamel", "-n", ns, "run", 
remoteFile, "--dev"}
                        go kamelRun.Execute()
 
                        Eventually(logScanner.IsFound("Magicstring!"), 
TestTimeoutMedium).Should(BeTrue())
diff --git a/examples/SampleModeline.java b/examples/SampleModeline.java
new file mode 100644
index 0000000..556eb2a
--- /dev/null
+++ b/examples/SampleModeline.java
@@ -0,0 +1,28 @@
+// camel-k: dependency=mvn:com.google.guava/guava:28.0-jre
+/*
+ *
+ * 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.
+ */
+
+import org.apache.camel.builder.RouteBuilder;
+
+public class SampleModeline extends RouteBuilder {
+  @Override
+  public void configure() throws Exception {
+         from("timer:tick")
+        .log("Hello Camels K!");
+  }
+}
\ No newline at end of file
diff --git a/pkg/cmd/run.go b/pkg/cmd/run.go
index 7d150af..deb845b 100644
--- a/pkg/cmd/run.go
+++ b/pkg/cmd/run.go
@@ -407,7 +407,20 @@ func (o *runCmdOptions) syncIntegration(c client.Client, 
sources []string, catal
                                        case <-o.Context.Done():
                                                return
                                        case <-changes:
-                                               _, err := 
o.updateIntegrationCode(c, sources, catalog)
+                                               // let's create a new command 
to parse modeline changes and update our integration
+                                               newCmd, _, err := 
createKamelWithModelineCommand(o.Context, os.Args[1:], make(map[string]bool))
+                                               if err != nil {
+                                                       fmt.Println("Unable to 
sync integration: ", err.Error())
+                                                       continue
+                                               }
+                                               newCmd.Args = o.validateArgs
+                                               newCmd.PreRunE = o.decode
+                                               newCmd.RunE = func(cmd 
*cobra.Command, args []string) error {
+                                                       _, err := 
o.updateIntegrationCode(c, sources, catalog)
+                                                       return err
+                                               }
+                                               newCmd.PostRunE = nil
+                                               err = newCmd.Execute()
                                                if err != nil {
                                                        fmt.Println("Unable to 
sync integration: ", err.Error())
                                                }

Reply via email to