diff --git a/Cargo.toml b/Cargo.toml index 3fbbfc9..00abd23 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,12 +5,23 @@ license = "AGPL-3.0-or-later" version = "0.1.0" edition = "2024" +[features] +default = [ "app" ] +app = [ "dep:iced", "dep:smol" ] + [dependencies] ron = "0.12.2" -serde = "1.0.229" -smol = "2.0.2" sysinfo = "0.39.6" [dependencies.iced] version = "0.14.0" features = [ "canvas", "smol" ] +optional = true + +[dependencies.smol] +version = "2.0.2" +optional = true + +[dependencies.serde] +version = "1.0.229" +features = [ "derive" ] diff --git a/flake.nix b/flake.nix index 827d996..d37cbd5 100644 --- a/flake.nix +++ b/flake.nix @@ -89,6 +89,12 @@ { packages.default = crate; + packages.server-only = craneLib.buildPackage { + name = name + "-server-only"; + src = ./.; + cargoExtraArgs = "--no-default-features"; + }; + checks = { crate-clippy = craneLib.cargoClippy ( commonArgs diff --git a/src/main.rs b/src/main.rs index d8e6e6e..327e179 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,6 @@ use std::env; +#[cfg(feature = "app")] mod app; mod server; mod sysinfo_snapshot; @@ -7,10 +8,12 @@ mod utils; fn main() { match env::args().nth(1).as_deref() { - Some("server") => server::run().unwrap(), - + #[cfg(feature = "app")] None | Some("client") => app::run().unwrap(), + #[cfg_attr(feature = "app", allow(unreachable_patterns))] + None | Some("server") => server::run().unwrap(), + Some(s) => panic!("invalid argument: {s}"), } }