You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ma...@apache.org on 2022/12/13 17:54:25 UTC

[camel-karavan] branch main updated (6a1e19f -> 3448b53)

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

marat pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git


    from 6a1e19f  Fix #559
     new e167f8d  Refactor run functions
     new 339b844  Refactor run functions
     new 3448b53  fix #560

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 karavan-vscode/icons/dark/rocket.svg               |  69 ++++++++++++++++
 karavan-vscode/icons/dark/wand.svg                 |  85 +++++++++++++++++++
 karavan-vscode/icons/light/rocket.svg              |   1 +
 karavan-vscode/icons/light/wand.svg                |   1 +
 karavan-vscode/icons/run-jbang.png                 | Bin 0 -> 11967 bytes
 karavan-vscode/package.json                        |  54 ++++++------
 karavan-vscode/src/designerView.ts                 |  22 +----
 karavan-vscode/src/exec.ts                         |  25 ++++++
 karavan-vscode/src/extension.ts                    |  27 +++---
 karavan-vscode/src/jbang.ts                        |  91 ++-------------------
 .../Karavan.java => karavan-vscode/src/maven.ts    |  21 +++--
 karavan-vscode/src/utils.ts                        |  29 +++++++
 12 files changed, 276 insertions(+), 149 deletions(-)
 create mode 100644 karavan-vscode/icons/dark/rocket.svg
 create mode 100644 karavan-vscode/icons/dark/wand.svg
 create mode 100644 karavan-vscode/icons/light/rocket.svg
 create mode 100644 karavan-vscode/icons/light/wand.svg
 create mode 100644 karavan-vscode/icons/run-jbang.png
 copy karavan-operator/src/main/java/org/apache/camel/karavan/operator/spec/Karavan.java => karavan-vscode/src/maven.ts (57%)


[camel-karavan] 03/03: fix #560

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

marat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git

commit 3448b53ee83f3170d3a6a78011bd3b6dcc9f2c5b
Author: Marat Gubaidullin <ma...@gmail.com>
AuthorDate: Tue Dec 13 12:53:44 2022 -0500

    fix #560
---
 karavan-vscode/icons/dark/rocket.svg  |  69 +++++++++++++++++++++++++++
 karavan-vscode/icons/dark/wand.svg    |  85 ++++++++++++++++++++++++++++++++++
 karavan-vscode/icons/light/rocket.svg |   1 +
 karavan-vscode/icons/light/wand.svg   |   1 +
 karavan-vscode/icons/run-jbang.png    | Bin 0 -> 11967 bytes
 karavan-vscode/package.json           |  48 ++++++++++++++-----
 karavan-vscode/src/designerView.ts    |  22 +--------
 karavan-vscode/src/exec.ts            |  12 +++++
 karavan-vscode/src/extension.ts       |  25 ++++++----
 karavan-vscode/src/jbang.ts           |   9 ++--
 karavan-vscode/src/maven.ts           |   1 +
 11 files changed, 226 insertions(+), 47 deletions(-)

diff --git a/karavan-vscode/icons/dark/rocket.svg b/karavan-vscode/icons/dark/rocket.svg
new file mode 100644
index 0000000..c2d6a73
--- /dev/null
+++ b/karavan-vscode/icons/dark/rocket.svg
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   width="32px"
+   height="32px"
+   viewBox="0 0 32 32"
+   id="icon"
+   version="1.1"
+   sodipodi:docname="rocket-svgrepo-com.svg"
+   inkscape:version="1.1.2 (b8e25be8, 2022-02-05)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:dc="http://purl.org/dc/elements/1.1/">
+  <sodipodi:namedview
+     id="namedview836"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     showgrid="false"
+     inkscape:zoom="22.46875"
+     inkscape:cx="0.89012517"
+     inkscape:cy="16.534075"
+     inkscape:window-width="2049"
+     inkscape:window-height="969"
+     inkscape:window-x="78"
+     inkscape:window-y="25"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="icon" />
+  <defs
+     id="defs826">
+    <style
+       id="style824">.cls-1{fill:none;}</style>
+  </defs>
+  <title
+     id="title828">rocket</title>
+  <rect
+     x="6.34"
+     y="19"
+     width="11.31"
+     height="2"
+     transform="translate(-10.63 14.34) rotate(-45)"
+     id="rect830"
+     style="fill:#c5c5c5;fill-opacity:1" />
+  <path
+     d="M17,30a1,1,0,0,1-.37-.07,1,1,0,0,1-.62-.79l-1-7,2-.28.75,5.27L21,24.52V17a1,1,0,0,1,.29-.71l4.07-4.07A8.94,8.94,0,0,0,28,5.86V4H26.14a8.94,8.94,0,0,0-6.36,2.64l-4.07,4.07A1,1,0,0,1,15,11H7.48L4.87,14.26l5.27.75-.28,2-7-1a1,1,0,0,1-.79-.62,1,1,0,0,1,.15-1l4-5A1,1,0,0,1,7,9h7.59l3.77-3.78A10.92,10.92,0,0,1,26.14,2H28a2,2,0,0,1,2,2V5.86a10.92,10.92,0,0,1-3.22,7.78L23,17.41V25a1,1,0,0,1-.38.78l-5,4A1,1,0,0,1,17,30Z"
+     id="path832"
+     style="fill:#c5c5c5;fill-opacity:1" />
+  <rect
+     id="_Transparent_Rectangle_"
+     data-name="&lt;Transparent Rectangle&gt;"
+     class="cls-1"
+     width="32"
+     height="32" />
+  <metadata
+     id="metadata918">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title>rocket</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+</svg>
diff --git a/karavan-vscode/icons/dark/wand.svg b/karavan-vscode/icons/dark/wand.svg
new file mode 100644
index 0000000..699be39
--- /dev/null
+++ b/karavan-vscode/icons/dark/wand.svg
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   width="32px"
+   height="32px"
+   viewBox="0 0 32 32"
+   id="icon"
+   version="1.1"
+   sodipodi:docname="wand.svg"
+   inkscape:version="1.1.2 (b8e25be8, 2022-02-05)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:dc="http://purl.org/dc/elements/1.1/">
+  <sodipodi:namedview
+     id="namedview840"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     showgrid="false"
+     inkscape:zoom="22.46875"
+     inkscape:cx="9.8581363"
+     inkscape:cy="16.534075"
+     inkscape:window-width="2077"
+     inkscape:window-height="969"
+     inkscape:window-x="74"
+     inkscape:window-y="25"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="icon" />
+  <defs
+     id="defs826">
+    <style
+       id="style824">.cls-1{fill:none;}</style>
+  </defs>
+  <title
+     id="title828">magic-wand</title>
+  <path
+     d="M29.4141,24,12,6.5859a2.0476,2.0476,0,0,0-2.8281,0l-2.586,2.586a2.0021,2.0021,0,0,0,0,2.8281L23.999,29.4141a2.0024,2.0024,0,0,0,2.8281,0l2.587-2.5865a1.9993,1.9993,0,0,0,0-2.8281ZM8,10.5859,10.5859,8l5,5-2.5866,2.5869-5-5ZM25.4131,28l-11-10.999L17,14.4141l11,11Z"
+     id="path830"
+     style="fill:#c5c5c5;fill-opacity:1" />
+  <rect
+     x="2.5858"
+     y="14.5858"
+     width="2.8284"
+     height="2.8284"
+     transform="translate(-10.1421 7.5147) rotate(-45)"
+     id="rect832"
+     style="fill:#c5c5c5;fill-opacity:1" />
+  <rect
+     x="14.5858"
+     y="2.5858"
+     width="2.8284"
+     height="2.8284"
+     transform="translate(1.8579 12.4853) rotate(-45)"
+     id="rect834"
+     style="fill:#c5c5c5;fill-opacity:1" />
+  <rect
+     x="2.5858"
+     y="2.5858"
+     width="2.8284"
+     height="2.8284"
+     transform="translate(-1.6569 4) rotate(-45)"
+     id="rect836"
+     style="fill:#c5c5c5;fill-opacity:1" />
+  <rect
+     id="_Transparent_Rectangle_"
+     data-name="&lt;Transparent Rectangle&gt;"
+     class="cls-1"
+     width="32"
+     height="32" />
+  <metadata
+     id="metadata922">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:title>magic-wand</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+</svg>
diff --git a/karavan-vscode/icons/light/rocket.svg b/karavan-vscode/icons/light/rocket.svg
new file mode 100644
index 0000000..2d3b022
--- /dev/null
+++ b/karavan-vscode/icons/light/rocket.svg
@@ -0,0 +1 @@
+<svg width="32px" height="32px" viewBox="0 0 32 32" id="icon" xmlns="http://www.w3.org/2000/svg"><defs><style>.cls-1{fill:none;}</style></defs><title>rocket</title><rect x="6.34" y="19" width="11.31" height="2" transform="translate(-10.63 14.34) rotate(-45)"/><path d="M17,30a1,1,0,0,1-.37-.07,1,1,0,0,1-.62-.79l-1-7,2-.28.75,5.27L21,24.52V17a1,1,0,0,1,.29-.71l4.07-4.07A8.94,8.94,0,0,0,28,5.86V4H26.14a8.94,8.94,0,0,0-6.36,2.64l-4.07,4.07A1,1,0,0,1,15,11H7.48L4.87,14.26l5.27.75-.28,2-7-1a1, [...]
\ No newline at end of file
diff --git a/karavan-vscode/icons/light/wand.svg b/karavan-vscode/icons/light/wand.svg
new file mode 100644
index 0000000..2afc839
--- /dev/null
+++ b/karavan-vscode/icons/light/wand.svg
@@ -0,0 +1 @@
+<svg width="32px" height="32px" viewBox="0 0 32 32" id="icon" xmlns="http://www.w3.org/2000/svg"><defs><style>.cls-1{fill:none;}</style></defs><title>magic-wand--filled</title><path d="M29.4141,24,12,6.5859a2.0476,2.0476,0,0,0-2.8281,0l-2.586,2.586a2.0021,2.0021,0,0,0,0,2.8281L23.999,29.4141a2.0024,2.0024,0,0,0,2.8281,0l2.587-2.5865a1.9993,1.9993,0,0,0,0-2.8281ZM8,10.5859,10.5859,8l5,5-2.5866,2.5869-5-5Z"/><rect x="2.5858" y="14.5858" width="2.8284" height="2.8284" transform="translate(- [...]
\ No newline at end of file
diff --git a/karavan-vscode/icons/run-jbang.png b/karavan-vscode/icons/run-jbang.png
new file mode 100644
index 0000000..32cbce4
Binary files /dev/null and b/karavan-vscode/icons/run-jbang.png differ
diff --git a/karavan-vscode/package.json b/karavan-vscode/package.json
index 72e3d35..a97e674 100644
--- a/karavan-vscode/package.json
+++ b/karavan-vscode/package.json
@@ -45,7 +45,8 @@
     "onCommand:karavan.deploy",
     "onCommand:karavan.open",
     "onCommand:karavan.open-file",
-    "onCommand:karavan.jbang-run-project",
+    "onCommand:karavan.run-project-jbang",
+    "onCommand:karavan.run-project-runtime",
     "onCommand:karavan.jbang-export",
     "onCommand:karavan.generate-rest",
     "onCommand:karavan.download-image",
@@ -314,8 +315,8 @@
         "command": "karavan.open",
         "title": "Karavan: Open",
         "icon": {
-          "light": "./icons/karavan.svg",
-          "dark": "./icons/karavan.svg"
+          "light": "./icons/light/wand.svg",
+          "dark": "./icons/dark/wand.svg"
         }
       },
       {
@@ -323,8 +324,16 @@
         "title": "Karavan: Open editor"
       },
       {
-        "command": "karavan.jbang-run-project",
-        "title": "Karavan: Run",
+        "command": "karavan.run-project-jbang",
+        "title": "Karavan: Jbang run",
+        "icon": {
+          "light": "./icons/light/rocket.svg",
+          "dark": "./icons/dark/rocket.svg"
+        }
+      },
+      {
+        "command": "karavan.run-project-runtime",
+        "title": "Karavan: Runtime run",
         "icon": "$(run)"
       },
       {
@@ -391,7 +400,12 @@
           "group": "karavan@4"
         },
         {
-          "command": "karavan.jbang-run-project",
+          "command": "karavan.run-project-jbang",
+          "when": "explorerResourceIsFolder || explorerResourceIsRoot",
+          "group": "karavan@5"
+        },
+        {
+          "command": "karavan.run-project-runtime",
           "when": "explorerResourceIsFolder || explorerResourceIsRoot",
           "group": "karavan@6"
         },
@@ -418,32 +432,42 @@
           "group": "navigation@1"
         },
         {
-          "command": "karavan.jbang-run-project",
+          "command": "karavan.run-project-jbang",
           "when": "resourceFilename =~ /.camel.yaml$/ || karavan:loaded",
-          "group": "navigation@2"
+          "group": "navigation@4"
+        },
+        {
+          "command": "karavan.run-project-runtime",
+          "when": "resourceFilename =~ /.camel.yaml$/ || karavan:loaded",
+          "group": "navigation@5"
         },
         {
           "command": "karavan.download-image",
           "when": "karavan:loaded",
-          "group": "navigation@3"
+          "group": "navigation@10"
         }
       ],
       "view/title": [
         {
-          "command": "karavan.jbang-run-project",
+          "command": "karavan.run-project-jbang",
           "when": "view == integrations",
           "group": "navigation@1"
         },
         {
-          "command": "karavan.deploy",
+          "command": "karavan.run-project-runtime",
           "when": "view == integrations",
           "group": "navigation@2"
         },
         {
-          "command": "karavan.jbang-export",
+          "command": "karavan.deploy",
           "when": "view == integrations",
           "group": "navigation@3"
         },
+        {
+          "command": "karavan.jbang-export",
+          "when": "view == integrations",
+          "group": "navigation@4"
+        },
         {
           "command": "integrations.refresh",
           "when": "view == integrations",
diff --git a/karavan-vscode/src/designerView.ts b/karavan-vscode/src/designerView.ts
index 8aaf4fe..541ce27 100644
--- a/karavan-vscode/src/designerView.ts
+++ b/karavan-vscode/src/designerView.ts
@@ -24,14 +24,12 @@ import { getWebviewContent } from "./webviewContent";
 
 const KARAVAN_LOADED = "karavan:loaded";
 const KARAVAN_PANELS: Map<string, WebviewPanel> = new Map<string, WebviewPanel>();
-const extension = '.properties';
 
 export class DesignerView {
 
     constructor(private context: ExtensionContext, private rootPath?: string) {
 
     }
-
     karavanOpen(fullPath: string, tab?: string) {
         utils.readFile(path.resolve(fullPath)).then(readData => {
             const yaml = Buffer.from(readData).toString('utf8');
@@ -47,25 +45,6 @@ export class DesignerView {
         })
     }
 
-    jbangRun(fullPath: string) {
-        if (fullPath.startsWith('webview-panel/webview')) {
-            const filename = this.getFilenameFromWebView();
-            jbang.camelJbangRun(filename);
-        } else {
-            utils.readFile(path.resolve(fullPath)).then(readData => {
-                const yaml = Buffer.from(readData).toString('utf8');
-                const relativePath = utils.getRalativePath(fullPath);
-                const filename = path.basename(fullPath);
-                const integration = utils.parceYaml(filename, yaml);
-                if (integration[0] && utils.getRoot() !== undefined) {
-                    jbang.camelJbangRun(relativePath);
-                } else {
-                    window.showErrorMessage("File is not Camel Integration!")
-                }
-            });
-        }
-    }
-
     getFilenameFromWebView() {
         const filename = Array.from(KARAVAN_PANELS.entries()).filter(({ 1: v }) => v.active).map(([k]) => k)[0];
         if (filename && utils.getRoot() !== undefined) {
@@ -145,6 +124,7 @@ export class DesignerView {
             // Handle close event
             panel.onDidDispose(() => {
                 KARAVAN_PANELS.delete(relativePath);
+                commands.executeCommand("setContext", KARAVAN_LOADED, false);
             }, null, this.context.subscriptions);
 
             // Handle reopen
diff --git a/karavan-vscode/src/exec.ts b/karavan-vscode/src/exec.ts
index afc7b29..ef1fce4 100644
--- a/karavan-vscode/src/exec.ts
+++ b/karavan-vscode/src/exec.ts
@@ -14,6 +14,8 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+import * as utils from "./utils";
+import * as jbang from "./jbang";
 import * as shell from 'shelljs';
 import { window, Terminal, ThemeIcon } from "vscode";
 
@@ -40,4 +42,14 @@ export function execTerminalCommand(terminalId: string, command: string, env?: {
     TERMINALS.set(terminalId, terminal);
     terminal.show();
     terminal.sendText(command);
+}
+
+export async function runWithRuntime(fullPath: string, run?: boolean) {
+    let command = jbang.createExportCommand(fullPath);
+    if (run) {
+        const runtime = await utils.getRuntime();
+        const mvn = runtime === 'quarkus' ? "quarkus:dev" : "spring-boot:run";
+        command = command.concat(" && mvn clean ").concat(mvn).concat(" -f ").concat(fullPath);
+    }
+    execTerminalCommand("runtime-run", command);
 }
\ No newline at end of file
diff --git a/karavan-vscode/src/extension.ts b/karavan-vscode/src/extension.ts
index 63a579e..4184276 100644
--- a/karavan-vscode/src/extension.ts
+++ b/karavan-vscode/src/extension.ts
@@ -22,6 +22,7 @@ import { selectFileName, inputFileName, OpenApiView, OpenApiItem } from "./opena
 import * as path from "path";
 import * as jbang from "./jbang";
 import * as utils from "./utils";
+import * as exec from "./exec";
 
 const KARAVAN_LOADED = "karavan:loaded";
 
@@ -99,7 +100,7 @@ export function activate(context: ExtensionContext) {
 
     // Export project
     const exportCommand = commands.registerCommand("karavan.jbang-export", (...args: any[]) => {
-        exportProject(rootPath);
+        exportAndRunProject(rootPath);
     });
     context.subscriptions.push(exportCommand);
 
@@ -109,18 +110,24 @@ export function activate(context: ExtensionContext) {
     });
     context.subscriptions.push(deployCommand);
 
-    // Run project
-    const runProjectCommand = commands.registerCommand("karavan.jbang-run-project", (...args: any[]) => {
+    // Run project with jbang
+    const runJbang = commands.registerCommand("karavan.run-project-jbang", (...args: any[]) => {
+        jbang.camelJbangRun();        
+    });
+    context.subscriptions.push(runJbang);
+
+    // Run project with runtime
+    const runRuntime = commands.registerCommand("karavan.run-project-runtime", (...args: any[]) => {
         utils.getProperties(rootPath).then(properties => {
             if (properties.length > 0){
-                exportProject(rootPath, true);
+                exportAndRunProject(rootPath, true);
             } else {
                 window.showErrorMessage("No runtime configured! Create application!")
             }
         })
         
     });
-    context.subscriptions.push(runProjectCommand);
+    context.subscriptions.push(runRuntime);
 
     // Generate REST API from OpenAPI specification command
     const generateOptions = ["Create new CRD", "Create new YAML", "Add to existing file"];
@@ -149,14 +156,14 @@ export function activate(context: ExtensionContext) {
 }
 
 /**
- * export into folder
+ * export into folder and optionally run
  */
-export async function exportProject(rootPath?: string, run?: boolean) {
+export async function exportAndRunProject(rootPath?: string, run?: boolean) {
     utils.getExportFolder()
         .then(folder => {
             if (folder){
                 const fullPath = rootPath + path.sep + folder;
-                jbang.camelJbangExport(fullPath, run);
+                exec.runWithRuntime(fullPath, run);
             } else {
                 window.showInputBox({
                     title: "Export project",
@@ -173,7 +180,7 @@ export async function exportProject(rootPath?: string, run?: boolean) {
                 }).then(folder => {
                     if (folder && rootPath) {
                         const fullPath = rootPath + path.sep + folder;
-                        jbang.camelJbangExport(fullPath, run);
+                        exec.runWithRuntime(fullPath, run);
                     }
                 });
             }
diff --git a/karavan-vscode/src/jbang.ts b/karavan-vscode/src/jbang.ts
index 12db2ef..49d48eb 100644
--- a/karavan-vscode/src/jbang.ts
+++ b/karavan-vscode/src/jbang.ts
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-import { workspace, window, ThemeIcon } from "vscode";
+import { workspace, window } from "vscode";
 import * as path from "path";
 import * as shell from 'shelljs';
 import * as utils from "./utils";
@@ -49,16 +49,15 @@ function prepareCommand(command: string): string {
     return "jbang -Dcamel.jbang.version=" + version + " camel@apache/camel " + command;
 }
 
-export function camelJbangRun(filename?: string) {
+export function camelJbangRun() {
     const maxMessages: number = workspace.getConfiguration().get("camel.maxMessages") || -1;
     const kameletsPath: string | undefined = workspace.getConfiguration().get("Karavan.kameletsPath");
     const dev: boolean = workspace.getConfiguration().get("camel.dev") || false;
-    const cmd = (filename ? "run " + filename : "run * ")
+    const cmd = "run * "
         + (maxMessages > -1 ? " --max-messages=" + maxMessages : "")
         + (kameletsPath && kameletsPath.trim().length > 0 ? " --local-kamelet-dir=" + kameletsPath : "");
     const command = prepareCommand(cmd) + (dev === true ? " --dev" : "");
-    const terminalId = "run_" + filename;
-    exec.execTerminalCommand(terminalId, command);
+    exec.execTerminalCommand("jbang-run", command);
 }
 
 export async function camelJbangExport(fullPath: string, run?: boolean) {
diff --git a/karavan-vscode/src/maven.ts b/karavan-vscode/src/maven.ts
index ebb801e..f0738e2 100644
--- a/karavan-vscode/src/maven.ts
+++ b/karavan-vscode/src/maven.ts
@@ -27,3 +27,4 @@ export function createPackageAndDeployCommand(directory: string) {
         +  " -Dquarkus.container-image.build=false -Dquarkus.container-image.push=false"
 }
 
+


[camel-karavan] 01/03: Refactor run functions

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

marat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git

commit e167f8de3cd2f59a7b6b495880e7cb721fe7f9e2
Author: Marat Gubaidullin <ma...@gmail.com>
AuthorDate: Tue Dec 13 11:31:01 2022 -0500

    Refactor run functions
---
 karavan-vscode/package.json              | 16 ------
 karavan-vscode/src/exec.ts               | 13 +++++
 karavan-vscode/src/jbang.ts              | 86 +++-----------------------------
 karavan-vscode/src/{exec.ts => maven.ts} | 21 ++++----
 karavan-vscode/src/utils.ts              | 29 +++++++++++
 5 files changed, 59 insertions(+), 106 deletions(-)

diff --git a/karavan-vscode/package.json b/karavan-vscode/package.json
index 290821f..72e3d35 100644
--- a/karavan-vscode/package.json
+++ b/karavan-vscode/package.json
@@ -45,7 +45,6 @@
     "onCommand:karavan.deploy",
     "onCommand:karavan.open",
     "onCommand:karavan.open-file",
-    "onCommand:karavan.jbang-run-file",
     "onCommand:karavan.jbang-run-project",
     "onCommand:karavan.jbang-export",
     "onCommand:karavan.generate-rest",
@@ -323,11 +322,6 @@
         "command": "karavan.open-file",
         "title": "Karavan: Open editor"
       },
-      {
-        "command": "karavan.jbang-run-file",
-        "title": "Karavan: Run File",
-        "icon": "$(run)"
-      },
       {
         "command": "karavan.jbang-run-project",
         "title": "Karavan: Run",
@@ -396,11 +390,6 @@
           "when": "resourceFilename =~ /.camel.yaml$/",
           "group": "karavan@4"
         },
-        {
-          "command": "karavan.jbang-run-file",
-          "when": "resourceFilename =~ /.camel.yaml$/",
-          "group": "karavan@5"
-        },
         {
           "command": "karavan.jbang-run-project",
           "when": "explorerResourceIsFolder || explorerResourceIsRoot",
@@ -477,11 +466,6 @@
           "when": "view == integrations && viewItem == 'integration'",
           "group": "navigation_1_open@2"
         },
-        {
-          "command": "karavan.jbang-run-file",
-          "when": "view == integrations && viewItem == 'integration'",
-          "group": "navigation_2_run@1"
-        },
         {
           "command": "karavan.generate-rest",
           "when": "view == openapi && viewItem == 'openapi'",
diff --git a/karavan-vscode/src/exec.ts b/karavan-vscode/src/exec.ts
index 7034981..afc7b29 100644
--- a/karavan-vscode/src/exec.ts
+++ b/karavan-vscode/src/exec.ts
@@ -15,6 +15,7 @@
  * limitations under the License.
  */
 import * as shell from 'shelljs';
+import { window, Terminal, ThemeIcon } from "vscode";
 
 export interface Result {
     result: boolean
@@ -27,4 +28,16 @@ export function execCommand(cmd: string, execPath?: string): Promise<Result> {
         if (execPath) shell.cd(execPath);
         shell.exec(cmd, (code, stdout, stderr) => resolve({ result: code === 0, value: stdout, error: stderr }));
     });
+}
+
+const TERMINALS: Map<string, Terminal> = new Map<string, Terminal>();
+
+
+export function execTerminalCommand(terminalId: string, command: string, env?: { [key: string]: string | null | undefined }) {
+    const existTerminal = TERMINALS.get(terminalId);
+    if (existTerminal) existTerminal.dispose();
+    const terminal = window.createTerminal({ name: terminalId, env: env, iconPath: new ThemeIcon("layers") });
+    TERMINALS.set(terminalId, terminal);
+    terminal.show();
+    terminal.sendText(command);
 }
\ No newline at end of file
diff --git a/karavan-vscode/src/jbang.ts b/karavan-vscode/src/jbang.ts
index d90bbab..12db2ef 100644
--- a/karavan-vscode/src/jbang.ts
+++ b/karavan-vscode/src/jbang.ts
@@ -14,15 +14,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-import { workspace, window, Terminal, ThemeIcon } from "vscode";
+import { workspace, window, ThemeIcon } from "vscode";
 import * as path from "path";
 import * as shell from 'shelljs';
-import { CamelDefinitionYaml } from "core/api/CamelDefinitionYaml";
 import * as utils from "./utils";
 import * as exec from "./exec";
 
-const TERMINALS: Map<string, Terminal> = new Map<string, Terminal>();
-
 export async function camelJbangGenerate(rootPath: string, openApiFullPath: string, fullPath: string, add: boolean, crd?: boolean, generateRoutes?: boolean) {
     let command = prepareCommand("generate rest -i " + openApiFullPath);
     if (generateRoutes === true) command = command + " --routes";
@@ -34,11 +31,11 @@ export async function camelJbangGenerate(rootPath: string, openApiFullPath: stri
             if (add) {
                 utils.readFile(fullPath).then(readData => {
                     const camelYaml = Buffer.from(readData).toString('utf8');
-                    yaml = createYaml(filename, stdout, camelYaml, undefined);
+                    yaml = utils.createYaml(filename, stdout, camelYaml, undefined);
                     utils.write(fullPath, yaml);
                 });
             } else {
-                yaml = createYaml(filename, stdout, undefined, crd);
+                yaml = utils.createYaml(filename, stdout, undefined, crd);
                 utils.write(fullPath, yaml);
             }
         } else {
@@ -47,31 +44,6 @@ export async function camelJbangGenerate(rootPath: string, openApiFullPath: stri
     });
 }
 
-export function createYaml(filename: string, restYaml: string, camelYaml?: string, crd?: boolean): string {
-    if (camelYaml) {
-        const i = CamelDefinitionYaml.yamlToIntegration(filename, camelYaml);
-        const rest = CamelDefinitionYaml.yamlToIntegration(filename, restYaml);
-        i.spec.flows = i.spec.flows?.filter(f => f.dslName !== 'RestDefinition');
-        i.spec.flows?.push(...rest.spec.flows || []);
-        return CamelDefinitionYaml.integrationToYaml(i);
-    } else if (crd === true) {
-        const i = CamelDefinitionYaml.yamlToIntegration(filename, restYaml);
-        i.type = 'crd';
-        return CamelDefinitionYaml.integrationToYaml(i);
-    } else {
-        return restYaml;
-    }
-}
-
-export function camelJbangPackage(rootPath: string, profile: string, callback: (code: number) => any) {
-    executeJbangCommand(rootPath, prepareCommand("package uber-jar"), (code, stdout, stderr) => callback(code));
-}
-
-
-export function cacheClear(rootPath: string, callback: (code: number) => any) {
-    executeJbangCommand(rootPath, "jbang cache clear", (code, stdout, stderr) => callback(code));
-}
-
 function prepareCommand(command: string): string {
     const version = workspace.getConfiguration().get("camel.version");
     return "jbang -Dcamel.jbang.version=" + version + " camel@apache/camel " + command;
@@ -86,12 +58,7 @@ export function camelJbangRun(filename?: string) {
         + (kameletsPath && kameletsPath.trim().length > 0 ? " --local-kamelet-dir=" + kameletsPath : "");
     const command = prepareCommand(cmd) + (dev === true ? " --dev" : "");
     const terminalId = "run_" + filename;
-    const existTerminal = TERMINALS.get(terminalId);
-    if (existTerminal) existTerminal.dispose();
-    const terminal = window.createTerminal('Camel run: ' + filename ? filename : "project");
-    TERMINALS.set(terminalId, terminal);
-    terminal.show();
-    terminal.sendText(command);
+    exec.execTerminalCommand(terminalId, command);
 }
 
 export async function camelJbangExport(fullPath: string, run?: boolean) {
@@ -101,13 +68,7 @@ export async function camelJbangExport(fullPath: string, run?: boolean) {
         const mvn = runtime === 'quarkus' ? "quarkus:dev" : "spring-boot:run";
         command = command.concat(" && mvn clean ").concat(mvn).concat(" -f ").concat(fullPath);
     }
-    const terminalId = "export";
-    const existTerminal = TERMINALS.get(terminalId);
-    if (existTerminal) existTerminal.dispose();
-    const terminal = window.createTerminal('export');
-    TERMINALS.set(terminalId, terminal);
-    terminal.show();
-    terminal.sendText(command);
+    exec.execTerminalCommand("export", command);
 }
 
 export function createExportCommand(fullPath: string) {
@@ -136,34 +97,12 @@ export function camelDeploy(directory: string) {
         }
         const deployCommand: string = workspace.getConfiguration().get("Karavan.".concat(runtime.replaceAll("-", "")).concat(utils.capitalize(target)).concat("Deploy")) || '';
         const command = createExportCommand(directory).concat(" && ").concat(deployCommand).concat(" -f ").concat(exportFolder);
-        camelRunDeploy(command, env);
+        exec.execTerminalCommand("deploy", command, env);
     }).catch((reason: any) => {
         window.showErrorMessage("Error: \n" + reason.message);
     });
 }
 
-export function camelRunDeploy(command: string, env?: { [key: string]: string | null | undefined }) {
-    const terminalId = "deploy";
-    const existTerminal = TERMINALS.get(terminalId);
-    if (existTerminal) existTerminal.dispose();
-    const terminal = window.createTerminal({ name: terminalId, env: env, iconPath: new ThemeIcon("layers") });
-    TERMINALS.set(terminalId, terminal);
-    terminal.show();
-    terminal.sendText(command);
-}
-
-export function createPackageAndPushImageCommand(directory: string) {
-    return "mvn clean package -f " + directory
-        +  " -Dquarkus.kubernetes.deploy=false"
-        +  " -Dquarkus.container-image.build=true -Dquarkus.container-image.push=true"
-}
-
-export function createPackageAndDeployCommand(directory: string) {
-    return "mvn clean package -f " + directory
-        +  " -Dquarkus.kubernetes.deploy=true -Dquarkus.container-image.registry=image-registry.openshift-image-registry.svc:5000"
-        +  " -Dquarkus.container-image.build=false -Dquarkus.container-image.push=false"
-}
-
 function executeJbangCommand(rootPath: string, command: string, callback: (code: number, stdout: any, stderr: any) => any) {
     console.log("excute command", command);
     const jbang = shell.which('jbang');
@@ -179,15 +118,4 @@ function executeJbangCommand(rootPath: string, command: string, callback: (code:
     }    
 }
 
-function setMinikubeEnvVariables(env: string): Map<string, string> {
-    const map = new Map<string, string>();
-    const linesAll = env.split(/\r?\n/);
-    const vars = linesAll.filter(l => l !== undefined && l.startsWith("export")).map(line => line.replace("export", ""));
-    vars.forEach(line => {
-        const parts = line.split("=");
-        const key = parts[0].trim();
-        const value = parts[1].replaceAll('"', '').trim();
-        map.set(key, value);
-    })
-    return map;
-}
+
diff --git a/karavan-vscode/src/exec.ts b/karavan-vscode/src/maven.ts
similarity index 57%
copy from karavan-vscode/src/exec.ts
copy to karavan-vscode/src/maven.ts
index 7034981..ebb801e 100644
--- a/karavan-vscode/src/exec.ts
+++ b/karavan-vscode/src/maven.ts
@@ -14,17 +14,16 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-import * as shell from 'shelljs';
 
-export interface Result {
-    result: boolean
-    value: any
-    error: string
+export function createPackageAndPushImageCommand(directory: string) {
+    return "mvn clean package -f " + directory
+        +  " -Dquarkus.kubernetes.deploy=false"
+        +  " -Dquarkus.container-image.build=true -Dquarkus.container-image.push=true"
+}
+
+export function createPackageAndDeployCommand(directory: string) {
+    return "mvn clean package -f " + directory
+        +  " -Dquarkus.kubernetes.deploy=true -Dquarkus.container-image.registry=image-registry.openshift-image-registry.svc:5000"
+        +  " -Dquarkus.container-image.build=false -Dquarkus.container-image.push=false"
 }
 
-export function execCommand(cmd: string, execPath?: string): Promise<Result> {
-    return new Promise<Result>((resolve) => {
-        if (execPath) shell.cd(execPath);
-        shell.exec(cmd, (code, stdout, stderr) => resolve({ result: code === 0, value: stdout, error: stderr }));
-    });
-}
\ No newline at end of file
diff --git a/karavan-vscode/src/utils.ts b/karavan-vscode/src/utils.ts
index b02254d..bec776a 100644
--- a/karavan-vscode/src/utils.ts
+++ b/karavan-vscode/src/utils.ts
@@ -312,4 +312,33 @@ export async function createApplicationproperties(runtime: string, gav: string,
         }).join('\n');
         write(path.join(uriFolder.path, "application.properties"), text);
     }
+}
+
+export function createYaml(filename: string, restYaml: string, camelYaml?: string, crd?: boolean): string {
+    if (camelYaml) {
+        const i = CamelDefinitionYaml.yamlToIntegration(filename, camelYaml);
+        const rest = CamelDefinitionYaml.yamlToIntegration(filename, restYaml);
+        i.spec.flows = i.spec.flows?.filter(f => f.dslName !== 'RestDefinition');
+        i.spec.flows?.push(...rest.spec.flows || []);
+        return CamelDefinitionYaml.integrationToYaml(i);
+    } else if (crd === true) {
+        const i = CamelDefinitionYaml.yamlToIntegration(filename, restYaml);
+        i.type = 'crd';
+        return CamelDefinitionYaml.integrationToYaml(i);
+    } else {
+        return restYaml;
+    }
+}
+
+function setMinikubeEnvVariables(env: string): Map<string, string> {
+    const map = new Map<string, string>();
+    const linesAll = env.split(/\r?\n/);
+    const vars = linesAll.filter(l => l !== undefined && l.startsWith("export")).map(line => line.replace("export", ""));
+    vars.forEach(line => {
+        const parts = line.split("=");
+        const key = parts[0].trim();
+        const value = parts[1].replaceAll('"', '').trim();
+        map.set(key, value);
+    })
+    return map;
 }
\ No newline at end of file


[camel-karavan] 02/03: Refactor run functions

Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

marat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git

commit 339b84450a108ed0c76904a5d3df3b0319a4ea4b
Author: Marat Gubaidullin <ma...@gmail.com>
AuthorDate: Tue Dec 13 11:31:11 2022 -0500

    Refactor run functions
---
 karavan-vscode/src/extension.ts | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/karavan-vscode/src/extension.ts b/karavan-vscode/src/extension.ts
index ecd8b5c..63a579e 100644
--- a/karavan-vscode/src/extension.ts
+++ b/karavan-vscode/src/extension.ts
@@ -109,10 +109,6 @@ export function activate(context: ExtensionContext) {
     });
     context.subscriptions.push(deployCommand);
 
-    // Run Integration in designer command
-    const run = commands.registerCommand("karavan.jbang-run-file", (...args: any[]) => designer.jbangRun(args[0].fsPath));
-    context.subscriptions.push(run);
-
     // Run project
     const runProjectCommand = commands.registerCommand("karavan.jbang-run-project", (...args: any[]) => {
         utils.getProperties(rootPath).then(properties => {