File size: 1,119 Bytes
fc69ace
 
 
 
 
137c62e
0d1213a
4402168
0d1213a
fc69ace
 
 
 
 
 
15fc415
 
137c62e
 
0d1213a
f94ac50
60317a3
8e7dc68
 
 
3060b01
137c62e
0d1213a
4402168
15fc415
137c62e
15fc415
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//! Main module of the application
//!
//! This module contains the main function which handles the logging of the application to the
//! stdout and handles the command line arguments provided and launches the `websurfx` server.

use std::net::TcpListener;

use websurfx::{config::parser::Config, run};

/// The function that launches the main server and registers all the routes of the website.
///
/// # Error
///
/// Returns an error if the port is being used by something else on the system and is not
/// available for being used for other applications.
#[actix_web::main]
async fn main() -> std::io::Result<()> {
    // Initialize the parsed config file.
    let config = Config::parse().unwrap();

    // Initializing logging middleware with level set to default or info.
    if config.logging || config.debug {
        use env_logger::Env;
        env_logger::Builder::from_env(Env::default().default_filter_or("info")).init();
    }

    log::info!("started server on port {}", config.port);

    let listener = TcpListener::bind((config.binding_ip.clone(), config.port))?;

    run(listener, config)?.await
}