diff options
author | Brooks J Rady <b.j.rady@gmail.com> | 2021-02-16 17:23:16 +0000 |
---|---|---|
committer | Brooks J Rady <b.j.rady@gmail.com> | 2021-02-16 17:23:16 +0000 |
commit | 5a3caba55f4d90e7e58fe797b805fb610e0de9c4 (patch) | |
tree | 0889514af166dec69faad91eb2ca76496f124aab | |
parent | c74e2ef27356257c45c6a7bdb24c51a7ae390d8f (diff) |
Install assets on first run
-rw-r--r-- | assets/plugins/status-bar.wasm | bin | 4544837 -> 436470 bytes | |||
-rw-r--r-- | assets/plugins/strider.wasm | bin | 6006435 -> 527289 bytes | |||
-rw-r--r-- | build.rs | 16 | ||||
-rw-r--r-- | src/common/install.rs | 12 | ||||
-rw-r--r-- | src/common/mod.rs | 1 | ||||
-rw-r--r-- | src/main.rs | 21 |
6 files changed, 33 insertions, 17 deletions
diff --git a/assets/plugins/status-bar.wasm b/assets/plugins/status-bar.wasm Binary files differindex f9c329801..1b82a5c0d 100644 --- a/assets/plugins/status-bar.wasm +++ b/assets/plugins/status-bar.wasm diff --git a/assets/plugins/strider.wasm b/assets/plugins/strider.wasm Binary files differindex d82b57cad..46f272ebc 100644 --- a/assets/plugins/strider.wasm +++ b/assets/plugins/strider.wasm @@ -134,20 +134,4 @@ fn main() { clap_app.gen_completions(BIN_NAME, Shell::Bash, &out_dir); clap_app.gen_completions(BIN_NAME, Shell::Zsh, &out_dir); clap_app.gen_completions(BIN_NAME, Shell::Fish, &out_dir); - - // Install Default Plugins and Layouts - let assets = vec![ - "plugins/status-bar.wasm", - "plugins/strider.wasm", - "layouts/default.yaml", - "layouts/strider.yaml", - ]; - let project_dirs = ProjectDirs::from("org", "Zellij Contributors", "Zellij").unwrap(); - let data_dir = project_dirs.data_dir(); - fs::create_dir_all(data_dir.join("plugins")).unwrap(); - fs::create_dir_all(data_dir.join("layouts")).unwrap(); - for asset in assets { - fs::copy(Path::new("assets/").join(asset), data_dir.join(asset)) - .expect("Failed to copy asset files"); - } } diff --git a/src/common/install.rs b/src/common/install.rs new file mode 100644 index 000000000..cd00aa1f7 --- /dev/null +++ b/src/common/install.rs @@ -0,0 +1,12 @@ +#[macro_export] +macro_rules! asset_map { + ($($path:literal),+) => { + { + let mut assets = std::collections::HashMap::new(); + $( + assets.insert($path, include_bytes!(concat!("../assets/", $path)).to_vec()); + )+ + assets + } + } +}
\ No newline at end of file diff --git a/src/common/mod.rs b/src/common/mod.rs index 00ee64fd5..a256e3ef6 100644 --- a/src/common/mod.rs +++ b/src/common/mod.rs @@ -2,6 +2,7 @@ pub mod command_is_executing; pub mod errors; pub mod input; pub mod ipc; +pub mod install; pub mod os_input_output; pub mod pty_bus; pub mod screen; diff --git a/src/main.rs b/src/main.rs index 50c0b6f36..5c9a70ea9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -11,8 +11,9 @@ use common::{ command_is_executing, errors, os_input_output, pty_bus, screen, start, utils, wasm_vm, ApiCommand, }; +use directories_next::ProjectDirs; -use std::io::Write; +use std::{fs, io::Write}; use std::os::unix::net::UnixStream; use structopt::StructOpt; @@ -27,6 +28,24 @@ use crate::utils::{ }; pub fn main() { + // First run installation of default plugins & layouts + let project_dirs = ProjectDirs::from("org", "Zellij Contributors", "Zellij").unwrap(); + let data_dir = project_dirs.data_dir(); + let assets = asset_map!{ + "plugins/status-bar.wasm", + "plugins/strider.wasm", + "layouts/default.yaml", + "layouts/strider.yaml" + }; + + for (path, bytes) in assets { + let path = data_dir.join(path); + fs::create_dir_all(path.parent().unwrap()).unwrap(); + if !path.exists() { + fs::write(path, bytes).expect("Failed to install default assets!"); + } + } + let opts = CliArgs::from_args(); if let Some(split_dir) = opts.split { match split_dir { |