Moved initial asset fetching to compile time
This commit is contained in:
parent
a8c0bb1641
commit
1b79a07c5b
52
build.rs
52
build.rs
|
@ -53,4 +53,56 @@ fn main() {
|
|||
map.build()
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
// Get slug and absolute path of all assets
|
||||
// In our actual source:
|
||||
// ```
|
||||
// let assets: Vec<(String, Vec<u8>)> = vec![]
|
||||
// for (slug, path) in ASSET_PATHS {
|
||||
// let asset = (slug, include_bytes!(path));
|
||||
// assets.push(asset);
|
||||
// }
|
||||
// db.add_assets(assets).await?
|
||||
// ```
|
||||
let assets_dir = [
|
||||
&env::var("CARGO_MANIFEST_DIR").unwrap(),
|
||||
"/src/client/assets",
|
||||
]
|
||||
.concat();
|
||||
println!("cargo:rerun-if-changed={}", assets_dir);
|
||||
let pattern = [&assets_dir, "/**/*.*"].concat();
|
||||
let paths = glob(&pattern).unwrap();
|
||||
let path = Path::new(&env::var("OUT_DIR").unwrap()).join("add_assets.rs");
|
||||
let mut file = BufWriter::new(File::create(&path).unwrap());
|
||||
|
||||
writeln!(
|
||||
&mut file,
|
||||
r#"{{let mut assets: Vec<(&str, &[u8])> = vec![];"#
|
||||
)
|
||||
.unwrap();
|
||||
let mut ident_name = String::new();
|
||||
for path in paths {
|
||||
match path {
|
||||
Ok(path) => {
|
||||
ident_name.push('a');
|
||||
let slug_path = path.clone();
|
||||
let slug: String = slug_path
|
||||
.strip_prefix(&assets_dir)
|
||||
.unwrap()
|
||||
.as_os_str()
|
||||
.to_str()
|
||||
.unwrap()
|
||||
.into(); // eek
|
||||
println!("cargo:warning={}{:?}", &slug, &path);
|
||||
writeln!(
|
||||
&mut file,
|
||||
r#"assets.push(("{slug}",include_bytes!("{}")));"#,
|
||||
path.to_str().unwrap()
|
||||
)
|
||||
.unwrap();
|
||||
}
|
||||
Err(_) => todo!(),
|
||||
}
|
||||
}
|
||||
writeln!(&mut file, r#"db.add_assets(assets).await?;}}"#).unwrap();
|
||||
}
|
||||
|
|
|
@ -35,6 +35,7 @@ pub(crate) fn make_page<S>(content: S, settings: PageSettings) -> String
|
|||
where
|
||||
S: AsRef<str>,
|
||||
{
|
||||
for t in TEMPLATES.into_iter() {}
|
||||
rewrite_str(
|
||||
template!("default"),
|
||||
RewriteStrSettings {
|
||||
|
|
|
@ -31,6 +31,7 @@ use blogdb::BlogDb;
|
|||
use glob::glob;
|
||||
|
||||
use crate::html;
|
||||
include!(concat!(env!("OUT_DIR"), "/codegen.rs"));
|
||||
|
||||
const DB_URL: &str = "sqlite://evie.db";
|
||||
|
||||
|
@ -146,35 +147,12 @@ impl BlogStateInner {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
const ASSETS_DIR: &'static str = concat!(env!("CARGO_MANIFEST_DIR"), "/src/client/assets");
|
||||
|
||||
async fn add_initial_assets(db: &BlogDb) -> anyhow::Result<()> {
|
||||
let pattern = [Self::ASSETS_DIR, "/*/*"].concat();
|
||||
let paths = glob(&pattern).unwrap();
|
||||
let mut assets = vec![];
|
||||
for path in paths.into_iter() {
|
||||
match path {
|
||||
Ok(path) => {
|
||||
let slug_path = path.clone();
|
||||
let slug: String = slug_path
|
||||
.strip_prefix(Self::ASSETS_DIR)?
|
||||
.as_os_str()
|
||||
.to_str()
|
||||
.unwrap()
|
||||
.into(); // eek
|
||||
let mut file = File::open(path.clone())?;
|
||||
let mut data = vec![];
|
||||
file.read_to_end(&mut data).unwrap();
|
||||
assets.push((slug, data));
|
||||
}
|
||||
Err(_) => todo!(),
|
||||
}
|
||||
}
|
||||
db.add_assets(assets).await?;
|
||||
include!(concat!(env!("OUT_DIR"), "/add_assets.rs"));
|
||||
Ok(())
|
||||
}
|
||||
|
||||
const INDEX_PATH: &'static str = concat!(env!("CARGO_MANIFEST_DIR"), "/index");
|
||||
const INDEX_PATH: &'static str = "./index";
|
||||
const MEMORY_BUDGET: usize = 50_000_000;
|
||||
|
||||
async fn generate_index(db: &BlogDb) -> anyhow::Result<(Index, IndexWriter)> {
|
||||
|
|
Loading…
Reference in New Issue