summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrooks J Rady <b.j.rady@gmail.com>2021-02-16 17:23:16 +0000
committerBrooks J Rady <b.j.rady@gmail.com>2021-02-16 17:23:16 +0000
commit5a3caba55f4d90e7e58fe797b805fb610e0de9c4 (patch)
tree0889514af166dec69faad91eb2ca76496f124aab
parentc74e2ef27356257c45c6a7bdb24c51a7ae390d8f (diff)
Install assets on first run
-rw-r--r--assets/plugins/status-bar.wasmbin4544837 -> 436470 bytes
-rw-r--r--assets/plugins/strider.wasmbin6006435 -> 527289 bytes
-rw-r--r--build.rs16
-rw-r--r--src/common/install.rs12
-rw-r--r--src/common/mod.rs1
-rw-r--r--src/main.rs21
6 files changed, 33 insertions, 17 deletions
diff --git a/assets/plugins/status-bar.wasm b/assets/plugins/status-bar.wasm
index f9c329801..1b82a5c0d 100644
--- a/assets/plugins/status-bar.wasm
+++ b/assets/plugins/status-bar.wasm
Binary files differ
diff --git a/assets/plugins/strider.wasm b/assets/plugins/strider.wasm
index d82b57cad..46f272ebc 100644
--- a/assets/plugins/strider.wasm
+++ b/assets/plugins/strider.wasm
Binary files differ
diff --git a/build.rs b/build.rs
index 2bea27270..85e997a62 100644
--- a/build.rs
+++ b/build.rs
@@ -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 {