aboutsummaryrefslogtreecommitdiff
path: root/src/generator/static_files.rs
blob: 50f56d850b4b829f4916a8ec1228e25071531ae9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
use std::fs::{copy, create_dir_all, read_dir};
use std::io::Result;
use std::path::PathBuf;
use crate::template::TemplateContext;

fn recursively_copy(source: &PathBuf, target: &PathBuf) -> Result<()> {
    let entries = read_dir(source)?;
    for entry in entries {
        let entry = entry?;
        let entry_type = entry.file_type()?;
        let entry_name = entry.file_name();
        let entry_source = entry.path();
        let entry_target = target.join(entry_name);

        if entry_type.is_dir() {
            create_dir_all(&entry_target)?;
            recursively_copy(&entry_source, &entry_target)?;
        } else {
            copy(&entry_source, &entry_target)?;
        }
    }

    Ok(())
}

pub fn generate(source: &PathBuf, _: &PathBuf, target: &PathBuf, _: &TemplateContext) -> Result<()> {
    if source.exists() {
        return recursively_copy(source, target)
    }
    Ok(())
}