bmc-tpl-code-all-around/src/providers/actions/MetadataFix.ts

33 lines
1.8 KiB
TypeScript

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();
const config = vscode.workspace.getConfiguration('tpl');
const author = config.get<string>('metadata.author', 'Kuro');
const origin = config.get<string>('metadata.origin', 'Custom');
const publisher = config.get<string>('metadata.publisher', 'IT-Operations');
const treePathBase = config.get<string>('metadata.treePathBase', 'Grafing');
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`;
// HIER GEFIXT: Einfügen auf Zeile + 1, damit es IN den Block rutscht
fix.edit.insert(document.uri, new vscode.Position(diagnostic.range.start.line + 1, 0), insertText);
fix.diagnostics = [diagnostic];
return [fix];
}
}