/* This file is part of jellything (https://codeberg.org/metamuffin/jellything) which is licensed under the GNU Affero General Public License (version 3); see /COPYING. Copyright (C) 2023 metamuffin Copyright (C) 2023 tpart */ use rocket::{get, http::ContentType}; macro_rules! concat_files { ([$base: expr], $($files:literal),*) => {{ #[cfg(debug_assertions)] { use std::{fs::read_to_string, path::PathBuf, str::FromStr}; [ $($files),* ] .into_iter() .map(|n| { read_to_string({ let p = PathBuf::from_str(file!()).unwrap().parent().unwrap().join($base).join(n); log::info!("load {p:?}"); p }) .unwrap() }) .collect::>() .join("\n") } #[cfg(not(debug_assertions))] concat!($(include_str!(concat!($base, "/", $files))),*).to_string() }}; } fn css_bundle() -> String { concat_files!( ["../../../../web"], "layout.css", "player.css", "nodepage.css", "nodecard.css", "js-player.css", "forms.css" ) } fn js_bundle() -> String { concat_files!([env!("OUT_DIR")], "bundle.js") } fn js_bundle_map() -> String { concat_files!([env!("OUT_DIR")], "bundle.js.map") } #[get("/assets/style.css")] pub fn r_assets_style() -> (ContentType, String) { (ContentType::CSS, css_bundle()) } #[get("/assets/cantarell.woff2")] pub fn r_assets_font() -> (ContentType, &'static [u8]) { ( ContentType::WOFF2, include_bytes!("../../../../web/cantarell.woff2"), ) } #[get("/assets/bundle.js")] pub fn r_assets_js() -> (ContentType, String) { (ContentType::JavaScript, js_bundle()) } #[get("/assets/bundle.js.map")] pub fn r_assets_js_map() -> (ContentType, String) { (ContentType::JSON, js_bundle_map()) }