diff --git a/Cargo.lock b/Cargo.lock index 11a8e26..36cb37d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -105,25 +105,45 @@ dependencies = [ ] [[package]] -name = "async-trait" -version = "0.1.57" +name = "argh" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76464446b8bc32758d7e88ee1a804d9914cd9b1cb264c029899680b0be29826f" +checksum = "7af5ba06967ff7214ce4c7419c7d185be7ecd6cc4965a8f6e1d8ce0398aad219" dependencies = [ + "argh_derive", + "argh_shared", +] + +[[package]] +name = "argh_derive" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56df0aeedf6b7a2fc67d06db35b09684c3e8da0c95f8f27685cb17e08413d87a" +dependencies = [ + "argh_shared", "proc-macro2", "quote", - "syn", + "syn 2.0.77", ] [[package]] -name = "atty" -version = "0.2.14" +name = "argh_shared" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +checksum = "5693f39141bda5760ecc4111ab08da40565d1771038c4a0250f03457ec707531" dependencies = [ - "hermit-abi", - "libc", - "winapi", + "serde", +] + +[[package]] +name = "async-trait" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76464446b8bc32758d7e88ee1a804d9914cd9b1cb264c029899680b0be29826f" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.107", ] [[package]] @@ -263,9 +283,9 @@ name = "cam_sender" version = "0.3.0" dependencies = [ "anyhow", + "argh", "bincode", "bytes", - "clap", "common", "env_logger", "futures", @@ -288,43 +308,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "clap" -version = "4.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ed45cc2c62a3eff523e718d8576ba762c83a3146151093283ac62ae11933a73" -dependencies = [ - "atty", - "bitflags", - "clap_derive", - "clap_lex", - "once_cell", - "strsim", - "termcolor", -] - -[[package]] -name = "clap_derive" -version = "4.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db342ce9fda24fb191e2ed4e102055a4d381c1086a06630174cd8da8d5d917ce" -dependencies = [ - "heck", - "proc-macro-error", - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "clap_lex" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d4198f73e42b4936b35b5bb248d81d2b595ecb170da0bac7655c54eedfa8da8" -dependencies = [ - "os_str_bytes", -] - [[package]] name = "cmake" version = "0.1.49" @@ -470,7 +453,7 @@ checksum = "3418329ca0ad70234b9735dc4ceed10af4df60eff9c8e7b06cb5e520d92c3535" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.107", ] [[package]] @@ -530,7 +513,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn", + "syn 1.0.107", ] [[package]] @@ -559,7 +542,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn", + "syn 1.0.107", ] [[package]] @@ -730,7 +713,7 @@ checksum = "95a73af87da33b5acf53acfebdc339fe592ecf5357ac7c0a7734ab9d8c876a70" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.107", ] [[package]] @@ -857,12 +840,6 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" -[[package]] -name = "heck" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" - [[package]] name = "hermit-abi" version = "0.1.19" @@ -1017,9 +994,9 @@ name = "infer_server" version = "0.3.2" dependencies = [ "anyhow", + "argh", "axum", "bytes", - "clap", "common", "dirs", "env_logger", @@ -1168,7 +1145,7 @@ checksum = "926454345f103e8433833077acdbfaa7c3e4b90788d585a8358f02f0b8f5a469" dependencies = [ "proc-macro2", "proc-quote", - "syn", + "syn 1.0.107", ] [[package]] @@ -1488,7 +1465,7 @@ checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.107", ] [[package]] @@ -1510,12 +1487,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "os_str_bytes" -version = "6.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff" - [[package]] name = "owned_ttf_parser" version = "0.15.2" @@ -1590,7 +1561,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn", + "syn 1.0.107", ] [[package]] @@ -1621,7 +1592,7 @@ checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.107", ] [[package]] @@ -1669,30 +1640,6 @@ dependencies = [ "num-integer", ] -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - [[package]] name = "proc-macro-hack" version = "0.5.19" @@ -1701,9 +1648,9 @@ checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" [[package]] name = "proc-macro2" -version = "1.0.46" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94e2ef8dbfc347b10c094890f778ee2e36ca9bb4262e86dc99cd217e35f3470b" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -1718,7 +1665,7 @@ dependencies = [ "proc-macro2", "proc-quote-impl", "quote", - "syn", + "syn 1.0.107", ] [[package]] @@ -1752,14 +1699,14 @@ dependencies = [ "itertools", "proc-macro2", "quote", - "syn", + "syn 1.0.107", ] [[package]] name = "quote" -version = "1.0.21" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -2118,7 +2065,7 @@ checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.107", ] [[package]] @@ -2244,16 +2191,21 @@ dependencies = [ ] [[package]] -name = "strsim" -version = "0.10.0" +name = "syn" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] [[package]] name = "syn" -version = "1.0.107" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", @@ -2291,15 +2243,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "termcolor" -version = "1.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" -dependencies = [ - "winapi-util", -] - [[package]] name = "thingbuf" version = "0.1.4" @@ -2326,7 +2269,7 @@ checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.107", ] [[package]] @@ -2410,7 +2353,7 @@ checksum = "9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.107", ] [[package]] @@ -2816,7 +2759,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn", + "syn 1.0.107", "wasm-bindgen-shared", ] @@ -2850,7 +2793,7 @@ checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.107", "wasm-bindgen-backend", "wasm-bindgen-shared", ] diff --git a/Cargo.toml b/Cargo.toml index f9aeb0b..57cff04 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,6 +5,7 @@ members = ["infer_server", "cam_sender", "common"] [workspace.dependencies] anyhow = "1.0.75" +argh = "0.1.12" axum = "0.6.4" bincode = "1.3.3" bytes = "1.4.0" diff --git a/cam_sender/Cargo.toml b/cam_sender/Cargo.toml index 4f6936a..28ac7a8 100644 --- a/cam_sender/Cargo.toml +++ b/cam_sender/Cargo.toml @@ -5,9 +5,9 @@ edition = "2021" [dependencies] anyhow = { workspace = true } +argh = { workspace = true } bincode = { workspace = true } bytes = { workspace = true } -clap = { workspace = true, features = ["derive"] } common = { workspace = true } env_logger = { workspace = true } futures = { workspace = true } diff --git a/cam_sender/src/bin/socket_sender.rs b/cam_sender/src/bin/socket_sender.rs index cbbca56..853e96f 100644 --- a/cam_sender/src/bin/socket_sender.rs +++ b/cam_sender/src/bin/socket_sender.rs @@ -1,38 +1,45 @@ use anyhow::{bail, Result}; +use argh::FromArgs; use cam_sender::sensors::{get_max_res_mjpg_capture_fn, CameraWrapper}; -use clap::Parser; -use clap::ValueEnum; use common::protocol::{FrameMsg, ProtoMsg}; use env_logger::TimestampPrecision; use futures::sink::SinkExt; use rscam::Camera; -use std::time::Duration; +use std::{str::FromStr, time::Duration}; use tokio::net::TcpStream; use tokio_util::codec::{Framed, LengthDelimitedCodec}; -#[derive(Parser, Debug)] -#[clap(author, version)] +#[derive(FromArgs)] +/// Send webcam stream to infer_server. struct Cli { - /// Address of the infer server to connect to - #[clap(long, default_value = "127.0.0.1:3001")] + /// address of the infer server to connect to + #[argh(option, default = "String::from(\"127.0.0.1:3001\")")] address: String, - /// Channel name that this sender publishes to - #[clap(long, default_value = "simon")] + /// channel name that this sender publishes to + #[argh(option, default = "String::from(\"simon\")")] channel: String, - - #[clap(long, default_value = "tcp")] - protocol: Protocol, } -#[derive(Clone, Debug, ValueEnum)] +#[derive(Clone, Debug)] pub enum Protocol { Tcp, } +impl FromStr for Protocol { + type Err = String; + + fn from_str(s: &str) -> std::result::Result { + match s { + "tcp" | "Tcp" | "TCP" => Ok(Protocol::Tcp), + _ => Err(s.to_owned()), + } + } +} + #[tokio::main] async fn main() -> Result<()> { - let args = Cli::parse(); + let args: Cli = argh::from_env(); env_logger::builder() .format_timestamp(Some(TimestampPrecision::Millis)) diff --git a/infer_server/Cargo.toml b/infer_server/Cargo.toml index 46dc00f..61ba8d6 100644 --- a/infer_server/Cargo.toml +++ b/infer_server/Cargo.toml @@ -5,9 +5,9 @@ edition = "2021" [dependencies] anyhow = { workspace = true } +argh = { workspace = true } axum = { workspace = true, features = ["multipart", "query"] } bytes = { workspace = true } -clap = { workspace = true, features = ["derive"] } common = { workspace = true } dirs = { workspace = true } env_logger = { workspace = true } diff --git a/infer_server/src/bin/infer_server.rs b/infer_server/src/bin/infer_server.rs index d6631c5..4595168 100644 --- a/infer_server/src/bin/infer_server.rs +++ b/infer_server/src/bin/infer_server.rs @@ -3,8 +3,8 @@ use std::{net::SocketAddr, sync::Arc}; use anyhow::Result; +use argh::FromArgs; use axum::{routing::get, Extension, Router}; -use clap::Parser; use env_logger::TimestampPrecision; use infer_server::{ data_socket::spawn_data_socket, @@ -15,21 +15,21 @@ use infer_server::{ INCOMING_FRAMES_CHANNEL, INFER_IMAGES_CHANNEL, }; -#[derive(Parser, Debug)] -#[clap(author, version)] +#[derive(Debug, FromArgs)] +/// Run infer server. struct Args { - /// Address of the HTTP server - #[clap(long, default_value = "127.0.0.1:3000")] + /// address of the HTTP server + #[argh(option, default = "String::from(\"127.0.0.1:3000\")")] server_address: String, - /// Address of the data socket - #[clap(long, default_value = "127.0.0.1:3001")] + /// address of the data socket + #[argh(option, default = "String::from(\"127.0.0.1:3001\")")] socket_address: String, } #[tokio::main] async fn main() -> Result<()> { - let args = Args::parse(); + let args: Args = argh::from_env(); // Setup logger env_logger::builder()