diff --git a/desktop/src/cli/mod.rs b/desktop/src/cli/mod.rs index 472b7de..b85cb40 100644 --- a/desktop/src/cli/mod.rs +++ b/desktop/src/cli/mod.rs @@ -5,9 +5,11 @@ mod config; mod device; mod logs; mod peer; +mod serve; pub use args::*; pub use config::*; pub use device::*; pub use logs::*; -pub use peer::*; \ No newline at end of file +pub use peer::*; +pub use serve::*; \ No newline at end of file diff --git a/examples/desktop/src/cli/server.rs b/desktop/src/cli/serve.rs similarity index 52% rename from examples/desktop/src/cli/server.rs rename to desktop/src/cli/serve.rs index 314d196..132baf4 100644 --- a/examples/desktop/src/cli/server.rs +++ b/desktop/src/cli/serve.rs @@ -1,19 +1,28 @@ -use caretta_example_core::server::Server; +use std::marker::PhantomData; + use clap::Args; -use caretta::{config::Config, data::migration::DataMigrator, global::{CONFIG, DATABASE_CONNECTIONS}, server::ServerTrait, utils::runnable::Runnable}; +use caretta_core::{config::Config, data::migration::DataMigrator, global::{CONFIG, DATABASE_CONNECTIONS}, server::ServerTrait, utils::runnable::Runnable}; use libp2p::{noise, ping, swarm::{NetworkBehaviour, SwarmEvent}, tcp, yamux, Swarm}; use super::ConfigArgs; #[derive(Args, Debug)] -pub struct ServerCommandArgs { +pub struct ServeCommandArgs +where + T: ServerTrait +{ + #[arg(skip)] + server: PhantomData, #[command(flatten)] config: ConfigArgs, } -impl Runnable for ServerCommandArgs { +impl Runnable for ServeCommandArgs +where + T: ServerTrait +{ async fn run(self, app_name: &'static str) { let config = CONFIG.get_or_init::(self.config.into_config(app_name).await).await; let _ = DATABASE_CONNECTIONS.get_or_init_unchecked(&config, DataMigrator).await; - Server::serve_all(config).await.unwrap(); + T::serve_all(config).await.unwrap(); } } \ No newline at end of file diff --git a/examples/core/src/server.rs b/examples/core/src/server.rs index 34a3072..7044758 100644 --- a/examples/core/src/server.rs +++ b/examples/core/src/server.rs @@ -7,6 +7,8 @@ use caretta::{ use libp2p::{futures::StreamExt, noise, swarm::SwarmEvent, tcp, yamux}; use tokio::net::UnixListener; use tokio_stream::wrappers::UnixListenerStream; + +#[derive(Debug)] pub struct Server{} impl ServerTrait for Server { diff --git a/examples/desktop/src/cli/mod.rs b/examples/desktop/src/cli/mod.rs index 560f2ea..b4f8f08 100644 --- a/examples/desktop/src/cli/mod.rs +++ b/examples/desktop/src/cli/mod.rs @@ -1,7 +1,6 @@ -mod server; +use caretta_example_core::server::Server; use clap::{Parser, Subcommand}; use caretta::{cli::*, utils::runnable::Runnable}; -pub use server::*; #[derive(Debug, Parser, Runnable)] @@ -17,5 +16,5 @@ pub enum CliCommand { Device(DeviceCommandArgs), Logs(LogsCommandArgs), Peer(PeerCommandArgs), - Server(ServerCommandArgs), + Serve(ServeCommandArgs), } \ No newline at end of file