From a0f1007dd296ed193037728c3cd8c2502bafa7a7 Mon Sep 17 00:00:00 2001 From: Seb Julliand Date: Wed, 27 Mar 2024 10:28:24 +0100 Subject: [PATCH] Added "Open service configuration" button Signed-off-by: Seb Julliand --- src/api/debug/server.ts | 4 +++ src/locale/ids/da.ts | 3 ++- src/locale/ids/en.ts | 3 ++- src/locale/ids/fr.ts | 3 ++- src/webviews/debugger/index.ts | 45 ++++++++++++++++++---------------- 5 files changed, 34 insertions(+), 24 deletions(-) diff --git a/src/api/debug/server.ts b/src/api/debug/server.ts index ba347fe5c..272b80584 100644 --- a/src/api/debug/server.ts +++ b/src/api/debug/server.ts @@ -156,4 +156,8 @@ export async function stopServer() { } } return true; +} + +export function getServiceConfigurationFile(){ + return path.posix.join(serverDirectory, "DebugService.env"); } \ No newline at end of file diff --git a/src/locale/ids/da.ts b/src/locale/ids/da.ts index 33ffdb721..85a310dbd 100644 --- a/src/locale/ids/da.ts +++ b/src/locale/ids/da.ts @@ -382,5 +382,6 @@ export const da: Locale = { 'start.debug.service.failed': 'Failed to start debug service: {0}', 'stop.debug.service.task': 'Stopping debug service...', 'stop.debug.service.succeeded': 'Debug service stopped.', - 'stop.debug.service.failed': 'Failed to stop debug service: {0}' + 'stop.debug.service.failed': 'Failed to stop debug service: {0}', + 'open.service.configuration': 'Open configuration' }; \ No newline at end of file diff --git a/src/locale/ids/en.ts b/src/locale/ids/en.ts index 903532292..89dcf5cb6 100644 --- a/src/locale/ids/en.ts +++ b/src/locale/ids/en.ts @@ -382,5 +382,6 @@ export const en: Locale = { 'start.debug.service.failed': 'Failed to start debug service: {0}', 'stop.debug.service.task': 'Stopping debug service...', 'stop.debug.service.succeeded': 'Debug service stopped.', - 'stop.debug.service.failed': 'Failed to stop debug service: {0}' + 'stop.debug.service.failed': 'Failed to stop debug service: {0}', + 'open.service.configuration': 'Open configuration' }; \ No newline at end of file diff --git a/src/locale/ids/fr.ts b/src/locale/ids/fr.ts index c01d10a04..94d692fba 100644 --- a/src/locale/ids/fr.ts +++ b/src/locale/ids/fr.ts @@ -382,5 +382,6 @@ export const fr: Locale = { 'start.debug.service.failed': 'Échec du démarrage du service de débogage: {0}', 'stop.debug.service.task': 'Arrêt du service de débogage...', 'stop.debug.service.succeeded': 'Service de débogage arrêté.', - 'stop.debug.service.failed': 'Échec de l\'arrêt du service de débogage: {0}' + 'stop.debug.service.failed': 'Échec de l\'arrêt du service de débogage: {0}', + 'open.service.configuration': 'Ouvrir la configuration' }; \ No newline at end of file diff --git a/src/webviews/debugger/index.ts b/src/webviews/debugger/index.ts index 6e73e2fe0..c4d207620 100644 --- a/src/webviews/debugger/index.ts +++ b/src/webviews/debugger/index.ts @@ -1,11 +1,11 @@ import { readFileSync } from "fs"; import vscode from "vscode"; -import { CustomUI, Field, Page, Section } from "../../api/CustomUI"; +import { Button, CustomUI, Field, Page, Section } from "../../api/CustomUI"; import IBMiContent from "../../api/IBMiContent"; import { Tools } from "../../api/Tools"; import { isManaged } from "../../api/debug"; import { getLocalCertPath, getRemoteCertificateDirectory, localClientCertExists, readRemoteCertificate, remoteServerCertificateExists, setup } from "../../api/debug/certificates"; -import { DebugJob, getDebugServerJob, getDebugServiceJob, startServer, startService, stopServer, stopService } from "../../api/debug/server"; +import { DebugJob, getDebugServerJob, getDebugServiceJob, getServiceConfigurationFile, startServer, startService, stopServer, stopService } from "../../api/debug/server"; import { instance } from "../../instantiate"; import { t } from "../../locale"; @@ -69,27 +69,27 @@ export async function openDebugStatusPanel() {
  • ${t("listening.on.port")}: ${debbuggerInfo.server.job.port}
  • ` : "" } - `); - addStartStopButtons("server", summary, debbuggerInfo.server !== undefined); + `) + .addButtons(...getStartStopButtons("server", debbuggerInfo.server !== undefined)) - //Debug Service summary - summary.addHorizontalRule() + //Debug Service summary + .addHorizontalRule() .addParagraph(/* html */` -

    ${t("debug.service")} ${debbuggerInfo.service ? "✅" : "❌"}

    - `) - if (debbuggerInfo.certificate.remoteExists) { - //Can't start the service without a certificate - addStartStopButtons("service", summary, debbuggerInfo.service !== undefined); - } + .addButtons( + ...(debbuggerInfo.certificate.remoteExists ? getStartStopButtons("service", debbuggerInfo.service !== undefined) : []), + { id: "service.openConfig", label: t("open.service.configuration") } + ); //Certificates summary const certificatesMatch = certificateMatchStatus(debbuggerInfo.certificate); @@ -139,12 +139,12 @@ export async function openDebugStatusPanel() { } } -function addStartStopButtons(target: "server" | "service", section: Section, running: boolean) { - section.addButtons( +function getStartStopButtons(target: "server" | "service", running: boolean): (Button | undefined)[] { + return [ running ? undefined : { id: `${target}.start`, label: t("start") }, running ? { id: `${target}.restart`, label: t("restart") } : undefined, running ? { id: `${target}.stop`, label: t("stop") } : undefined - ); + ]; } async function readActiveJob(content: IBMiContent, job: DebugJob) { @@ -242,6 +242,9 @@ async function handleServiceAction(action: string): Promise { } case "downloadCertificate": return await vscode.commands.executeCommand(`code-for-ibmi.debug.setup.local`); + case "openConfig": + vscode.commands.executeCommand("code-for-ibmi.openEditable", getServiceConfigurationFile()); + return false; } }