reactive_graph_server/
bin_server.rs

1use crate::server::args::ServerAndSharedArguments;
2#[cfg(target_os = "linux")]
3use crate::server::daemon::daemonize;
4use crate::server::server;
5use crate::shared::completions::handle_completions;
6use crate::shared::info::handle_info_command;
7#[cfg(target_os = "linux")]
8use crate::shared::manpages::handle_man_pages;
9use crate::shared::markdown_help::handle_markdown_help;
10use clap::Parser;
11use std::alloc::System;
12
13pub mod server;
14pub mod shared;
15
16#[global_allocator]
17static ALLOCATOR: System = System;
18
19fn main() {
20    let args = ServerAndSharedArguments::parse();
21
22    handle_markdown_help::<ServerAndSharedArguments>(&args.shared.markdown_help);
23
24    #[cfg(target_os = "linux")]
25    handle_man_pages::<ServerAndSharedArguments>(&args.shared.man_pages);
26
27    handle_completions::<ServerAndSharedArguments>(&args.shared.completions);
28
29    handle_info_command(&args.shared.info);
30
31    if let Some(commands) = &args.server.commands {
32        #[allow(unreachable_patterns, clippy::collapsible_match)]
33        match commands {
34            #[cfg(target_os = "linux")]
35            server::commands::ServerCommands::Daemon(args) => daemonize(args),
36            _ => {}
37        }
38    }
39
40    server(args.server)
41}