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
32
33
34
35
use super::{ProjectConfig, TailwindConfig};
use crate::service::site::{SiteFile, SourcedSiteFile};
use anyhow::Result;

#[derive(Debug, Clone)]
pub struct StyleConfig {
    pub file: Option<SourcedSiteFile>,
    pub browser_query: String,
    pub tailwind: Option<TailwindConfig>,
    pub site_file: SiteFile,
}

impl StyleConfig {
    pub fn new(config: &ProjectConfig) -> Result<Self> {
        let site_rel = config.site_pkg_dir.join(&config.output_name).with_extension("css");

        let site_file = SiteFile {
            dest: config.site_root.join(&site_rel),
            site: site_rel,
        };
        let style_file = config.style_file.as_ref().map(|file| {
            // relative to the configuration file
            let source = config.config_dir.join(file);
            let site = config.site_pkg_dir.join(&config.output_name).with_extension("css");
            let dest = config.site_root.join(&site);
            SourcedSiteFile { source, dest, site }
        });
        Ok(Self {
            file: style_file,
            browser_query: config.browser_query.clone(),
            tailwind: TailwindConfig::new(config)?,
            site_file,
        })
    }
}