import * as vscode from 'vscode'; import { TplQuickFix } from './TplQuickFix'; export class MetadataFix implements TplQuickFix { public readonly diagnosticCode = 'missing_module_metadata'; public provideFix(document: vscode.TextDocument, diagnostic: vscode.Diagnostic): vscode.CodeAction[] { const fix = new vscode.CodeAction("Fehlende Metadaten generieren", vscode.CodeActionKind.QuickFix); fix.edit = new vscode.WorkspaceEdit(); // Einstellungen laden const config = vscode.workspace.getConfiguration('tpl'); const author = config.get('metadata.author', 'Kuro'); const origin = config.get('metadata.origin', 'Custom'); const publisher = config.get('metadata.publisher', 'IT-Operations'); const treePathBase = config.get('metadata.treePathBase', 'Grafing'); // Herausfinden, welche Felder fehlen (steht im Diagnostic-Message-String) const missingFieldsStr = diagnostic.message.replace('Fehlende Pflicht-Metadaten (Modul-Ebene): ', ''); const missingFields = missingFieldsStr.split(', '); let insertText = ''; if (missingFields.includes('origin')) insertText += ` origin := '${origin}';\n`; if (missingFields.includes('author')) insertText += ` author := '${author}';\n`; if (missingFields.includes('products')) insertText += ` products := 'TODO_Product';\n`; if (missingFields.includes('publishers')) insertText += ` publishers := '${publisher}';\n`; if (missingFields.includes('tree_path')) insertText += ` tree_path := '${treePathBase}', 'TODO_Category', 'TODO_Subcategory';\n`; // Direkt über der Zeile 'end metadata;' einfügen fix.edit.insert(document.uri, new vscode.Position(diagnostic.range.start.line, 0), insertText); fix.diagnostics = [diagnostic]; return [fix]; } }