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"
|
pkg-fmt = "tgz"
|
||||||
|
|
||||||
[features]
|
[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) {
|
fn install_default_assets(opts: &CliArgs) {
|
||||||
let data_dir = opts.data_dir.clone().unwrap_or_else(get_default_data_dir);
|
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);
|
populate_data_dir(&data_dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,10 @@
|
||||||
|
#[cfg(not(feature = "disable_automatic_asset_installation"))]
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
#[cfg(not(feature = "disable_automatic_asset_installation"))]
|
||||||
use zellij_utils::{consts::VERSION, shared::set_permissions};
|
use zellij_utils::{consts::VERSION, shared::set_permissions};
|
||||||
|
|
||||||
|
#[cfg(not(feature = "disable_automatic_asset_installation"))]
|
||||||
macro_rules! asset_map {
|
macro_rules! asset_map {
|
||||||
($($src:literal => $dst:literal),+ $(,)?) => {
|
($($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) {
|
pub(crate) fn populate_data_dir(data_dir: &Path) {
|
||||||
// First run installation of default plugins & layouts
|
// First run installation of default plugins & layouts
|
||||||
let mut assets = asset_map! {
|
let mut assets = asset_map! {
|
||||||
|
|
@ -28,11 +32,20 @@ pub(crate) fn populate_data_dir(data_dir: &Path) {
|
||||||
|
|
||||||
for (path, bytes) in assets {
|
for (path, bytes) in assets {
|
||||||
let path = data_dir.join(path);
|
let path = data_dir.join(path);
|
||||||
let parent_path = path.parent().unwrap();
|
// TODO: Is the [path.parent()] really necessary here?
|
||||||
fs::create_dir_all(parent_path).unwrap();
|
// We already have the path and the parent through `data_dir`
|
||||||
set_permissions(parent_path).unwrap();
|
if let Some(parent_path) = path.parent() {
|
||||||
if out_of_date || !path.exists() {
|
fs::create_dir_all(parent_path).unwrap_or_else(|e| log::error!("{:?}", e));
|
||||||
fs::write(path, bytes).expect("Failed to install default assets!");
|
set_permissions(parent_path).unwrap_or_else(|e| log::error!("{:?}", e));
|
||||||
|
if out_of_date || !path.exists() {
|
||||||
|
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 mut connected_clients: Vec<ClientId> = vec![];
|
||||||
let plugin_dir = data_dir.join("plugins/");
|
let plugin_dir = data_dir.join("plugins/");
|
||||||
let plugin_global_data_dir = plugin_dir.join("data");
|
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 {
|
loop {
|
||||||
let (event, mut err_ctx) = bus.recv().expect("failed to receive event on channel");
|
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 input = Pipe::new();
|
||||||
let stderr = LoggingPipe::new(&plugin.location.to_string(), plugin_id);
|
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());
|
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")
|
let mut wasi_env = WasiState::new("Zellij")
|
||||||
.env("CLICOLOR_FORCE", "1")
|
.env("CLICOLOR_FORCE", "1")
|
||||||
|
|
|
||||||
|
|
@ -46,3 +46,5 @@ features = ["unstable"]
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
tempfile = "3.2.0"
|
tempfile = "3.2.0"
|
||||||
|
|
||||||
|
[features]
|
||||||
|
disable_automatic_asset_installation = [ ]
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue