Use workspaces

This commit is contained in:
Arne Beer 2021-01-17 18:17:44 +01:00
parent 1a1abd5532
commit 62dde7540b
74 changed files with 253 additions and 197 deletions

36
Cargo.lock generated
View file

@ -1187,25 +1187,45 @@ version = "0.10.3-alpha.0"
dependencies = [
"anyhow",
"async-std",
"async-tls",
"async-trait",
"bincode",
"byteorder",
"chrono",
"chrono-english",
"clap",
"clap_generate",
"comfy-table",
"config",
"crossterm",
"ctrlc",
"dirs",
"handlebars",
"log",
"nix 0.19.1",
"procfs",
"proptest",
"psutil",
"pueue-lib",
"serde_json",
"shell-escape",
"simplelog",
"snap",
"tempfile",
"users",
"version_check",
]
[[package]]
name = "pueue-lib"
version = "0.10.3-alpha.0"
dependencies = [
"anyhow",
"async-std",
"async-tls",
"async-trait",
"bincode",
"byteorder",
"chrono",
"config",
"dirs",
"log",
"proptest",
"psutil",
"rand 0.8.2",
"rcgen",
"rev_lines",
@ -1214,12 +1234,8 @@ dependencies = [
"serde_derive",
"serde_json",
"serde_yaml",
"shell-escape",
"simplelog",
"snap",
"strum",
"strum_macros",
"tempfile",
"users",
"version_check",
]

View file

@ -1,78 +1,5 @@
[package]
name = "pueue"
description = "A cli tool for managing long running shell commands."
version = "0.10.3-alpha.0"
authors = ["Arne Beer <contact@arne.beer>"]
homepage = "https://github.com/nukesor/pueue"
repository = "https://github.com/nukesor/pueue"
documentation = "https://docs.rs/pueue/"
license = "MIT"
keywords = ["shell", "command", "parallel", "task", "queue"]
readme = "README.md"
edition = "2018"
[badges]
maintenance = { status = "actively-developed" }
[[bin]]
name = "pueue"
path = "client/main.rs"
[[bin]]
name = "pueued"
path = "daemon/main.rs"
[lib]
name = "pueue"
path = "shared/lib.rs"
[dependencies]
anyhow = "1"
dirs = "3"
chrono = { version = "^0.4", features = ["serde"] }
chrono-english = "^0.1.0"
ctrlc = { version = "3", features = ["termination"] }
rand = "^0.8"
shell-escape = "^0.1"
strum = "^0.20"
strum_macros = "^0.20"
tempfile = "^3"
handlebars = "3"
async-std = { version = "1", features = ["attributes", "std"] }
async-tls = "0.11"
async-trait = "0.1"
rustls = "0.19"
rev_lines = "0.2"
rcgen = "0.8"
byteorder = "^1"
snap = "1"
serde = "^1.0"
bincode = "^1.2"
serde_json = "^1.0"
serde_yaml = "^0.8"
serde_derive = "^1.0"
config = { version = "^0.10", default-features = false, features = ["yaml"] }
log = "0.4"
simplelog = { version = "0.9", default-features = false }
clap = "3.0.0-beta.2"
clap_generate = "3.0.0-beta.2"
crossterm = "^0.19"
comfy-table= "^2"
[target.'cfg(not(windows))'.dependencies]
users = "^0.11"
nix = "^0.19"
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies]
procfs = { version = "0.9", default-features = false }
[target.'cfg(target_os = "macos")'.dependencies]
psutil = "^3"
[build-dependencies]
version_check = "^0.9"
[dev-dependencies]
proptest = "^0.10"
[workspace]
members = [
"pueue",
"pueue-lib",
]

View file

@ -2,7 +2,7 @@ use ::version_check;
fn main() {
if !version_check::is_min_version("1.42.0").unwrap_or(false) {
eprintln!("Pueue needs to be build with Rust version >=1.39");
eprintln!("Pueue needs to be build with Rust version >=1.42");
eprintln!("Please update your rust version to stable.");
std::process::exit(1);
}

51
pueue-lib/Cargo.toml Normal file
View file

@ -0,0 +1,51 @@
[package]
name = "pueue-lib"
description = "The shared library used by both the Pueue client and daemon."
version = "0.10.3-alpha.0"
authors = ["Arne Beer <contact@arne.beer>"]
homepage = "https://github.com/nukesor/pueue"
repository = "https://github.com/nukesor/pueue"
documentation = "https://docs.rs/pueue/"
license = "MIT"
keywords = ["shell", "command", "parallel", "task", "queue"]
readme = "README.md"
edition = "2018"
[badges]
maintenance = { status = "actively-developed" }
[dependencies]
anyhow = "1"
dirs = "3"
chrono = { version = "^0.4", features = ["serde"] }
rand = "^0.8"
strum_macros = "^0.20"
async-std = { version = "1", features = ["attributes", "std"] }
async-tls = "0.11"
async-trait = "0.1"
rustls = "0.19"
rev_lines = "0.2"
rcgen = "0.8"
byteorder = "^1"
snap = "1"
serde = "^1.0"
bincode = "^1.2"
serde_json = "^1.0"
serde_yaml = "^0.8"
serde_derive = "^1.0"
config = { version = "^0.10", default-features = false, features = ["yaml"] }
log = "0.4"
[target.'cfg(not(windows))'.dependencies]
users = "^0.11"
[target.'cfg(target_os = "macos")'.dependencies]
psutil = "^3"
[build-dependencies]
version_check = "^0.9"
[dev-dependencies]
proptest = "^0.10"

62
pueue/Cargo.toml Normal file
View file

@ -0,0 +1,62 @@
[package]
name = "pueue"
description = "A cli tool for managing long running shell commands."
version = "0.10.3-alpha.0"
authors = ["Arne Beer <contact@arne.beer>"]
homepage = "https://github.com/nukesor/pueue"
repository = "https://github.com/nukesor/pueue"
documentation = "https://docs.rs/pueue/"
license = "MIT"
keywords = ["shell", "command", "parallel", "task", "queue"]
readme = "README.md"
edition = "2018"
[badges]
maintenance = { status = "actively-developed" }
[dependencies]
pueue-lib = { path = "../pueue-lib" }
anyhow = "1"
chrono = { version = "^0.4", features = ["serde"] }
chrono-english = "^0.1.0"
shell-escape = "^0.1"
tempfile = "^3"
async-std = { version = "1", features = ["attributes", "std"] }
snap = "1"
serde_json = "^1.0"
log = "0.4"
simplelog = { version = "0.9", default-features = false }
clap = "3.0.0-beta.2"
clap_generate = "3.0.0-beta.2"
crossterm = "^0.19"
comfy-table= "^2"
handlebars = "3"
ctrlc = { version = "3", features = ["termination"] }
[[bin]]
name = "pueue"
path = "client/main.rs"
[[bin]]
name = "pueued"
path = "daemon/main.rs"
[target.'cfg(not(windows))'.dependencies]
nix = "^0.19"
users = "^0.11"
[target.'cfg(any(target_os = "linux", target_os = "freebsd"))'.dependencies]
procfs = { version = "0.9", default-features = false }
[target.'cfg(target_os = "macos")'.dependencies]
psutil = "^3"
[build-dependencies]
version_check = "^0.9"
[dev-dependencies]
proptest = "^0.10"

View file

@ -5,11 +5,11 @@ use std::{borrow::Cow, collections::HashMap};
use anyhow::{bail, Context, Result};
use log::error;
use pueue::network::message::*;
use pueue::network::protocol::*;
use pueue::network::secret::read_shared_secret;
use pueue::settings::Settings;
use pueue::state::group_or_default;
use pueue_lib::network::message::*;
use pueue_lib::network::protocol::*;
use pueue_lib::network::secret::read_shared_secret;
use pueue_lib::settings::Settings;
use pueue_lib::state::group_or_default;
use crate::cli::{CliArguments, SubCommand};
use crate::commands::edit::edit;

View file

@ -5,8 +5,8 @@ use std::process::Command;
use anyhow::{Context, Result};
use tempfile::NamedTempFile;
use pueue::network::message::*;
use pueue::network::protocol::*;
use pueue_lib::network::message::*;
use pueue_lib::network::protocol::*;
/// This function handles the logic for editing tasks.
/// At first, we request the daemon to send us the task to edit.

View file

@ -2,7 +2,7 @@ use std::path::PathBuf;
use anyhow::{bail, Result};
use pueue::network::protocol::GenericStream;
use pueue_lib::network::protocol::GenericStream;
use crate::commands::get_state;
use crate::display::follow_local_task_logs;

View file

@ -1,8 +1,8 @@
use anyhow::Result;
use pueue::network::message::Message;
use pueue::network::protocol::*;
use pueue::state::State;
use pueue_lib::network::message::Message;
use pueue_lib::network::protocol::*;
use pueue_lib::state::State;
pub mod edit;
pub mod local_follow;

View file

@ -1,8 +1,8 @@
use anyhow::{bail, Result};
use pueue::network::message::*;
use pueue::network::protocol::*;
use pueue::task::{Task, TaskStatus};
use pueue_lib::network::message::*;
use pueue_lib::network::protocol::*;
use pueue_lib::task::{Task, TaskStatus};
use crate::commands::edit::edit_line;
use crate::commands::get_state;

View file

@ -6,8 +6,8 @@ use anyhow::Result;
use chrono::Local;
use crossterm::style::{Attribute, Color};
use pueue::network::protocol::GenericStream;
use pueue::task::{Task, TaskResult, TaskStatus};
use pueue_lib::network::protocol::GenericStream;
use pueue_lib::task::{Task, TaskResult, TaskStatus};
use crate::commands::get_state;
use crate::display::helper::style_text;

View file

@ -3,7 +3,7 @@ use std::path::PathBuf;
use std::thread::sleep;
use std::time::Duration;
use pueue::log::{get_log_file_handles, get_log_paths};
use pueue_lib::log::{get_log_file_handles, get_log_paths};
/// Follow the log ouput of running task.
///

View file

@ -1,4 +1,4 @@
use pueue::network::message::GroupResponseMessage;
use pueue_lib::network::message::GroupResponseMessage;
use super::helper::*;

View file

@ -4,8 +4,8 @@ use std::io::stdout;
use crossterm::style::{style, Attribute, Color};
use crossterm::tty::IsTty;
use pueue::state::GroupStatus;
use pueue::task::Task;
use pueue_lib::state::GroupStatus;
use pueue_lib::task::Task;
/// This is a simple small helper function with the purpose of easily styling text,
/// while also prevent styling if we're printing to a non-tty output.

View file

@ -6,10 +6,10 @@ use anyhow::Result;
use comfy_table::*;
use snap::read::FrameDecoder;
use pueue::log::{get_log_file_handles, read_last_lines};
use pueue::network::message::TaskLogMessage;
use pueue::settings::Settings;
use pueue::task::{Task, TaskResult, TaskStatus};
use pueue_lib::log::{get_log_file_handles, read_last_lines};
use pueue_lib::network::message::TaskLogMessage;
use pueue_lib::settings::Settings;
use pueue_lib::task::{Task, TaskResult, TaskStatus};
use super::helper::*;
use crate::cli::SubCommand;

View file

@ -4,9 +4,9 @@ use std::string::ToString;
use comfy_table::presets::UTF8_HORIZONTAL_BORDERS_ONLY;
use comfy_table::*;
use pueue::settings::Settings;
use pueue::state::State;
use pueue::task::{Task, TaskResult, TaskStatus};
use pueue_lib::settings::Settings;
use pueue_lib::state::State;
use pueue_lib::task::{Task, TaskResult, TaskStatus};
use super::helper::*;
use crate::cli::SubCommand;

View file

@ -4,7 +4,7 @@ use clap_generate::generate_to;
use clap_generate::generators::*;
use simplelog::{Config, LevelFilter, SimpleLogger};
use pueue::settings::Settings;
use pueue_lib::settings::Settings;
pub mod cli;
pub mod client;

View file

@ -8,12 +8,12 @@ use anyhow::Result;
use clap::Clap;
use simplelog::{Config, LevelFilter, SimpleLogger};
use pueue::network::certificate::create_certificates;
use pueue::network::message::Message;
use pueue::network::protocol::socket_cleanup;
use pueue::network::secret::init_shared_secret;
use pueue::settings::Settings;
use pueue::state::State;
use pueue_lib::network::certificate::create_certificates;
use pueue_lib::network::message::Message;
use pueue_lib::network::protocol::socket_cleanup;
use pueue_lib::network::secret::init_shared_secret;
use pueue_lib::settings::Settings;
use pueue_lib::state::State;
use crate::cli::CliArguments;
use crate::network::socket::accept_incoming;

View file

@ -5,10 +5,10 @@ use std::{fs::File, path::PathBuf};
use anyhow::Result;
use async_std::task::sleep;
use pueue::log::*;
use pueue::network::message::*;
use pueue::network::protocol::{send_message, GenericStream};
use pueue::state::SharedState;
use pueue_lib::log::*;
use pueue_lib::network::message::*;
use pueue_lib::network::protocol::{send_message, GenericStream};
use pueue_lib::state::SharedState;
/// Handle the continuous stream of a message.
pub async fn handle_follow(

View file

@ -1,8 +1,8 @@
use std::sync::mpsc::Sender;
use pueue::network::message::*;
use pueue::state::SharedState;
use pueue::task::{Task, TaskStatus};
use pueue_lib::network::message::*;
use pueue_lib::state::SharedState;
use pueue_lib::task::{Task, TaskStatus};
use super::*;

View file

@ -1,9 +1,9 @@
use pueue::log::clean_log_handles;
use pueue::network::message::*;
use pueue::state::SharedState;
use pueue::task::{TaskResult, TaskStatus};
use pueue_lib::log::clean_log_handles;
use pueue_lib::network::message::*;
use pueue_lib::state::SharedState;
use pueue_lib::task::{TaskResult, TaskStatus};
/// Invoked when calling `pueue clean`.
/// Invoked when calling `pueue_lib clean`.
/// Remove all failed or done tasks from the state.
pub fn clean(message: CleanMessage, state: &SharedState) -> Message {
let mut state = state.lock().unwrap();

View file

@ -1,9 +1,9 @@
use pueue::aliasing::insert_alias;
use pueue::network::message::*;
use pueue::state::SharedState;
use pueue::task::TaskStatus;
use pueue_lib::aliasing::insert_alias;
use pueue_lib::network::message::*;
use pueue_lib::state::SharedState;
use pueue_lib::task::TaskStatus;
/// Invoked when calling `pueue edit`.
/// Invoked when calling `pueue_lib edit`.
/// If a user wants to edit a message, we need to send him the current command.
/// Lock the task to prevent execution, before the user has finished editing the command.
pub fn edit_request(task_id: usize, state: &SharedState) -> Message {

View file

@ -1,6 +1,6 @@
use pueue::network::message::*;
use pueue::state::SharedState;
use pueue::task::TaskStatus;
use pueue_lib::network::message::*;
use pueue_lib::state::SharedState;
use pueue_lib::task::TaskStatus;
use crate::network::response_helper::*;

View file

@ -1,5 +1,5 @@
use pueue::network::message::*;
use pueue::state::SharedState;
use pueue_lib::network::message::*;
use pueue_lib::state::SharedState;
use crate::network::response_helper::ensure_group_exists;

View file

@ -1,8 +1,8 @@
use std::sync::mpsc::Sender;
use pueue::network::message::*;
use pueue::state::SharedState;
use pueue::task::TaskStatus;
use pueue_lib::network::message::*;
use pueue_lib::state::SharedState;
use pueue_lib::task::TaskStatus;
use super::SENDER_ERR;
use crate::network::response_helper::task_response_helper;

View file

@ -1,10 +1,10 @@
use std::collections::BTreeMap;
use pueue::log::read_and_compress_log_files;
use pueue::network::message::*;
use pueue::state::SharedState;
use pueue_lib::log::read_and_compress_log_files;
use pueue_lib::network::message::*;
use pueue_lib::state::SharedState;
/// Invoked when calling `pueue log`.
/// Invoked when calling `pueue_lib log`.
/// Return the current state and the stdou/stderr of all tasks to the client.
pub fn get_log(message: LogRequestMessage, state: &SharedState) -> Message {
let state = state.lock().unwrap().clone();

View file

@ -1,8 +1,8 @@
use std::sync::mpsc::Sender;
use pueue::network::message::*;
use pueue::network::protocol::socket_cleanup;
use pueue::state::SharedState;
use pueue_lib::network::message::*;
use pueue_lib::network::protocol::socket_cleanup;
use pueue_lib::state::SharedState;
use crate::network::response_helper::*;
@ -89,13 +89,13 @@ mod fixtures {
pub use std::sync::mpsc::Sender;
use std::sync::{Arc, Mutex};
pub use pueue::network::message::*;
pub use pueue::network::protocol::socket_cleanup;
pub use pueue::settings::Settings;
pub use pueue::state::{SharedState, State};
pub use pueue::task::TaskResult;
pub use pueue_lib::network::message::*;
pub use pueue_lib::network::protocol::socket_cleanup;
pub use pueue_lib::settings::Settings;
pub use pueue_lib::state::{SharedState, State};
pub use pueue_lib::task::TaskResult;
pub use pueue::task::{Task, TaskStatus};
pub use pueue_lib::task::{Task, TaskStatus};
pub use super::*;
pub use crate::network::response_helper::*;

View file

@ -1,5 +1,5 @@
use pueue::network::message::*;
use pueue::state::SharedState;
use pueue_lib::network::message::*;
use pueue_lib::state::SharedState;
use crate::network::response_helper::*;

View file

@ -1,8 +1,8 @@
use std::sync::mpsc::Sender;
use pueue::network::message::*;
use pueue::state::SharedState;
use pueue::task::TaskStatus;
use pueue_lib::network::message::*;
use pueue_lib::state::SharedState;
use pueue_lib::task::TaskStatus;
use super::SENDER_ERR;
use crate::network::response_helper::*;

View file

@ -1,6 +1,6 @@
use pueue::network::message::*;
use pueue::state::SharedState;
use pueue::task::TaskStatus;
use pueue_lib::network::message::*;
use pueue_lib::state::SharedState;
use pueue_lib::task::TaskStatus;
use crate::network::response_helper::*;

View file

@ -1,10 +1,10 @@
use std::sync::mpsc::Sender;
use std::sync::MutexGuard;
use pueue::aliasing::insert_alias;
use pueue::network::message::*;
use pueue::state::{SharedState, State};
use pueue::task::TaskStatus;
use pueue_lib::aliasing::insert_alias;
use pueue_lib::network::message::*;
use pueue_lib::state::{SharedState, State};
use pueue_lib::task::TaskStatus;
use super::SENDER_ERR;

View file

@ -1,8 +1,8 @@
use std::sync::mpsc::Sender;
use pueue::network::message::*;
use pueue::state::SharedState;
use pueue::task::TaskStatus;
use pueue_lib::network::message::*;
use pueue_lib::state::SharedState;
use pueue_lib::task::TaskStatus;
use super::SENDER_ERR;

View file

@ -1,8 +1,8 @@
use std::sync::mpsc::Sender;
use pueue::network::message::*;
use pueue::state::SharedState;
use pueue::task::TaskStatus;
use pueue_lib::network::message::*;
use pueue_lib::state::SharedState;
use pueue_lib::task::TaskStatus;
use super::SENDER_ERR;
use crate::network::response_helper::*;

View file

@ -1,6 +1,6 @@
use pueue::network::message::*;
use pueue::state::SharedState;
use pueue::task::TaskStatus;
use pueue_lib::network::message::*;
use pueue_lib::state::SharedState;
use pueue_lib::task::TaskStatus;
use crate::network::response_helper::*;

View file

@ -1,8 +1,8 @@
use pueue::network::message::*;
use pueue::state::SharedState;
use pueue::task::TaskStatus;
use pueue_lib::network::message::*;
use pueue_lib::state::SharedState;
use pueue_lib::task::TaskStatus;
/// Invoked when calling `pueue switch`.
/// Invoked when calling `pueue_lib switch`.
/// Switch the position of two tasks in the upcoming queue.
/// We have to ensure that those tasks are either `Queued` or `Stashed`
pub fn switch(message: SwitchMessage, state: &SharedState) -> Message {

View file

@ -1,8 +1,8 @@
use std::sync::MutexGuard;
use pueue::network::message::{create_failure_message, Message};
use pueue::state::State;
use pueue::task::TaskStatus;
use pueue_lib::network::message::{create_failure_message, Message};
use pueue_lib::state::State;
use pueue_lib::task::TaskStatus;
/// Check whether the given group exists. Return an failure message if it doesn't.
pub fn ensure_group_exists(state: &MutexGuard<State>, group: &str) -> Result<(), Message> {

View file

@ -5,10 +5,10 @@ use anyhow::{bail, Context, Result};
use async_std::task;
use log::{debug, info, warn};
use pueue::network::message::*;
use pueue::network::protocol::*;
use pueue::network::secret::read_shared_secret;
use pueue::state::SharedState;
use pueue_lib::network::message::*;
use pueue_lib::network::protocol::*;
use pueue_lib::network::secret::read_shared_secret;
use pueue_lib::state::SharedState;
use crate::network::follow_log::handle_follow;
use crate::network::message_handler::handle_message;

View file

@ -12,10 +12,10 @@ use chrono::prelude::*;
use handlebars::Handlebars;
use log::{debug, error, info, warn};
use pueue::log::*;
use pueue::network::message::*;
use pueue::state::{GroupStatus, SharedState};
use pueue::task::{Task, TaskResult, TaskStatus};
use pueue_lib::log::*;
use pueue_lib::network::message::*;
use pueue_lib::state::{GroupStatus, SharedState};
use pueue_lib::task::{Task, TaskResult, TaskStatus};
use crate::platform::process_helper::*;