diff --git a/typescript/vscode-ext/packages/language-server/src/lib/baml_project_manager.ts b/typescript/vscode-ext/packages/language-server/src/lib/baml_project_manager.ts index dd4496038..fa1e093a1 100644 --- a/typescript/vscode-ext/packages/language-server/src/lib/baml_project_manager.ts +++ b/typescript/vscode-ext/packages/language-server/src/lib/baml_project_manager.ts @@ -377,10 +377,11 @@ class Project { const out_dir = path.join(this.rootPath(), g.output_dir_relative_to_baml_src) - const tmpDir = path.join(path.dirname(g.output_dir), path.basename(g.output_dir) + '.tmp') - const backupDir = path.join(path.dirname(g.output_dir), path.basename(g.output_dir) + '.bak') + const tmpDir = path.join(out_dir + '.tmp') + const backupDir = path.join(out_dir + '.bak') await mkdir(tmpDir, { recursive: true }) + console.log(`tmpdir ${tmpDir}`) await Promise.all( g.files.map(async (f) => { const fpath = path.join(tmpDir, f.path_in_output_dir) @@ -393,6 +394,7 @@ class Project { await rm(backupDir, { recursive: true, force: true }) } if (existsSync(out_dir)) { + console.log('out dir exists') const contents = await readdir(out_dir, { withFileTypes: true }) const contentsWithSafeToRemove = await Promise.all( contents.map(async (c) => { @@ -403,7 +405,7 @@ class Project { return { path: c.name, safeToRemove: false } } - const handle = await open(path.join(g.output_dir, c.name)) + const handle = await open(path.join(out_dir, c.name)) try { const { bytesRead, buffer } = await handle.read(Buffer.alloc(1024), 0, 1024, 0) const firstNBytes = buffer.subarray(0, bytesRead).toString('utf8') @@ -420,7 +422,11 @@ class Project { `Output dir ${g.output_dir} contains this file(s) not generated by BAML: ${notSafeToRemove.join(', ')}`, ) } + try { await rename(out_dir, backupDir) + } catch (e) { + console.error(`Something happened backing up baml_client to the .bak directory. ${e}`) + } } await rename(tmpDir, out_dir) @@ -429,7 +435,6 @@ class Project { // if we remove this, TS will still have the old types, and nextjs will not hot-reload. g.files.map((f) => { const fpath = path.join(out_dir, f.path_in_output_dir) - console.log(`fpath ${fpath}`) const currentTime = new Date() const newTime = new Date(currentTime.getTime() + 100) utimes(fpath, newTime, newTime, (err) => { @@ -457,6 +462,7 @@ class Project { onSuccess(`BAML client generated! (took ${Math.round(endMillis - startMillis)}ms)`) } } catch (e) { + console.error(`Failed to generate BAML client: ${e}`) onError(`Failed to generate BAML client: ${e}`) } }