seam_server/build_loader/
mod.rs1mod loader;
7mod types;
8
9#[cfg(test)]
10mod tests;
11
12use std::path::PathBuf;
13
14use crate::page::{I18nConfig, PageDef};
15
16pub use loader::{load_build_output, load_i18n_config, load_rpc_hash_map};
17pub use types::RpcHashMap;
18
19pub struct BuildOutput {
20 pub pages: Vec<PageDef>,
21 pub rpc_hash_map: Option<RpcHashMap>,
22 pub i18n_config: Option<I18nConfig>,
23 pub public_dir: Option<PathBuf>,
24}
25
26pub fn load_public_dir(dir: &str) -> Option<PathBuf> {
27 if let Ok(explicit_dir) = std::env::var("SEAM_PUBLIC_DIR") {
28 let path = PathBuf::from(explicit_dir);
29 if path.is_dir() {
30 return Some(path);
31 }
32 }
33
34 let public_root = PathBuf::from(dir).join("public-root");
35 if public_root.is_dir() {
36 return Some(public_root);
37 }
38
39 None
40}
41
42pub fn load_build(dir: &str) -> Result<BuildOutput, Box<dyn std::error::Error>> {
43 Ok(BuildOutput {
44 pages: load_build_output(dir)?,
45 rpc_hash_map: load_rpc_hash_map(dir),
46 i18n_config: load_i18n_config(dir),
47 public_dir: load_public_dir(dir),
48 })
49}