From 9d6c0e57a05209b4a1a46091e9b3450110ee32a1 Mon Sep 17 00:00:00 2001 From: Marshall Bowers Date: Thu, 30 Jan 2025 16:45:04 -0500 Subject: [PATCH] extension_cli: Add support for packaging icon themes (#23978) This PR updates the Zed extension CLI with support for packaging extensions containing icon themes. The `icons` directory in the extension will be copied into the packaged extension to facilitate distributing icon files. Release Notes: - N/A --- crates/extension_cli/src/main.rs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/crates/extension_cli/src/main.rs b/crates/extension_cli/src/main.rs index ffa9555c21..917eca96db 100644 --- a/crates/extension_cli/src/main.rs +++ b/crates/extension_cli/src/main.rs @@ -167,6 +167,38 @@ async fn copy_extension_resources( } } + if !manifest.icon_themes.is_empty() { + let output_icon_themes_dir = output_dir.join("icon_themes"); + fs::create_dir_all(&output_icon_themes_dir)?; + for icon_theme_path in &manifest.icon_themes { + fs::copy( + extension_path.join(icon_theme_path), + output_icon_themes_dir.join( + icon_theme_path + .file_name() + .ok_or_else(|| anyhow!("invalid icon theme path"))?, + ), + ) + .with_context(|| { + format!("failed to copy icon theme '{}'", icon_theme_path.display()) + })?; + } + + let output_icons_dir = output_dir.join("icons"); + fs::create_dir_all(&output_icons_dir)?; + copy_recursive( + fs.as_ref(), + &extension_path.join("icons"), + &output_icons_dir, + CopyOptions { + overwrite: true, + ignore_if_exists: false, + }, + ) + .await + .with_context(|| "failed to copy icons")?; + } + if !manifest.languages.is_empty() { let output_languages_dir = output_dir.join("languages"); fs::create_dir_all(&output_languages_dir)?;