From 62d19fc2ac42b39a4f32683c7e8c5ad95b566b24 Mon Sep 17 00:00:00 2001
From: Nick Brassel <nick@tzarc.org>
Date: Sat, 20 Jan 2024 08:11:17 +1100
Subject: [PATCH] Copy `compile_commands.json` to userspace, if in use.
 (#22925)

---
 lib/python/qmk/build_targets.py | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/lib/python/qmk/build_targets.py b/lib/python/qmk/build_targets.py
index 1ab489cec3..80f587bcc0 100644
--- a/lib/python/qmk/build_targets.py
+++ b/lib/python/qmk/build_targets.py
@@ -6,7 +6,7 @@ from typing import List, Union
 from pathlib import Path
 from dotty_dict import dotty, Dotty
 from milc import cli
-from qmk.constants import QMK_FIRMWARE, INTERMEDIATE_OUTPUT_PREFIX
+from qmk.constants import QMK_FIRMWARE, INTERMEDIATE_OUTPUT_PREFIX, HAS_QMK_USERSPACE, QMK_USERSPACE
 from qmk.commands import find_make, get_make_parallel_args, parse_configurator_json
 from qmk.keyboard import keyboard_folder
 from qmk.info import keymap_json
@@ -118,7 +118,10 @@ class BuildTarget:
         self.prepare_build(build_target=build_target, **env_vars)
         command = self.compile_command(build_target=build_target, dry_run=True, **env_vars)
         from qmk.cli.generate.compilation_database import write_compilation_database  # Lazy load due to circular references
-        write_compilation_database(command=command, output_path=QMK_FIRMWARE / 'compile_commands.json', skip_clean=skip_clean, **env_vars)
+        output_path = QMK_FIRMWARE / 'compile_commands.json'
+        write_compilation_database(command=command, output_path=output_path, skip_clean=skip_clean, **env_vars)
+        if output_path.exists() and HAS_QMK_USERSPACE:
+            shutil.copy(str(output_path), str(QMK_USERSPACE / 'compile_commands.json'))
 
     def compile(self, build_target: str = None, dry_run: bool = False, **env_vars) -> None:
         if self._clean or self._compiledb: