33 lines
1.8 KiB
TypeScript
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];
|
|
}
|
|
} |