fix(feat): disable_automatic_asset_installation (#1226)
* fix(feat): `disable_automatic_asset_installation`
This fixes a regression in the feature system:
The asset installation didn't get turned off by the feature.
Add error logging to the install functions.
Properly show features in setup
disable `mkdir` in `wasm_vm` on `feature-disable-asset-installation`
Alternative:
Is this even needed? We make sure the directory is there upon the
normal asset installation.
fixes #1130
This commit is contained in:
parent
2e03692f5b
commit
b0276dfd74
5 changed files with 31 additions and 9 deletions
|
|
@ -64,4 +64,4 @@ bin-dir = "{ bin }{ binary-ext }"
|
|||
pkg-fmt = "tgz"
|
||||
|
||||
[features]
|
||||
disable_automatic_asset_installation = []
|
||||
disable_automatic_asset_installation = [ "zellij-utils/disable_automatic_asset_installation" ]
|
||||
|
|
|
|||
|
|
@ -89,7 +89,6 @@ fn create_new_client() -> ClientInfo {
|
|||
|
||||
fn install_default_assets(opts: &CliArgs) {
|
||||
let data_dir = opts.data_dir.clone().unwrap_or_else(get_default_data_dir);
|
||||
#[cfg(not(disable_automatic_asset_installation))]
|
||||
populate_data_dir(&data_dir);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,10 @@
|
|||
#[cfg(not(feature = "disable_automatic_asset_installation"))]
|
||||
use std::fs;
|
||||
use std::path::Path;
|
||||
#[cfg(not(feature = "disable_automatic_asset_installation"))]
|
||||
use zellij_utils::{consts::VERSION, shared::set_permissions};
|
||||
|
||||
#[cfg(not(feature = "disable_automatic_asset_installation"))]
|
||||
macro_rules! asset_map {
|
||||
($($src:literal => $dst:literal),+ $(,)?) => {
|
||||
{
|
||||
|
|
@ -14,6 +17,7 @@ macro_rules! asset_map {
|
|||
}
|
||||
}
|
||||
|
||||
#[cfg(not(feature = "disable_automatic_asset_installation"))]
|
||||
pub(crate) fn populate_data_dir(data_dir: &Path) {
|
||||
// First run installation of default plugins & layouts
|
||||
let mut assets = asset_map! {
|
||||
|
|
@ -28,11 +32,20 @@ pub(crate) fn populate_data_dir(data_dir: &Path) {
|
|||
|
||||
for (path, bytes) in assets {
|
||||
let path = data_dir.join(path);
|
||||
let parent_path = path.parent().unwrap();
|
||||
fs::create_dir_all(parent_path).unwrap();
|
||||
set_permissions(parent_path).unwrap();
|
||||
// TODO: Is the [path.parent()] really necessary here?
|
||||
// We already have the path and the parent through `data_dir`
|
||||
if let Some(parent_path) = path.parent() {
|
||||
fs::create_dir_all(parent_path).unwrap_or_else(|e| log::error!("{:?}", e));
|
||||
set_permissions(parent_path).unwrap_or_else(|e| log::error!("{:?}", e));
|
||||
if out_of_date || !path.exists() {
|
||||
fs::write(path, bytes).expect("Failed to install default assets!");
|
||||
fs::write(path, bytes)
|
||||
.unwrap_or_else(|e| log::error!("Failed to install default assets! {:?}", e));
|
||||
}
|
||||
} else {
|
||||
log::error!("The path {:?} has no parent directory", path);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "disable_automatic_asset_installation")]
|
||||
pub(crate) fn populate_data_dir(_data_dir: &Path) {}
|
||||
|
|
|
|||
|
|
@ -92,7 +92,9 @@ pub(crate) fn wasm_thread_main(
|
|||
let mut connected_clients: Vec<ClientId> = vec![];
|
||||
let plugin_dir = data_dir.join("plugins/");
|
||||
let plugin_global_data_dir = plugin_dir.join("data");
|
||||
fs::create_dir_all(&plugin_global_data_dir).unwrap();
|
||||
|
||||
#[cfg(not(feature = "disable_automatic_asset_installation"))]
|
||||
fs::create_dir_all(&plugin_global_data_dir).unwrap_or_else(|e| log::error!("{:?}", e));
|
||||
|
||||
loop {
|
||||
let (event, mut err_ctx) = bus.recv().expect("failed to receive event on channel");
|
||||
|
|
@ -270,7 +272,13 @@ fn start_plugin(
|
|||
let input = Pipe::new();
|
||||
let stderr = LoggingPipe::new(&plugin.location.to_string(), plugin_id);
|
||||
let plugin_own_data_dir = plugin_global_data_dir.join(Url::from(&plugin.location).to_string());
|
||||
fs::create_dir_all(&plugin_own_data_dir).unwrap();
|
||||
fs::create_dir_all(&plugin_own_data_dir).unwrap_or_else(|e| {
|
||||
log::error!(
|
||||
"Could not create plugin_own_data_dir in {:?} \n Error: {:?}",
|
||||
&plugin_own_data_dir,
|
||||
e
|
||||
)
|
||||
});
|
||||
|
||||
let mut wasi_env = WasiState::new("Zellij")
|
||||
.env("CLICOLOR_FORCE", "1")
|
||||
|
|
|
|||
|
|
@ -46,3 +46,5 @@ features = ["unstable"]
|
|||
[dev-dependencies]
|
||||
tempfile = "3.2.0"
|
||||
|
||||
[features]
|
||||
disable_automatic_asset_installation = [ ]
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue