Kendryte-dev-extension/src/command/delete-dependency.ts

34 lines
1.5 KiB
TypeScript

import * as vscode from 'vscode'
import { readFilePromisify, writeFilePromisify, removeDir } from '@utils/index'
import { join } from 'path'
import { DevPackages } from '@treeview/DevPackages'
export const deleteDependency = (depProvider: DevPackages) => {
return vscode.commands.registerCommand('packageDependencies.delete', treeItem => {
const packageName = treeItem.label
return new Promise((resolve, reject) => {
const workspace = vscode.workspace.rootPath
if (!workspace) {
vscode.window.showErrorMessage('Please open a workspace')
reject('Please open a workspace')
return
}
const configPath = join(workspace, 'kendryte-package.json')
readFilePromisify(configPath, 'utf-8')
.then(async data => {
const config = JSON.parse(data)
delete config.dependencies[packageName]
await writeFilePromisify(configPath, JSON.stringify(config, null, '\t'), 'utf-8')
await removeDir(join(workspace, 'kendryte_libraries', packageName))
vscode.window.showInformationMessage(`${packageName} deleted.`)
depProvider.refresh()
await vscode.commands.executeCommand('extension.configGenerate')
resolve()
})
.catch(err => {
reject('Please open a kendryte workspace.')
return
})
})
})
}