feat: add config.theme for templates subdirectory
This commit is contained in:
		
							parent
							
								
									001ca4879a
								
							
						
					
					
						commit
						6e288b3525
					
				@ -1,4 +1,4 @@
 | 
			
		||||
use anyhow::{Result, bail};
 | 
			
		||||
use anyhow::{bail, Result};
 | 
			
		||||
use camino::{Utf8Path, Utf8PathBuf};
 | 
			
		||||
use chrono::{DateTime, Duration, Utc};
 | 
			
		||||
use feed_rs::model::Entry;
 | 
			
		||||
@ -259,7 +259,7 @@ impl FeedStore {
 | 
			
		||||
                Err(e) => {
 | 
			
		||||
                    warn!("Problem parsing feed file for feed {}: {}", feed_url, e);
 | 
			
		||||
                    continue;
 | 
			
		||||
                },
 | 
			
		||||
                }
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            for entry in &mut feed.entries {
 | 
			
		||||
 | 
			
		||||
@ -71,6 +71,11 @@ struct Config {
 | 
			
		||||
    max_entries: usize,
 | 
			
		||||
    /// How soon to refresh, in hours
 | 
			
		||||
    refresh: usize,
 | 
			
		||||
    /// A theme to apply, if any.
 | 
			
		||||
    ///
 | 
			
		||||
    /// This is a folder in the templates_dir. If an assets directory
 | 
			
		||||
    /// exists within, the contents will be copied over to the out_dir.
 | 
			
		||||
    theme: Option<String>,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub fn to_checked_pathbuf(dir: &str) -> Utf8PathBuf {
 | 
			
		||||
 | 
			
		||||
@ -2,13 +2,18 @@ use crate::feed_store::FeedStore;
 | 
			
		||||
use crate::to_checked_pathbuf;
 | 
			
		||||
use crate::Config;
 | 
			
		||||
use anyhow::Result;
 | 
			
		||||
use camino::Utf8Path;
 | 
			
		||||
use feed_rs::model::Feed;
 | 
			
		||||
use std::collections::HashMap;
 | 
			
		||||
use std::fs::File;
 | 
			
		||||
use tera::{from_value, Tera};
 | 
			
		||||
 | 
			
		||||
pub fn build(config: &Config, feed_store: &mut FeedStore) -> Result<()> {
 | 
			
		||||
    let mut tera = create_tera(&config.templates_dir)?;
 | 
			
		||||
    let mut tera = if let Some(theme) = &config.theme {
 | 
			
		||||
        create_tera(&config.templates_dir.join(theme))?
 | 
			
		||||
    } else {
 | 
			
		||||
        create_tera(&config.templates_dir)?
 | 
			
		||||
    };
 | 
			
		||||
    let out_dir = to_checked_pathbuf(&config.out_dir);
 | 
			
		||||
 | 
			
		||||
    let mut context = tera::Context::new();
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user