diff --git a/index.ts b/index.ts index 63f13b5..9cfbd80 100644 --- a/index.ts +++ b/index.ts @@ -883,8 +883,21 @@ class CanvasApp { private doSaveFile(filename: string): void { try { - const filePath = path.resolve(filename) + let filePath = path.resolve(filename) const data = this.toFileData() + //check if filename already exists + if (fs.existsSync(filePath)) { + let counter = 1 + let newFilePath = filePath + const ext = path.extname(filePath) + const baseName = path.basename(filePath, ext) + const dirName = path.dirname(filePath) + while (fs.existsSync(newFilePath)) { + newFilePath = path.join(dirName, `${baseName}(${counter})${ext}`) + counter++ + } + filePath = newFilePath + } fs.writeFileSync(filePath, JSON.stringify(data, null, 2)) this.currentFilePath = filePath this.saveStatusMessage = `Saved to ${path.basename(filePath)}`