From 7a7b31c2aedc92478e86df90d26ae358e3f3e5b3 Mon Sep 17 00:00:00 2001 From: Elio Struyf Date: Thu, 25 Nov 2021 11:00:47 +0100 Subject: [PATCH] #190 - First implementation of the diagnostic output --- package.json | 5 +++++ src/commands/Diagnostics.ts | 38 +++++++++++++++++++++++++++++++++++++ src/commands/Folders.ts | 1 + src/constants/Extension.ts | 1 + src/extension.ts | 4 ++++ 5 files changed, 49 insertions(+) create mode 100644 src/commands/Diagnostics.ts diff --git a/package.json b/package.json index eb631968..51e50ab3 100644 --- a/package.json +++ b/package.json @@ -819,6 +819,11 @@ "command": "frontMatter.setLastModifiedDate", "title": "Set lastmod date", "category": "Front matter" + }, + { + "command": "frontMatter.diagnostics", + "title": "Diagnostic logging", + "category": "Front matter" } ], "menus": { diff --git a/src/commands/Diagnostics.ts b/src/commands/Diagnostics.ts new file mode 100644 index 00000000..1124daf2 --- /dev/null +++ b/src/commands/Diagnostics.ts @@ -0,0 +1,38 @@ +import { Folders } from "./Folders"; +import { window } from "vscode"; +import ContentProvider from "../providers/ContentProvider"; +import { join } from "path"; + + +export class Diagnostics { + + public static show() { + const folders = Folders.get(); + const projectName = Folders.getProjectFolderName(); + const wsFolder = Folders.getWorkspaceFolder(); + + const logging = `# Project name + +${projectName} + +# Folders + +${folders.map(f => `- ${f.title}: "${f.path}"`).join("\n")} + +# Workspace folder + +${wsFolder ? wsFolder.fsPath : "No workspace folder"} + +# Folders to search files + +${folders.map(folder => { + let projectStart = folder.path.split(projectName).pop(); + projectStart = projectStart?.replace(/\\/g, '/'); + projectStart = projectStart?.startsWith('/') ? projectStart.substr(1) : projectStart; + return `- ${join(projectStart || "", folder.excludeSubdir ? '/' : '**/', '*.md')}`; +}).join("\n")} + `; + + ContentProvider.show(logging, `${projectName} diagnostics`, "markdown"); + } +} \ No newline at end of file diff --git a/src/commands/Folders.ts b/src/commands/Folders.ts index 7328a283..480ba5d1 100644 --- a/src/commands/Folders.ts +++ b/src/commands/Folders.ts @@ -207,6 +207,7 @@ export class Folders { try { const projectName = Folders.getProjectFolderName(); let projectStart = folder.path.split(projectName).pop(); + if (projectStart) { projectStart = projectStart.replace(/\\/g, '/'); projectStart = projectStart.startsWith('/') ? projectStart.substr(1) : projectStart; diff --git a/src/constants/Extension.ts b/src/constants/Extension.ts index 49ce954d..318129fa 100644 --- a/src/constants/Extension.ts +++ b/src/constants/Extension.ts @@ -32,4 +32,5 @@ export const COMMAND_NAME = { promote: getCommandName("promoteSettings"), insertImage: getCommandName("insertImage"), createFolder: getCommandName("createFolder"), + diagnostics: getCommandName("diagnostics"), }; \ No newline at end of file diff --git a/src/extension.ts b/src/extension.ts index 3995918a..68d68272 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -16,6 +16,7 @@ import { DashboardData } from './models/DashboardData'; import { Settings as SettingsHelper } from './helpers'; import { Content } from './commands/Content'; import ContentProvider from './providers/ContentProvider'; +import { Diagnostics } from './commands/Diagnostics'; let frontMatterStatusBar: vscode.StatusBarItem; let statusDebouncer: { (fnc: any, time: number): void; }; @@ -183,6 +184,9 @@ export async function activate(context: vscode.ExtensionContext) { // Create the editor experience for bulk scripts subscriptions.push(vscode.workspace.registerTextDocumentContentProvider(ContentProvider.scheme, new ContentProvider())); + // Diagnostics + subscriptions.push(vscode.commands.registerCommand(COMMAND_NAME.diagnostics, Diagnostics.show)); + // Subscribe all commands subscriptions.push( insertTags,