weaver_lib/tasks/
well_known_copy_task.rs

1use 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}