Touch up extension DAP schemas fix (#33548)

Cole Miller and Piotr created

Updates #33546 

Release Notes:

- N/A

Co-authored-by: Piotr <piotr@zed.dev>

Change summary

crates/extension_cli/src/main.rs | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)

Detailed changes

crates/extension_cli/src/main.rs 🔗

@@ -260,17 +260,20 @@ async fn copy_extension_resources(
     }
 
     if !manifest.debug_adapters.is_empty() {
-        let output_debug_adapter_schemas_dir = output_dir.join("debug_adapter_schemas");
-        fs::create_dir_all(&output_debug_adapter_schemas_dir)?;
         for (debug_adapter, entry) in &manifest.debug_adapters {
             let schema_path = entry.schema_path.clone().unwrap_or_else(|| {
                 PathBuf::from("debug_adapter_schemas".to_owned())
-                    .join(format!("{debug_adapter}.json"))
+                    .join(debug_adapter.as_ref())
+                    .with_extension("json")
             });
+            let parent = schema_path
+                .parent()
+                .with_context(|| format!("invalid empty schema path for {debug_adapter}"))?;
+            fs::create_dir_all(output_dir.join(parent))?;
             copy_recursive(
                 fs.as_ref(),
-                &extension_path.join(schema_path.clone()),
-                &output_debug_adapter_schemas_dir.join(format!("{debug_adapter}.json")),
+                &extension_path.join(&schema_path),
+                &output_dir.join(&schema_path),
                 CopyOptions {
                     overwrite: true,
                     ignore_if_exists: false,