Source code for nefelibata.builders.atom

import logging
from pathlib import Path

from jinja2 import Environment
from jinja2 import FileSystemLoader
from nefelibata.builders import Builder
from nefelibata.builders import Scope
from nefelibata.post import get_posts

_logger = logging.getLogger(__name__)


[docs]class AtomBuilder(Builder): scopes = [Scope.SITE]
[docs] def process_site(self, force: bool = False) -> None: """Generate Atom feed. """ _logger.info("Creating Atom feed") env = Environment(loader=FileSystemLoader(str(self.root / "templates"))) template = env.get_template("atom.xml") posts = get_posts(self.root) posts.sort(key=lambda x: x.date, reverse=True) show = self.config.get("posts-to-show", 10) xml = template.render(config=self.config, posts=posts[:show]) with open(self.root / "build" / "atom.xml", "w") as fp: fp.write(xml)