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 b35c2f2d8af3cf2a0abb8fa66584e71ac94b1d7f Author: Marat Gubaidullin <marat.gubaidul...@gmail.com> AuthorDate: Fri Nov 18 14:47:19 2022 -0500 Export folder from properties or input field --- karavan-vscode/src/designerView.ts | 2 +- karavan-vscode/src/extension.ts | 80 ++++++++++++++++++++++++++------------ karavan-vscode/src/jbang.ts | 10 +++-- 3 files changed, 63 insertions(+), 29 deletions(-) diff --git a/karavan-vscode/src/designerView.ts b/karavan-vscode/src/designerView.ts index c16b373..1be8c9d 100644 --- a/karavan-vscode/src/designerView.ts +++ b/karavan-vscode/src/designerView.ts @@ -91,7 +91,7 @@ export class DesignerView { const i = Integration.createNew(name); i.type = type; const yaml = CamelDefinitionYaml.integrationToYaml(i); - const filename = name.toLocaleLowerCase().endsWith('.yaml') ? name : name + '.yaml'; + const filename = name.toLocaleLowerCase().endsWith('.camel.yaml') ? name : name.split('.')[0] + '.camel.yaml'; const relativePath = (this.rootPath ? rootPath?.replace(this.rootPath, "") : rootPath) + path.sep + filename; const fullPath = (rootPath ? rootPath : this.rootPath) + path.sep + filename; utils.save(relativePath, yaml); diff --git a/karavan-vscode/src/extension.ts b/karavan-vscode/src/extension.ts index c7b5bfb..b816b0b 100644 --- a/karavan-vscode/src/extension.ts +++ b/karavan-vscode/src/extension.ts @@ -54,18 +54,18 @@ export function activate(context: ExtensionContext) { </body> </html>` - .replace( - "styleUri", - Uri.joinPath(context.extensionUri, "/dist/main.css") - .with({ scheme: "vscode-resource" }) - .toString() - ) - .replace( - "scriptUri", - Uri.joinPath(context.extensionUri, "/dist/webview.js") - .with({ scheme: "vscode-resource" }) - .toString() - ); + .replace( + "styleUri", + Uri.joinPath(context.extensionUri, "/dist/main.css") + .with({ scheme: "vscode-resource" }) + .toString() + ) + .replace( + "scriptUri", + Uri.joinPath(context.extensionUri, "/dist/webview.js") + .with({ scheme: "vscode-resource" }) + .toString() + ); const rootPath = (workspace.workspaceFolders && (workspace.workspaceFolders.length > 0)) ? workspace.workspaceFolders[0].uri.fsPath : undefined; @@ -103,36 +103,36 @@ export function activate(context: ExtensionContext) { // Create application const applicationCommand = commands.registerCommand("karavan.create-application", (...args: any[]) => { - if (rootPath){ + if (rootPath) { const defaultRuntime: string = workspace.getConfiguration().get("camel.runtimes") || ''; const deployTarget: string = workspace.getConfiguration().get("camel.deployTarget") || 'openshift'; - const runtimeOptions: QuickPickItem [] = [ - {label: "quarkus", picked: "quarkus" === defaultRuntime}, - {label: "spring-boot", picked: "spring-boot" === defaultRuntime} + const runtimeOptions: QuickPickItem[] = [ + { label: "quarkus", picked: "quarkus" === defaultRuntime }, + { label: "spring-boot", picked: "spring-boot" === defaultRuntime } ]; - const deployOptions: QuickPickItem [] = [ - {label: "openshift", picked: "openshift" === deployTarget}, - {label: "kubernetes", picked: "kubernetes" === deployTarget}, - {label: "none", picked: "none" === deployTarget} + const deployOptions: QuickPickItem[] = [ + { label: "openshift", picked: "openshift" === deployTarget }, + { label: "kubernetes", picked: "kubernetes" === deployTarget }, + { label: "none", picked: "none" === deployTarget } ]; utils.hasApplicationProperties(rootPath).then(hasAP => { - if (hasAP){ + if (hasAP) { window.showInformationMessage("Folder already contains application.properties"); } else { window.showQuickPick(runtimeOptions, { title: "Select Runtime", canPickMany: false }).then((runtime) => { window.showQuickPick(deployOptions, { title: "Select Deploy Target", canPickMany: false }).then((target) => { - if (runtime && target) inputExportGav(runtime.label, target.label) + if (runtime && target) inputExportGav(runtime.label, target.label) }) }) } }) - } + } }); context.subscriptions.push(applicationCommand); // Export project const exportCommand = commands.registerCommand("karavan.jbang-export", (...args: any[]) => { - jbang.camelJbangExport(); + exportProject(rootPath); }); context.subscriptions.push(exportCommand); @@ -178,6 +178,38 @@ export function activate(context: ExtensionContext) { }); } +/** + * export into folder + */ +export async function exportProject(rootPath?: string) { + utils.getExportFolder() + .then(folder => { + if (folder){ + jbang.camelJbangExport(); + } else { + window.showInputBox({ + title: "Export project", + ignoreFocusOut: true, + prompt: "Export folder name", + value: ".export", + validateInput: (text: string): string | undefined => { + if (!text || text.length === 0) { + return 'Name should not be empty'; + } else { + return undefined; + } + } + }).then(folder => { + if (folder && rootPath) { + const fullPath = rootPath + path.sep + folder; + jbang.camelJbangExport(fullPath); + } + }); + } + }).catch(error => { + console.log(error); + }) +} /** * export with gav diff --git a/karavan-vscode/src/jbang.ts b/karavan-vscode/src/jbang.ts index e2baa92..456d46b 100644 --- a/karavan-vscode/src/jbang.ts +++ b/karavan-vscode/src/jbang.ts @@ -94,8 +94,8 @@ export function camelJbangRun(filename?: string) { terminal.sendText(command); } -export function camelJbangExport() { - const command = createExportCommand(); +export function camelJbangExport(fullPath?: string) { + const command = createExportCommand(fullPath); const terminalId = "export"; const existTerminal = TERMINALS.get(terminalId); if (existTerminal) existTerminal.dispose(); @@ -105,9 +105,11 @@ export function camelJbangExport() { terminal.sendText(command); } -export function createExportCommand() { +export function createExportCommand(fullPath?: string) { const kameletsPath: string | undefined = workspace.getConfiguration().get("Karavan.kameletsPath"); - const cmd = "export --fresh " + (kameletsPath && kameletsPath.trim().length > 0 ? " --local-kamelet-dir=" + kameletsPath : ""); + const cmd = "export --fresh " + + (fullPath ? " --directory=" + fullPath : '') + + (kameletsPath && kameletsPath.trim().length > 0 ? " --local-kamelet-dir=" + kameletsPath : ""); return prepareCommand(cmd); }