From ea6f1048bdd989dad13bd4cbebfebff8740a170f Mon Sep 17 00:00:00 2001 From: "Ricardo M." Date: Mon, 25 Nov 2024 14:10:38 +0100 Subject: [PATCH 1/2] fix(Build): Run Kaoto in Windows Currently, dev mode is broken in Windows since the `vite.config.js` file is not copying the catalog files properly. In addition to that, the files path are generated using the underlying OS path separator. The fix is to use the `normalizePath` function from `vite`, so it uses a linux-like path to copy the files. From the Catalog generator part, it forces to use the `/` as path separator, so it loads properly in the browser. fix: https://github.com/KaotoIO/kaoto/issues/1654 --- .../io/kaoto/camelcatalog/commands/GenerateCommand.java | 6 ++++-- .../kaoto/camelcatalog/commands/GenerateCommandTest.java | 6 ++++-- packages/ui/vite.config.js | 7 ++++--- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/packages/catalog-generator/src/main/java/io/kaoto/camelcatalog/commands/GenerateCommand.java b/packages/catalog-generator/src/main/java/io/kaoto/camelcatalog/commands/GenerateCommand.java index 20d4b31fe..8168ad069 100644 --- a/packages/catalog-generator/src/main/java/io/kaoto/camelcatalog/commands/GenerateCommand.java +++ b/packages/catalog-generator/src/main/java/io/kaoto/camelcatalog/commands/GenerateCommand.java @@ -51,9 +51,11 @@ public void run() { CatalogDefinition catalogDefinition = catalogGenerator.generate(); File indexFile = catalogDefinitionFolder.toPath().resolve(catalogDefinition.getFileName()).toFile(); - File relateIndexFile = outputFolder.toPath().relativize(indexFile.toPath()).toFile(); + String relateIndexFile = outputFolder.toPath().relativize(indexFile.toPath()).toString().replace(File.separator, "/"); - catalogDefinition.setFileName(relateIndexFile.toString()); + System.out.println(relateIndexFile); + + catalogDefinition.setFileName(relateIndexFile); library.addDefinition(catalogDefinition); }); diff --git a/packages/catalog-generator/src/test/java/io/kaoto/camelcatalog/commands/GenerateCommandTest.java b/packages/catalog-generator/src/test/java/io/kaoto/camelcatalog/commands/GenerateCommandTest.java index f0b365e41..53a8cf2d1 100644 --- a/packages/catalog-generator/src/test/java/io/kaoto/camelcatalog/commands/GenerateCommandTest.java +++ b/packages/catalog-generator/src/test/java/io/kaoto/camelcatalog/commands/GenerateCommandTest.java @@ -85,7 +85,8 @@ void testGeneratorCalledWithCorrectParameters() { File expectedFolder = new File(tempDir, "camel-main/4.8.0"); verify(builder, times(1)).withOutputDirectory(expectedFolder); - String expectedFile = Path.of("camel-main", "4.8.0", "index.json").toString(); + /* This path will be used to relatively load the subsequent files, it always needs to use `/` */ + String expectedFile = "camel-main/4.8.0/index.json"; assertEquals(catalogDefinition.getFileName(), expectedFile); } } @@ -126,7 +127,8 @@ void testCatalogLibraryOutput() { assertEquals(catalogLibraryEntry.version(), "4.8.0"); assertEquals(catalogLibraryEntry.runtime(), "Main"); - String expectedFile = Path.of("camel-main", "4.8.0", "index.json").toString(); + /* This path will be used to relatively load the subsequent files, it always needs to use `/` */ + String expectedFile = "camel-main/4.8.0/index.json"; assertEquals(catalogLibraryEntry.fileName(), expectedFile); } } diff --git a/packages/ui/vite.config.js b/packages/ui/vite.config.js index e2f3a37c0..58e7e04bf 100644 --- a/packages/ui/vite.config.js +++ b/packages/ui/vite.config.js @@ -1,7 +1,7 @@ // @ts-check import react from '@vitejs/plugin-react'; import { dirname, relative } from 'node:path'; -import { defineConfig } from 'vite'; +import { defineConfig, normalizePath } from 'vite'; import { viteStaticCopy } from 'vite-plugin-static-copy'; import packageJson from './package.json'; import { getCamelCatalogFiles } from './scripts/get-camel-catalog-files'; @@ -19,11 +19,12 @@ export default defineConfig(async () => { react(), viteStaticCopy({ targets: camelCatalogFiles.map((file) => { + const normalizedFile = normalizePath(file); const relativePath = relative(basePath, file); - const dest = './camel-catalog/' + dirname(relativePath); + const dest = normalizePath('./camel-catalog/' + dirname(relativePath)); return { - src: file, + src: normalizedFile, dest, transform: (content, filename) => { return JSON.stringify(JSON.parse(content)); From e0bc5c3dd135d915b052e574fddda63d51414dbb Mon Sep 17 00:00:00 2001 From: "Ricardo M." Date: Tue, 3 Dec 2024 13:18:52 +0100 Subject: [PATCH 2/2] Update packages/catalog-generator/src/main/java/io/kaoto/camelcatalog/commands/GenerateCommand.java --- .../java/io/kaoto/camelcatalog/commands/GenerateCommand.java | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/catalog-generator/src/main/java/io/kaoto/camelcatalog/commands/GenerateCommand.java b/packages/catalog-generator/src/main/java/io/kaoto/camelcatalog/commands/GenerateCommand.java index 8168ad069..6a314a8bb 100644 --- a/packages/catalog-generator/src/main/java/io/kaoto/camelcatalog/commands/GenerateCommand.java +++ b/packages/catalog-generator/src/main/java/io/kaoto/camelcatalog/commands/GenerateCommand.java @@ -53,7 +53,6 @@ public void run() { File indexFile = catalogDefinitionFolder.toPath().resolve(catalogDefinition.getFileName()).toFile(); String relateIndexFile = outputFolder.toPath().relativize(indexFile.toPath()).toString().replace(File.separator, "/"); - System.out.println(relateIndexFile); catalogDefinition.setFileName(relateIndexFile);