diff --git a/Cargo.toml b/Cargo.toml index 26a9da0d63..264854cb79 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -69,5 +69,6 @@ pkg-fmt = "tgz" [features] # See remarks in zellij_utils/Cargo.toml +default = [ "zellij-utils/asset_map" ] disable_automatic_asset_installation = [ "zellij-utils/disable_automatic_asset_installation" ] unstable = [ "zellij-client/unstable", "zellij-utils/unstable" ] diff --git a/zellij-utils/Cargo.toml b/zellij-utils/Cargo.toml index 021d902053..6d0e345196 100644 --- a/zellij-utils/Cargo.toml +++ b/zellij-utils/Cargo.toml @@ -56,3 +56,4 @@ insta = { version = "1.6.0", features = ["backtrace"] } # - builtin plugins MUST be available from whatever is configured as `PLUGIN_DIR` disable_automatic_asset_installation = [] unstable = [] +asset_map = [] diff --git a/zellij-utils/src/consts.rs b/zellij-utils/src/consts.rs index d8b60e3511..328be223be 100644 --- a/zellij-utils/src/consts.rs +++ b/zellij-utils/src/consts.rs @@ -35,10 +35,10 @@ pub const FEATURES: &[&str] = &[ "disable_automatic_asset_installation", ]; -#[cfg(not(target_family = "wasm"))] +#[cfg(all(not(target_family = "wasm"), feature = "asset_map"))] pub use not_wasm::*; -#[cfg(not(target_family = "wasm"))] +#[cfg(all(not(target_family = "wasm"), feature = "asset_map"))] mod not_wasm { use lazy_static::lazy_static; use std::collections::HashMap; diff --git a/zellij-utils/src/input/plugins.rs b/zellij-utils/src/input/plugins.rs index 1ab3e831fa..7503f43b0c 100644 --- a/zellij-utils/src/input/plugins.rs +++ b/zellij-utils/src/input/plugins.rs @@ -9,7 +9,7 @@ use serde::{Deserialize, Serialize}; use url::Url; use super::layout::{RunPlugin, RunPluginLocation}; -#[cfg(not(target_family = "wasm"))] +#[cfg(all(not(target_family = "wasm"), feature = "asset_map"))] use crate::consts::ASSET_MAP; pub use crate::data::PluginTag; use crate::errors::prelude::*; @@ -129,7 +129,7 @@ impl PluginConfig { for path in paths { // Check if the plugin path matches an entry in the asset map. If so, load it directly // from memory, don't bother with the disk. - #[cfg(not(target_family = "wasm"))] + #[cfg(all(not(target_family = "wasm"), feature = "asset_map"))] if !cfg!(feature = "disable_automatic_asset_installation") && self.is_builtin() { let asset_path = PathBuf::from("plugins").join(path); if let Some(bytes) = ASSET_MAP.get(&asset_path) { @@ -160,7 +160,7 @@ impl PluginConfig { } // Not reached if a plugin is found! - #[cfg(not(target_family = "wasm"))] + #[cfg(all(not(target_family = "wasm"), feature = "asset_map"))] if self.is_builtin() { // Layout requested a builtin plugin that wasn't found let plugin_path = self.path.with_extension("wasm"); diff --git a/zellij-utils/src/setup.rs b/zellij-utils/src/setup.rs index ddbc59673b..5de536c71d 100644 --- a/zellij-utils/src/setup.rs +++ b/zellij-utils/src/setup.rs @@ -1,4 +1,4 @@ -#[cfg(not(target_family = "wasm"))] +#[cfg(all(not(target_family = "wasm"), feature = "asset_map"))] use crate::consts::ASSET_MAP; use crate::input::theme::Themes; use crate::{ @@ -175,7 +175,7 @@ pub fn dump_specified_layout(layout: &str) -> std::io::Result<()> { } } -#[cfg(not(target_family = "wasm"))] +#[cfg(all(not(target_family = "wasm"), feature = "asset_map"))] pub fn dump_builtin_plugins(path: &PathBuf) -> Result<()> { for (asset_path, bytes) in ASSET_MAP.iter() { let plugin_path = path.join(asset_path); @@ -205,7 +205,7 @@ pub fn dump_builtin_plugins(path: &PathBuf) -> Result<()> { Ok(()) } -#[cfg(target_family = "wasm")] +#[cfg(any(target_family = "wasm", not(feature = "asset_map")))] pub fn dump_builtin_plugins(_path: &PathBuf) -> Result<()> { Ok(()) }