Add files watcher.
[rup.git] / src / main.rs
index a64950d..24cfdbb 100644 (file)
@@ -1,6 +1,8 @@
 extern crate actix_web;
+extern crate listenfd;
 extern crate askama;
 
+use listenfd::ListenFd;
 use actix_files as fs;
 use actix_web::{web, middleware, App, HttpServer, HttpResponse, Responder, Result, web::Query};
 use askama::Template;
@@ -31,16 +33,24 @@ fn main_page(query: Query<Request>) -> Result<HttpResponse> {
 }
 
 fn main() -> std::io::Result<()> {
-    HttpServer::new(
-        || {
-            App::new()
-                .wrap(middleware::Compress::default())
-                .wrap(middleware::Logger::default())
-                .service(web::resource("/").to(main_page))
-                .service(fs::Files::new("/static", "static").show_files_listing())
-        }
-    )
-    .bind("0.0.0.0:8082")
-    .expect("Can not bind to port 8082")
-    .run()
+    let mut listenfd = ListenFd::from_env();
+    let mut server =
+        HttpServer::new(
+            || {
+                App::new()
+                    .wrap(middleware::Compress::default())
+                    .wrap(middleware::Logger::default())
+                    .service(web::resource("/").to(main_page))
+                    .service(fs::Files::new("/static", "static").show_files_listing())
+            }
+        );
+
+    server =
+        if let Some(l) = listenfd.take_tcp_listener(0).unwrap() {
+            server.listen(l).unwrap()
+        } else {
+            server.bind("0.0.0.0:8082").unwrap()
+        };
+
+    server.run()
 }