From 040d10df0f85eb0004831eae330adc2690f43dd7 Mon Sep 17 00:00:00 2001 From: Kunal Mohan Date: Tue, 18 May 2021 22:16:23 +0530 Subject: Re-export common dependencies from zellij-utils --- Cargo.lock | 23 +++-------------------- Cargo.toml | 7 +------ src/main.rs | 2 +- src/tests/fakes.rs | 9 ++++++--- src/tests/utils.rs | 2 ++ zellij-client/Cargo.toml | 8 +------- zellij-client/src/input_handler.rs | 2 ++ zellij-client/src/os_input_output.rs | 12 +++++++----- zellij-server/Cargo.toml | 21 ++++----------------- zellij-server/src/lib.rs | 7 +++++-- zellij-server/src/os_input_output.rs | 23 +++++++++++++---------- zellij-server/src/panes/grid.rs | 3 ++- zellij-server/src/panes/terminal_character.rs | 2 +- zellij-server/src/panes/terminal_pane.rs | 2 ++ zellij-server/src/panes/unit/grid_tests.rs | 2 +- zellij-server/src/pty.rs | 2 ++ zellij-server/src/route.rs | 2 +- zellij-server/src/screen.rs | 2 ++ zellij-server/src/tab.rs | 3 +++ zellij-server/src/ui/boundaries.rs | 2 ++ zellij-server/src/ui/layout.rs | 5 +++++ zellij-server/src/wasm_vm.rs | 2 ++ zellij-utils/Cargo.toml | 19 +++++++++++-------- zellij-utils/src/lib.rs | 12 ++++++++++++ 24 files changed, 91 insertions(+), 83 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 31c5e7093..b8e9efb4c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2290,13 +2290,9 @@ name = "zellij" version = "0.12.0" dependencies = [ "insta", - "interprocess", - "nix", "structopt", - "vte 0.10.1", "zellij-client", "zellij-server", - "zellij-tile", "zellij-utils", ] @@ -2304,13 +2300,7 @@ dependencies = [ name = "zellij-client" version = "0.12.0" dependencies = [ - "interprocess", - "libc", - "nix", - "signal-hook 0.3.8", "termbg", - "termion", - "zellij-tile", "zellij-utils", ] @@ -2319,22 +2309,12 @@ name = "zellij-server" version = "0.12.0" dependencies = [ "ansi_term 0.12.1", - "async-std", "daemonize", "insta", - "interprocess", - "libc", - "nix", - "serde", "serde_json", - "serde_yaml", - "signal-hook 0.3.8", - "termion", "unicode-width", - "vte 0.10.1", "wasmer", "wasmer-wasi", - "zellij-tile", "zellij-utils", ] @@ -2366,14 +2346,17 @@ dependencies = [ "directories-next", "interprocess", "lazy_static", + "libc", "names", "nix", "serde", "serde_yaml", + "signal-hook 0.3.8", "strip-ansi-escapes", "structopt", "strum", "tempfile", "termion", + "vte 0.10.1", "zellij-tile", ] diff --git a/Cargo.toml b/Cargo.toml index 231b480a3..92c36d103 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,14 +13,9 @@ resolver = "2" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -zellij-utils = { path = "zellij-utils/", version = "0.12.0" } zellij-client = { path = "zellij-client/", version = "0.12.0" } zellij-server = { path = "zellij-server/", version = "0.12.0" } -zellij-tile = { path = "zellij-tile/", version = "0.12.0" } -structopt = "0.3" -interprocess = "1.1.1" -vte = "0.10.1" -nix = "0.19.1" +zellij-utils = { path = "zellij-utils/", version = "0.12.0" } [dev-dependencies] insta = "1.6.0" diff --git a/src/main.rs b/src/main.rs index 1e1d4764e..6e90edf54 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,7 +2,6 @@ mod tests; use std::convert::TryFrom; -use structopt::StructOpt; use zellij_client::{os_input_output::get_client_os_input, start_client}; use zellij_server::{os_input_output::get_server_os_input, start_server}; use zellij_utils::{ @@ -11,6 +10,7 @@ use zellij_utils::{ input::config::Config, logging::*, setup::Setup, + structopt::StructOpt, }; pub fn main() { diff --git a/src/tests/fakes.rs b/src/tests/fakes.rs index 09cc2ba3d..b0b77b567 100644 --- a/src/tests/fakes.rs +++ b/src/tests/fakes.rs @@ -1,18 +1,21 @@ -use crate::tests::possible_tty_inputs::{get_possible_tty_inputs, Bytes}; -use crate::tests::utils::commands::{QUIT, SLEEP}; -use interprocess::local_socket::LocalSocketStream; use std::collections::{HashMap, VecDeque}; use std::io::Write; use std::os::unix::io::RawFd; use std::path::PathBuf; use std::sync::{mpsc, Arc, Condvar, Mutex}; use std::time::{Duration, Instant}; + +use zellij_utils::{nix, zellij_tile}; + +use crate::tests::possible_tty_inputs::{get_possible_tty_inputs, Bytes}; +use crate::tests::utils::commands::{QUIT, SLEEP}; use zellij_client::os_input_output::ClientOsApi; use zellij_server::os_input_output::ServerOsApi; use zellij_tile::data::Palette; use zellij_utils::{ channels::{ChannelWithContext, SenderType, SenderWithContext}, errors::ErrorContext, + interprocess::local_socket::LocalSocketStream, ipc::{ClientToServerMsg, ServerToClientMsg}, pane_size::PositionAndSize, shared::default_palette, diff --git a/src/tests/utils.rs b/src/tests/utils.rs index 441f9bcea..6267c883a 100644 --- a/src/tests/utils.rs +++ b/src/tests/utils.rs @@ -1,3 +1,5 @@ +use zellij_utils::{vte, zellij_tile}; + use zellij_server::{panes::TerminalPane, tab::Pane}; use zellij_tile::data::Palette; use zellij_utils::pane_size::PositionAndSize; diff --git a/zellij-client/Cargo.toml b/zellij-client/Cargo.toml index 5d7efdddc..360dfeaec 100644 --- a/zellij-client/Cargo.toml +++ b/zellij-client/Cargo.toml @@ -9,14 +9,8 @@ license = "MIT" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -zellij-utils = { path = "../zellij-utils/", version = "0.12.0" } -zellij-tile = { path = "../zellij-tile/", version = "0.12.0" } -termion = "1.5.0" -signal-hook = "0.3" -nix = "0.19.1" -interprocess = "1.1.1" -libc = "0.2" termbg = "0.2.0" +zellij-utils = { path = "../zellij-utils/", version = "0.12.0" } [features] test = ["zellij-utils/test"] diff --git a/zellij-client/src/input_handler.rs b/zellij-client/src/input_handler.rs index e67bdf829..4e2cff94c 100644 --- a/zellij-client/src/input_handler.rs +++ b/zellij-client/src/input_handler.rs @@ -1,5 +1,7 @@ //! Main input logic. +use zellij_utils::{termion, zellij_tile}; + use crate::{os_input_output::ClientOsApi, ClientInstruction, CommandIsExecuting}; use zellij_utils::{ channels::{SenderWithContext, OPENCALLS}, diff --git a/zellij-client/src/os_input_output.rs b/zellij-client/src/os_input_output.rs index 02a516e8a..9d8617f5f 100644 --- a/zellij-client/src/os_input_output.rs +++ b/zellij-client/src/os_input_output.rs @@ -1,3 +1,5 @@ +use zellij_utils::{interprocess, libc, nix, signal_hook, zellij_tile}; + use interprocess::local_socket::LocalSocketStream; use nix::pty::Winsize; use nix::sys::termios; @@ -8,12 +10,12 @@ use std::os::unix::io::RawFd; use std::path::Path; use std::sync::{Arc, Mutex}; use zellij_tile::data::{Palette, PaletteColor}; -use zellij_utils::errors::ErrorContext; -use zellij_utils::ipc::{ - ClientToServerMsg, IpcReceiverWithContext, IpcSenderWithContext, ServerToClientMsg, +use zellij_utils::{ + errors::ErrorContext, + ipc::{ClientToServerMsg, IpcReceiverWithContext, IpcSenderWithContext, ServerToClientMsg}, + pane_size::PositionAndSize, + shared::default_palette, }; -use zellij_utils::pane_size::PositionAndSize; -use zellij_utils::shared::default_palette; fn into_raw_mode(pid: RawFd) { let mut tio = termios::tcgetattr(pid).expect("could not get terminal attribute"); diff --git a/zellij-server/Cargo.toml b/zellij-server/Cargo.toml index 97930c75b..532ef9317 100644 --- a/zellij-server/Cargo.toml +++ b/zellij-server/Cargo.toml @@ -9,26 +9,13 @@ license = "MIT" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -serde = { version = "1.0", features = ["derive"] } +ansi_term = "0.12.1" +daemonize = "0.4.1" +serde_json = "1.0" +unicode-width = "0.1.8" wasmer = "1.0.0" wasmer-wasi = "1.0.0" -zellij-tile = { path = "../zellij-tile/", version = "0.12.0" } zellij-utils = { path = "../zellij-utils/", version = "0.12.0" } -vte = "0.10.1" -unicode-width = "0.1.8" -ansi_term = "0.12.1" -serde_yaml = "0.8" -nix = "0.19.1" -termion = "1.5.0" -signal-hook = "0.3" -libc = "0.2" -serde_json = "1.0" -daemonize = "0.4.1" -interprocess = "1.1.1" - -[dependencies.async-std] -version = "1.3.0" -features = ["unstable"] [dev-dependencies] insta = "1.6.0" diff --git a/zellij-server/src/lib.rs b/zellij-server/src/lib.rs index 6fa87e481..749135208 100644 --- a/zellij-server/src/lib.rs +++ b/zellij-server/src/lib.rs @@ -9,6 +9,8 @@ mod thread_bus; mod ui; mod wasm_vm; +use zellij_utils::zellij_tile; + use std::sync::{Arc, RwLock}; use std::thread; use std::{path::PathBuf, sync::mpsc}; @@ -131,8 +133,9 @@ pub fn start_server(os_input: Box, socket_path: PathBuf) { let _ = thread::Builder::new() .name("server_listener".to_string()) .spawn({ - use interprocess::local_socket::LocalSocketListener; - use zellij_utils::shared::set_permissions; + use zellij_utils::{ + interprocess::local_socket::LocalSocketListener, shared::set_permissions, + }; let os_input = os_input.clone(); let sessions = sessions.clone(); diff --git a/zellij-server/src/os_input_output.rs b/zellij-server/src/os_input_output.rs index 1fef826b8..89fa4bb96 100644 --- a/zellij-server/src/os_input_output.rs +++ b/zellij-server/src/os_input_output.rs @@ -1,3 +1,11 @@ +use std::env; +use std::os::unix::io::RawFd; +use std::path::PathBuf; +use std::process::{Child, Command}; +use std::sync::{Arc, Mutex}; + +use zellij_utils::{interprocess, libc, nix, signal_hook, zellij_tile}; + use interprocess::local_socket::LocalSocketStream; use nix::fcntl::{fcntl, FcntlArg, OFlag}; use nix::pty::{forkpty, Winsize}; @@ -6,17 +14,12 @@ use nix::sys::termios; use nix::sys::wait::waitpid; use nix::unistd::{self, ForkResult, Pid}; use signal_hook::consts::*; -use std::env; -use std::os::unix::io::RawFd; -use std::path::PathBuf; -use std::process::{Child, Command}; -use std::sync::{Arc, Mutex}; use zellij_tile::data::Palette; -use zellij_utils::errors::ErrorContext; -use zellij_utils::ipc::{ - ClientToServerMsg, IpcReceiverWithContext, IpcSenderWithContext, ServerToClientMsg, +use zellij_utils::{ + errors::ErrorContext, + ipc::{ClientToServerMsg, IpcReceiverWithContext, IpcSenderWithContext, ServerToClientMsg}, + shared::default_palette, }; -use zellij_utils::shared::default_palette; pub(crate) fn set_terminal_size_using_fd(fd: RawFd, columns: u16, rows: u16) { // TODO: do this with the nix ioctl @@ -36,7 +39,7 @@ pub(crate) fn set_terminal_size_using_fd(fd: RawFd, columns: u16, rows: u16) { /// process exits. fn handle_command_exit(mut child: Child) { // register the SIGINT signal (TODO handle more signals) - let mut signals = ::signal_hook::iterator::Signals::new(&[SIGINT]).unwrap(); + let mut signals = signal_hook::iterator::Signals::new(&[SIGINT]).unwrap(); 'handle_exit: loop { // test whether the child process has exited match child.try_wait() { diff --git a/zellij-server/src/panes/grid.rs b/zellij-server/src/panes/grid.rs index d9cef5def..ac347db0e 100644 --- a/zellij-server/src/panes/grid.rs +++ b/zellij-server/src/panes/grid.rs @@ -5,11 +5,12 @@ use std::{ str, }; -use vte::{Params, Perform}; +use zellij_utils::{vte, zellij_tile}; const TABSTOP_WIDTH: usize = 8; // TODO: is this always right? const SCROLL_BACK: usize = 10_000; +use vte::{Params, Perform}; use zellij_tile::data::{Palette, PaletteColor}; use zellij_utils::{consts::VERSION, logging::debug_log_to_file, shared::version_number}; diff --git a/zellij-server/src/panes/terminal_character.rs b/zellij-server/src/panes/terminal_character.rs index c55569f05..e6489eb42 100644 --- a/zellij-server/src/panes/terminal_character.rs +++ b/zellij-server/src/panes/terminal_character.rs @@ -3,8 +3,8 @@ use unicode_width::UnicodeWidthChar; use std::convert::TryFrom; use std::fmt::{self, Debug, Display, Formatter}; use std::ops::{Index, IndexMut}; -use vte::ParamsIter; use zellij_utils::logging::debug_log_to_file; +use zellij_utils::vte::ParamsIter; pub const EMPTY_TERMINAL_CHARACTER: TerminalCharacter = TerminalCharacter { character: ' ', diff --git a/zellij-server/src/panes/terminal_pane.rs b/zellij-server/src/panes/terminal_pane.rs index eaeb00264..7e45c77bb 100644 --- a/zellij-server/src/panes/terminal_pane.rs +++ b/zellij-server/src/panes/terminal_pane.rs @@ -1,3 +1,5 @@ +use zellij_utils::{vte, zellij_tile}; + use std::fmt::Debug; use std::os::unix::io::RawFd; use std::time::Instant; diff --git a/zellij-server/src/panes/unit/grid_tests.rs b/zellij-server/src/panes/unit/grid_tests.rs index 7612a05d1..1a1d7f5cc 100644 --- a/zellij-server/src/panes/unit/grid_tests.rs +++ b/zellij-server/src/panes/unit/grid_tests.rs @@ -1,6 +1,6 @@ use super::super::Grid; use ::insta::assert_snapshot; -use zellij_tile::data::Palette; +use zellij_utils::{vte, zellij_tile::data::Palette}; fn read_fixture(fixture_name: &str) -> Vec { let mut path_to_file = std::path::PathBuf::new(); diff --git a/zellij-server/src/pty.rs b/zellij-server/src/pty.rs index 373b5f0b5..e122b9fed 100644 --- a/zellij-server/src/pty.rs +++ b/zellij-server/src/pty.rs @@ -1,3 +1,5 @@ +use zellij_utils::{async_std, nix}; + use async_std::stream::*; use async_std::task; use async_std::task::*; diff --git a/zellij-server/src/route.rs b/zellij-server/src/route.rs index e8ff33762..237d04a6d 100644 --- a/zellij-server/src/route.rs +++ b/zellij-server/src/route.rs @@ -1,6 +1,6 @@ use std::sync::{Arc, RwLock}; -use zellij_tile::data::Event; +use zellij_utils::zellij_tile::data::Event; use crate::{ os_input_output::ServerOsApi, pty::PtyInstruction, screen::ScreenInstruction, diff --git a/zellij-server/src/screen.rs b/zellij-server/src/screen.rs index 178fd58e9..97e38a39e 100644 --- a/zellij-server/src/screen.rs +++ b/zellij-server/src/screen.rs @@ -4,6 +4,8 @@ use std::collections::BTreeMap; use std::os::unix::io::RawFd; use std::str; +use zellij_utils::zellij_tile; + use crate::{ panes::PaneId, pty::{PtyInstruction, VteBytes}, diff --git a/zellij-server/src/tab.rs b/zellij-server/src/tab.rs index 69de7e861..effb871b7 100644 --- a/zellij-server/src/tab.rs +++ b/zellij-server/src/tab.rs @@ -1,6 +1,8 @@ //! `Tab`s holds multiple panes. It tracks their coordinates (x/y) and size, //! as well as how they should be resized +use zellij_utils::{serde, zellij_tile}; + use crate::{ os_input_output::ServerOsApi, panes::{PaneId, PluginPane, TerminalPane}, @@ -78,6 +80,7 @@ pub(crate) struct Tab { } #[derive(Clone, Debug, Default, Serialize, Deserialize)] +#[serde(crate = "self::serde")] pub(crate) struct TabData { /* subset of fields to publish to plugins */ pub position: usize, diff --git a/zellij-server/src/ui/boundaries.rs b/zellij-server/src/ui/boundaries.rs index 984b13762..42a80ace1 100644 --- a/zellij-server/src/ui/boundaries.rs +++ b/zellij-server/src/ui/boundaries.rs @@ -1,3 +1,5 @@ +use zellij_utils::zellij_tile; + use crate::tab::Pane; use ansi_term::Colour::{Fixed, RGB}; use std::collections::HashMap; diff --git a/zellij-server/src/ui/layout.rs b/zellij-server/src/ui/layout.rs index 9edf50474..8d449d8ba 100644 --- a/zellij-server/src/ui/layout.rs +++ b/zellij-server/src/ui/layout.rs @@ -1,3 +1,5 @@ +use zellij_utils::{serde, serde_yaml}; + use serde::{Deserialize, Serialize}; use std::path::{Path, PathBuf}; use std::{fs::File, io::prelude::*}; @@ -167,18 +169,21 @@ fn split_space( } #[derive(Debug, Serialize, Deserialize, Clone)] +#[serde(crate = "self::serde")] pub(crate) enum Direction { Horizontal, Vertical, } #[derive(Debug, Serialize, Deserialize, Clone, Copy)] +#[serde(crate = "self::serde")] pub(crate) enum SplitSize { Percent(u8), // 1 to 100 Fixed(u16), // An absolute number of columns or rows } #[derive(Debug, Serialize, Deserialize, Clone)] +#[serde(crate = "self::serde")] pub(crate) struct Layout { pub direction: Direction, #[serde(default, skip_serializing_if = "Vec::is_empty")] diff --git a/zellij-server/src/wasm_vm.rs b/zellij-server/src/wasm_vm.rs index 65f5358ad..53dceaa75 100644 --- a/zellij-server/src/wasm_vm.rs +++ b/zellij-server/src/wasm_vm.rs @@ -7,6 +7,8 @@ use std::sync::{mpsc::Sender, Arc, Mutex}; use std::thread; use std::time::{Duration, Instant}; +use zellij_utils::{serde, zellij_tile}; + use serde::{de::DeserializeOwned, Serialize}; use wasmer::{ imports, ChainableNamedResolver, Function, ImportObject, Instance, Module, Store, Value, diff --git a/zellij-utils/Cargo.toml b/zellij-utils/Cargo.toml index d33ac659d..b1f48d10b 100644 --- a/zellij-utils/Cargo.toml +++ b/zellij-utils/Cargo.toml @@ -11,19 +11,22 @@ license = "MIT" [dependencies] backtrace = "0.3.55" bincode = "1.3.1" +colors-transform = "0.2.5" +directories-next = "2.0" interprocess = "1.1.1" -structopt = "0.3" -serde = { version = "1.0", features = ["derive"] } -zellij-tile = { path = "../zellij-tile/", version = "0.12.0" } +lazy_static = "1.4.0" +libc = "0.2" names = "0.11.0" -colors-transform = "0.2.5" +nix = "0.19.1" +serde = { version = "1.0", features = ["derive"] } +serde_yaml = "0.8" +signal-hook = "0.3" strip-ansi-escapes = "0.1.0" +structopt = "0.3" strum = "0.20.0" -serde_yaml = "0.8" -nix = "0.19.1" -lazy_static = "1.4.0" -directories-next = "2.0" termion = "1.5.0" +vte = "0.10.1" +zellij-tile = { path = "../zellij-tile/", version = "0.12.0" } [dependencies.async-std] version = "1.3.0" diff --git a/zellij-utils/src/lib.rs b/zellij-utils/src/lib.rs index 35f27244a..6285047fe 100644 --- a/zellij-utils/src/lib.rs +++ b/zellij-utils/src/lib.rs @@ -8,3 +8,15 @@ pub mod logging; pub mod pane_size; pub mod setup; pub mod shared; + +pub use async_std; +pub use interprocess; +pub use libc; +pub use nix; +pub use serde; +pub use serde_yaml; +pub use signal_hook; +pub use structopt; +pub use termion; +pub use vte; +pub use zellij_tile; -- cgit v1.2.3