require_relative "../plugin" require_relative "repo" require_relative "writer" require_relative "json_feed" require_relative "rss_feed" module Pressa module Posts class Plugin < Pressa::Plugin attr_reader :posts_by_year def setup(site:, source_path:) posts_dir = File.join(source_path, "posts") return unless Dir.exist?(posts_dir) repo = PostRepo.new @posts_by_year = repo.read_posts(posts_dir) end def render(site:, target_path:) return unless @posts_by_year writer = PostWriter.new(site:, posts_by_year: @posts_by_year) writer.write_posts(target_path:) writer.write_recent_posts(target_path:, limit: 10) writer.write_archive(target_path:) writer.write_year_indexes(target_path:) writer.write_month_rollups(target_path:) json_feed = JSONFeedWriter.new(site:, posts_by_year: @posts_by_year) json_feed.write_feed(target_path:, limit: 30) rss_feed = RSSFeedWriter.new(site:, posts_by_year: @posts_by_year) rss_feed.write_feed(target_path:, limit: 30) end end end end