glory_cli/config/
style.rs

1use super::{ProjectConfig, TailwindConfig};
2use crate::service::site::{SiteFile, SourcedSiteFile};
3use anyhow::Result;
4
5#[derive(Debug, Clone)]
6pub struct StyleConfig {
7    pub file: Option<SourcedSiteFile>,
8    pub browser_query: String,
9    pub tailwind: Option<TailwindConfig>,
10    pub site_file: SiteFile,
11}
12
13impl StyleConfig {
14    pub fn new(config: &ProjectConfig) -> Result<Self> {
15        let site_rel = config.site_pkg_dir.join(&config.output_name).with_extension("css");
16
17        let site_file = SiteFile {
18            dest: config.site_root.join(&site_rel),
19            site: site_rel,
20        };
21        let style_file = config.style_file.as_ref().map(|file| {
22            // relative to the configuration file
23            let source = config.config_dir.join(file);
24            let site = config.site_pkg_dir.join(&config.output_name).with_extension("css");
25            let dest = config.site_root.join(&site);
26            SourcedSiteFile { source, dest, site }
27        });
28        Ok(Self {
29            file: style_file,
30            browser_query: config.browser_query.clone(),
31            tailwind: TailwindConfig::new(config)?,
32            site_file,
33        })
34    }
35}