diff --git a/build.rs b/build.rs deleted file mode 100644 index 23d08af..0000000 --- a/build.rs +++ /dev/null @@ -1,34 +0,0 @@ -use std::{env, process::Command}; - -fn main() -{ - if env::var_os("CARGO_FEATURE_WEB").is_some() { - println!("cargo:rerun-if-changed=web"); - - let status = Command::new("yarn") - .arg("build") - .current_dir("web") - .status() - .expect("Failed to build frontend."); - - if status.code().unwrap() != 0 { - panic!("Building frontend failed."); - } - } - - // This currently isn't possible because cargo doc requires a lock on the Cargo.lock file that - // can't be provided - - // if env::var_os("CARGO_FEATURE_DOCS").is_some() { - // println!("cargo:rerun-if-changed=src"); - - // let status = Command::new(env::var("CARGO").unwrap()) - // .args(["doc", "--no-deps"]) - // .status() - // .expect("Failed to build docs."); - - // if status.code().unwrap() != 0 { - // panic!("Failed to build docs."); - // } - // } -} diff --git a/src/main.rs b/src/main.rs index 03d84d5..e644965 100644 --- a/src/main.rs +++ b/src/main.rs @@ -18,6 +18,10 @@ use rocket::{ serde::json::{json, Value}, Build, Orbit, Request, Rocket, }; + +#[cfg(any(feature = "web", feature="docs"))] +use rocket::fs; + use rocket_sync_db_pools::database; use serde::{Deserialize, Serialize}; @@ -94,7 +98,7 @@ fn rocket() -> _ .merge(Yaml::file("Rb.yaml").nested()) .merge(Env::prefixed("RB_").global()); - rocket::custom(figment) + let mut instance = rocket::custom(figment) .attach(RbDbConn::fairing()) .attach(AdHoc::try_on_ignite( "Run database migrations", @@ -112,5 +116,18 @@ fn rocket() -> _ routes![admin::create_user, admin::get_user_info], ) .mount("/api/sections", routes![sections::create_section]) - .mount("/api/posts", routes![posts::get, posts::create]) + .mount("/api/posts", routes![posts::get, posts::create]); + + // It's weird that this is allowed, but the line on its own isn't + #[cfg(feature = "web")] + { + instance = instance.mount("/", fs::FileServer::new("/var/www/html/web", fs::Options::Index | fs::Options::NormalizeDirs)); + } + + #[cfg(feature = "docs")] + { + instance = instance.mount("/docs", fs::FileServer::new("/var/www/html/docs", fs::Options::Index | fs::Options::NormalizeDirs)); + } + + instance }