weaver_lib/tasks/
well_known_copy_task.rs1use std::{collections::HashMap, fs, sync::Arc};
2
3use async_trait::async_trait;
4use liquid::model::KString;
5
6use crate::{
7 BuildError,
8 config::WeaverConfig,
9 renderers::{WritableFile, globals::LiquidGlobalsPage},
10 tasks::common::copy_dir_all,
11};
12
13use super::WeaverTask;
14
15#[derive(Default)]
16pub struct WellKnownCopyTask;
17
18unsafe impl Send for WellKnownCopyTask {}
19unsafe impl Sync for WellKnownCopyTask {}
20
21#[async_trait]
22impl WeaverTask for WellKnownCopyTask {
23 async fn run(
24 &self,
25 config: Arc<WeaverConfig>,
26 _content: &Arc<HashMap<KString, LiquidGlobalsPage>>,
27 ) -> Result<Option<WritableFile>, BuildError> {
28 let well_known_path = format!("{}/.well-known", &config.base_dir);
29 let target = format!("{}/.well-known", config.build_dir.clone());
30
31 if fs::exists(well_known_path).expect("failed to check if there was a public directory") {
32 println!("Copying {} to {}", config.public_dir.clone(), &target);
33
34 copy_dir_all(config.public_dir.clone(), target)
35 } else {
36 Ok(None)
37 }
38 }
39}