diff --git a/package.json b/package.json index d90fd28..ed90044 100644 --- a/package.json +++ b/package.json @@ -394,7 +394,7 @@ "light": "images/svg/light/netlist.svg", "dark": "images/svg/dark/netlist.svg" }, - "category": "tool", + "category": "Digital-IDE", "title": "%digital-ide.netlist.title%" }, { @@ -403,12 +403,18 @@ "light": "images/svg/light/fsm.svg", "dark": "images/svg/dark/fsm.svg" }, - "category": "tool", + "category": "Digital-IDE", "title": "%digital-ide.fsm.title%" }, { "command": "digital-ide.lsp.tool.insertTextToUri", - "title": "%digital-ide.lsp.tool.insertTextToUri.title%" + "title": "%digital-ide.lsp.tool.insertTextToUri.title%", + "category": "Digital-IDE" + }, + { + "command": "digital-ide.lsp.tool.transformOldPropertyFile", + "title": "%digital-ide.lsp.tool.transformOldPropertyFile.title%", + "category": "Digital-IDE" } ], "menus": { diff --git a/package.nls.json b/package.nls.json index fdc55dd..4da1b2d 100644 --- a/package.nls.json +++ b/package.nls.json @@ -36,5 +36,6 @@ "digital-ide.pl.delFile.title": "del file", "digital-ide.netlist.title": "netlist", "digital-ide.fsm.title": "finite state machine", - "digital-ide.lsp.tool.insertTextToUri.title": "insert text to uri" + "digital-ide.lsp.tool.insertTextToUri.title": "insert text to uri", + "digital-ide.lsp.tool.transformOldPropertyFile.title": "transform configure file from previous version to new version" } \ No newline at end of file diff --git a/package.nls.zh-cn.json b/package.nls.zh-cn.json index 86c70bd..72a4558 100644 --- a/package.nls.zh-cn.json +++ b/package.nls.zh-cn.json @@ -36,5 +36,6 @@ "digital-ide.pl.delFile.title": "d删除文件", "digital-ide.netlist.title": "netlist", "digital-ide.fsm.title": "有限状态机", - "digital-ide.lsp.tool.insertTextToUri.title": "插入文本uri" + "digital-ide.lsp.tool.insertTextToUri.title": "插入文本uri", + "digital-ide.lsp.tool.transformOldPropertyFile.title": "转换配置文件从先前版本新版本" } \ No newline at end of file diff --git a/package.nls.zh-tw.json b/package.nls.zh-tw.json index a556923..2a574e4 100644 --- a/package.nls.zh-tw.json +++ b/package.nls.zh-tw.json @@ -36,5 +36,6 @@ "digital-ide.pl.delFile.title": "d刪除文件", "digital-ide.netlist.title": "netlist", "digital-ide.fsm.title": "有限狀態機", - "digital-ide.lsp.tool.insertTextToUri.title": "插入文本uri" + "digital-ide.lsp.tool.insertTextToUri.title": "插入文本uri", + "digital-ide.lsp.tool.transformOldPropertyFile.title": "轉換配置文件從先前版本新版本" } \ No newline at end of file diff --git a/src/function/index.ts b/src/function/index.ts index dec50ec..97c4ff1 100644 --- a/src/function/index.ts +++ b/src/function/index.ts @@ -76,6 +76,7 @@ function registerLsp(context: vscode.ExtensionContext) { function registerToolCommands(context: vscode.ExtensionContext) { vscode.commands.registerCommand('digital-ide.lsp.tool.insertTextToUri', tool.insertTextToUri); + vscode.commands.registerCommand('digital-ide.lsp.tool.transformOldPropertyFile', tool.transformOldPpy); } export { diff --git a/src/function/tool.ts b/src/function/tool.ts index c34ce4b..ed1ef26 100644 --- a/src/function/tool.ts +++ b/src/function/tool.ts @@ -1,4 +1,9 @@ +/* eslint-disable @typescript-eslint/naming-convention */ import * as vscode from 'vscode'; +import * as fs from 'fs'; + +import { opeParam } from '../global'; +import { hdlFile } from '../hdlFs'; async function insertTextToUri(uri: vscode.Uri, text: string, position?: vscode.Position) { if (!position) { @@ -12,7 +17,61 @@ async function insertTextToUri(uri: vscode.Uri, text: string, position?: vscode. } } +const PPY_REPLACE: Record = { + TOOL_CHAIN: 'toolChain', + PRJ_NAME: 'prjName', + ARCH: 'arch', + SOC: 'soc', + enableShowlog: 'enableShowLog', + Device: 'device' +}; + +const PPY_ARCH_REPLACE: Record = { + PRJ_Path: 'prjPath', + Hardware: 'hardware', + Software: 'software' +}; + +const PPY_LIB_REPLACE: Record = { + Hardware: 'hardware' +}; + +async function transformOldPpy() { + const propertyJsonPath = opeParam.propertyJsonPath; + if (fs.existsSync(propertyJsonPath)) { + const oldPpyContent = hdlFile.readJSON(propertyJsonPath) as Record; + + if (oldPpyContent.ARCH) { + for (const oldName of Object.keys(PPY_ARCH_REPLACE)) { + const newName = PPY_ARCH_REPLACE[oldName]; + oldPpyContent.ARCH[newName] = oldPpyContent.ARCH[oldName]; + delete oldPpyContent.ARCH[oldName]; + } + } + + if (oldPpyContent.library) { + for (const oldName of Object.keys(PPY_LIB_REPLACE)) { + const newName = PPY_LIB_REPLACE[oldName]; + oldPpyContent.library[newName] = oldPpyContent.library[oldName]; + delete oldPpyContent.library[oldName]; + } + } + + for (const oldName of Object.keys(PPY_REPLACE)) { + const newName = PPY_REPLACE[oldName]; + oldPpyContent[newName] = oldPpyContent[oldName]; + delete oldPpyContent[oldName]; + } + + hdlFile.writeJSON(propertyJsonPath, oldPpyContent); + + } else { + vscode.window.showErrorMessage('You have\'t create property.json!'); + } +} + export { - insertTextToUri + insertTextToUri, + transformOldPpy }; \ No newline at end of file