diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..23d08af --- /dev/null +++ b/build.rs @@ -0,0 +1,34 @@ +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 e644965..03d84d5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -18,10 +18,6 @@ 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}; @@ -98,7 +94,7 @@ fn rocket() -> _ .merge(Yaml::file("Rb.yaml").nested()) .merge(Env::prefixed("RB_").global()); - let mut instance = rocket::custom(figment) + rocket::custom(figment) .attach(RbDbConn::fairing()) .attach(AdHoc::try_on_ignite( "Run database migrations", @@ -116,18 +112,5 @@ 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]); - - // 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 + .mount("/api/posts", routes![posts::get, posts::create]) }