in src/launchWizard/launchWizard.ts [65:138]
async function createUpdateConfigFile(data, updateOrCreate) {
let rootPath = vscode.workspace.workspaceFolders
? vscode.workspace.workspaceFolders[0].uri.fsPath
: vscode.Uri.parse('').fsPath
if (!fs.existsSync(`${rootPath}/.vscode`)) {
fs.mkdirSync(`${rootPath}/.vscode`)
}
const launchPath = osCheck(
`/${rootPath}/.vscode/launch.json`,
`${rootPath}/.vscode/launch.json`
)
// Create launch.json if it doesn't exist already
if (!fs.existsSync(`${rootPath}/.vscode/launch.json`)) {
fs.writeFileSync(`${rootPath}/.vscode/launch.json`, data)
vscode.window.showTextDocument(vscode.Uri.parse(launchPath))
return
}
let newConf = JSON.parse(data).configurations[0]
let fileData = JSON.parse(
fs.readFileSync(`${rootPath}/.vscode/launch.json`).toString()
)
if (updateOrCreate.toLowerCase() === 'create') {
let alreadyExists = false
fileData.configurations.forEach((element) => {
if (element.name === newConf.name) {
alreadyExists = true
}
})
if (alreadyExists) {
// Config wanted to create already exists in launch.json
vscode.window.showWarningMessage(
'The conf trying to be saved already exists in the launch.json'
)
return
}
// Add new config to launch.json
fileData.configurations.push(newConf)
fs.writeFileSync(
`${rootPath}/.vscode/launch.json`,
JSON.stringify(fileData, null, 4)
)
} else if (updateOrCreate.toLowerCase() === 'update') {
// Update selected config in launch.json
let configIndex = -1
for (let i = 0; i < fileData.configurations.length; i++) {
if (fileData.configurations[i].name === newConf.name) {
configIndex = i
break
}
}
// Error handling to make sure a proper config specified
if (configIndex !== -1) {
fileData.configurations[configIndex] = newConf
fs.writeFileSync(
`${rootPath}/.vscode/launch.json`,
JSON.stringify(fileData, null, 4)
)
} else {
vscode.window.showErrorMessage('Invalid Config Selected!')
}
}
vscode.window.showTextDocument(vscode.Uri.parse(launchPath))
}