From 54a0543a7f24c2ecb4bc64c6fedc77d6f4baa325 Mon Sep 17 00:00:00 2001 From: Sami Samhuri Date: Sat, 7 Feb 2026 20:54:38 -0800 Subject: [PATCH] Move generator code under lib/pressa --- AGENTS.md | 4 ++-- bake.rb | 5 ++++- lib/pressa.rb | 14 +++++++------- lib/{ => pressa}/config/loader.rb | 10 +++++----- lib/{ => pressa}/config/simple_toml.rb | 0 lib/{ => pressa}/plugin.rb | 0 lib/{ => pressa}/posts/json_feed.rb | 4 ++-- lib/{ => pressa}/posts/metadata.rb | 0 lib/{ => pressa}/posts/models.rb | 2 +- lib/{ => pressa}/posts/plugin.rb | 10 +++++----- lib/{ => pressa}/posts/repo.rb | 4 ++-- lib/{ => pressa}/posts/rss_feed.rb | 4 ++-- lib/{ => pressa}/posts/writer.rb | 14 +++++++------- lib/{ => pressa}/projects/models.rb | 2 +- lib/{ => pressa}/projects/plugin.rb | 12 ++++++------ lib/{ => pressa}/site.rb | 0 lib/{ => pressa}/site_generator.rb | 2 +- lib/{ => pressa}/utils/file_writer.rb | 0 lib/{ => pressa}/utils/markdown_renderer.rb | 8 ++++---- lib/{ => pressa}/views/archive_view.rb | 2 +- lib/{ => pressa}/views/feed_post_view.rb | 0 lib/{ => pressa}/views/icons.rb | 0 lib/{ => pressa}/views/layout.rb | 2 +- lib/{ => pressa}/views/month_posts_view.rb | 2 +- lib/{ => pressa}/views/post_view.rb | 2 +- lib/{ => pressa}/views/project_view.rb | 2 +- lib/{ => pressa}/views/projects_view.rb | 2 +- lib/{ => pressa}/views/recent_posts_view.rb | 2 +- lib/{ => pressa}/views/year_posts_view.rb | 0 spec/test_helper.rb | 4 +++- 30 files changed, 59 insertions(+), 54 deletions(-) rename lib/{ => pressa}/config/loader.rb (97%) rename lib/{ => pressa}/config/simple_toml.rb (100%) rename lib/{ => pressa}/plugin.rb (100%) rename lib/{ => pressa}/posts/json_feed.rb (95%) rename lib/{ => pressa}/posts/metadata.rb (100%) rename lib/{ => pressa}/posts/models.rb (98%) rename lib/{ => pressa}/posts/plugin.rb (87%) rename lib/{ => pressa}/posts/repo.rb (98%) rename lib/{ => pressa}/posts/rss_feed.rb (95%) rename lib/{ => pressa}/posts/writer.rb (93%) rename lib/{ => pressa}/projects/models.rb (93%) rename lib/{ => pressa}/projects/plugin.rb (90%) rename lib/{ => pressa}/site.rb (100%) rename lib/{ => pressa}/site_generator.rb (98%) rename lib/{ => pressa}/utils/file_writer.rb (100%) rename lib/{ => pressa}/utils/markdown_renderer.rb (96%) rename lib/{ => pressa}/views/archive_view.rb (92%) rename lib/{ => pressa}/views/feed_post_view.rb (100%) rename lib/{ => pressa}/views/icons.rb (100%) rename lib/{ => pressa}/views/layout.rb (99%) rename lib/{ => pressa}/views/month_posts_view.rb (94%) rename lib/{ => pressa}/views/post_view.rb (97%) rename lib/{ => pressa}/views/project_view.rb (97%) rename lib/{ => pressa}/views/projects_view.rb (96%) rename lib/{ => pressa}/views/recent_posts_view.rb (91%) rename lib/{ => pressa}/views/year_posts_view.rb (100%) diff --git a/AGENTS.md b/AGENTS.md index 101e11f..6ecd80c 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -3,7 +3,7 @@ ## Project Structure & Module Organization This repository is a single Ruby static-site generator project (the legacy Swift generators were removed). -- Generator code: `lib/` +- Generator code: `lib/pressa/` (entrypoint: `lib/pressa.rb`) - Build/deploy/draft tasks: `bake.rb` - Tests: `spec/` - Site config: `site.toml`, `projects.toml` @@ -12,7 +12,7 @@ This repository is a single Ruby static-site generator project (the legacy Swift - Draft posts: `public/drafts/` - Generated output: `www/` (safe to delete/regenerate) -Keep new code under the existing `Pressa` module structure (for example `lib/posts`, `lib/projects`, `lib/views`, `lib/config`, `lib/utils`) and add matching specs under `spec/`. +Keep new code under the existing `Pressa` module structure (for example `lib/pressa/posts`, `lib/pressa/projects`, `lib/pressa/views`, `lib/pressa/config`, `lib/pressa/utils`) and add matching specs under `spec/`. ## Setup, Build, Test, and Development Commands - Use `rbenv exec` for Ruby commands in this repository (for example `rbenv exec bundle exec ...`) to ensure the project Ruby version is used. diff --git a/bake.rb b/bake.rb index 3a6d8d9..68cd709 100644 --- a/bake.rb +++ b/bake.rb @@ -5,6 +5,9 @@ require "fileutils" require "open3" require "tmpdir" +LIB_PATH = File.expand_path("lib", __dir__).freeze +$LOAD_PATH.unshift(LIB_PATH) unless $LOAD_PATH.include?(LIB_PATH) + DRAFTS_DIR = "public/drafts".freeze PUBLISH_HOST = "mudge".freeze PRODUCTION_PUBLISH_DIR = "/var/www/samhuri.net/public".freeze @@ -358,7 +361,7 @@ end # Build the site with specified URL # @parameter url [String] The site URL to use def build(url) - require_relative "lib/pressa" + require "pressa" puts "Building site for #{url}..." site = Pressa.create_site(source_path: ".", url_override: url) diff --git a/lib/pressa.rb b/lib/pressa.rb index 56ebd67..958d59c 100644 --- a/lib/pressa.rb +++ b/lib/pressa.rb @@ -1,10 +1,10 @@ -require_relative "site" -require_relative "site_generator" -require_relative "plugin" -require_relative "posts/plugin" -require_relative "projects/plugin" -require_relative "utils/markdown_renderer" -require_relative "config/loader" +require "pressa/site" +require "pressa/site_generator" +require "pressa/plugin" +require "pressa/posts/plugin" +require "pressa/projects/plugin" +require "pressa/utils/markdown_renderer" +require "pressa/config/loader" module Pressa def self.create_site(source_path: ".", url_override: nil) diff --git a/lib/config/loader.rb b/lib/pressa/config/loader.rb similarity index 97% rename from lib/config/loader.rb rename to lib/pressa/config/loader.rb index 7288f13..bc56b15 100644 --- a/lib/config/loader.rb +++ b/lib/pressa/config/loader.rb @@ -1,8 +1,8 @@ -require_relative "../site" -require_relative "../posts/plugin" -require_relative "../projects/plugin" -require_relative "../utils/markdown_renderer" -require_relative "simple_toml" +require "pressa/site" +require "pressa/posts/plugin" +require "pressa/projects/plugin" +require "pressa/utils/markdown_renderer" +require "pressa/config/simple_toml" module Pressa module Config diff --git a/lib/config/simple_toml.rb b/lib/pressa/config/simple_toml.rb similarity index 100% rename from lib/config/simple_toml.rb rename to lib/pressa/config/simple_toml.rb diff --git a/lib/plugin.rb b/lib/pressa/plugin.rb similarity index 100% rename from lib/plugin.rb rename to lib/pressa/plugin.rb diff --git a/lib/posts/json_feed.rb b/lib/pressa/posts/json_feed.rb similarity index 95% rename from lib/posts/json_feed.rb rename to lib/pressa/posts/json_feed.rb index 90507dc..5b4b185 100644 --- a/lib/posts/json_feed.rb +++ b/lib/pressa/posts/json_feed.rb @@ -1,6 +1,6 @@ require "json" -require_relative "../utils/file_writer" -require_relative "../views/feed_post_view" +require "pressa/utils/file_writer" +require "pressa/views/feed_post_view" module Pressa module Posts diff --git a/lib/posts/metadata.rb b/lib/pressa/posts/metadata.rb similarity index 100% rename from lib/posts/metadata.rb rename to lib/pressa/posts/metadata.rb diff --git a/lib/posts/models.rb b/lib/pressa/posts/models.rb similarity index 98% rename from lib/posts/models.rb rename to lib/pressa/posts/models.rb index 62772b3..2e90959 100644 --- a/lib/posts/models.rb +++ b/lib/pressa/posts/models.rb @@ -1,5 +1,5 @@ require "dry-struct" -require_relative "../site" +require "pressa/site" module Pressa module Posts diff --git a/lib/posts/plugin.rb b/lib/pressa/posts/plugin.rb similarity index 87% rename from lib/posts/plugin.rb rename to lib/pressa/posts/plugin.rb index d6a0dd9..f12db01 100644 --- a/lib/posts/plugin.rb +++ b/lib/pressa/posts/plugin.rb @@ -1,8 +1,8 @@ -require_relative "../plugin" -require_relative "repo" -require_relative "writer" -require_relative "json_feed" -require_relative "rss_feed" +require "pressa/plugin" +require "pressa/posts/repo" +require "pressa/posts/writer" +require "pressa/posts/json_feed" +require "pressa/posts/rss_feed" module Pressa module Posts diff --git a/lib/posts/repo.rb b/lib/pressa/posts/repo.rb similarity index 98% rename from lib/posts/repo.rb rename to lib/pressa/posts/repo.rb index be3a4b9..a036556 100644 --- a/lib/posts/repo.rb +++ b/lib/pressa/posts/repo.rb @@ -1,6 +1,6 @@ require "kramdown" -require_relative "models" -require_relative "metadata" +require "pressa/posts/models" +require "pressa/posts/metadata" module Pressa module Posts diff --git a/lib/posts/rss_feed.rb b/lib/pressa/posts/rss_feed.rb similarity index 95% rename from lib/posts/rss_feed.rb rename to lib/pressa/posts/rss_feed.rb index 14f3c98..c58b353 100644 --- a/lib/posts/rss_feed.rb +++ b/lib/pressa/posts/rss_feed.rb @@ -1,6 +1,6 @@ require "builder" -require_relative "../utils/file_writer" -require_relative "../views/feed_post_view" +require "pressa/utils/file_writer" +require "pressa/views/feed_post_view" module Pressa module Posts diff --git a/lib/posts/writer.rb b/lib/pressa/posts/writer.rb similarity index 93% rename from lib/posts/writer.rb rename to lib/pressa/posts/writer.rb index 7dbbd16..0d54aa1 100644 --- a/lib/posts/writer.rb +++ b/lib/pressa/posts/writer.rb @@ -1,10 +1,10 @@ -require_relative "../utils/file_writer" -require_relative "../views/layout" -require_relative "../views/post_view" -require_relative "../views/recent_posts_view" -require_relative "../views/archive_view" -require_relative "../views/year_posts_view" -require_relative "../views/month_posts_view" +require "pressa/utils/file_writer" +require "pressa/views/layout" +require "pressa/views/post_view" +require "pressa/views/recent_posts_view" +require "pressa/views/archive_view" +require "pressa/views/year_posts_view" +require "pressa/views/month_posts_view" module Pressa module Posts diff --git a/lib/projects/models.rb b/lib/pressa/projects/models.rb similarity index 93% rename from lib/projects/models.rb rename to lib/pressa/projects/models.rb index b013f4c..a70c769 100644 --- a/lib/projects/models.rb +++ b/lib/pressa/projects/models.rb @@ -1,5 +1,5 @@ require "dry-struct" -require_relative "../site" +require "pressa/site" module Pressa module Projects diff --git a/lib/projects/plugin.rb b/lib/pressa/projects/plugin.rb similarity index 90% rename from lib/projects/plugin.rb rename to lib/pressa/projects/plugin.rb index a7ac289..cb1a611 100644 --- a/lib/projects/plugin.rb +++ b/lib/pressa/projects/plugin.rb @@ -1,9 +1,9 @@ -require_relative "../plugin" -require_relative "../utils/file_writer" -require_relative "../views/layout" -require_relative "../views/projects_view" -require_relative "../views/project_view" -require_relative "models" +require "pressa/plugin" +require "pressa/utils/file_writer" +require "pressa/views/layout" +require "pressa/views/projects_view" +require "pressa/views/project_view" +require "pressa/projects/models" module Pressa module Projects diff --git a/lib/site.rb b/lib/pressa/site.rb similarity index 100% rename from lib/site.rb rename to lib/pressa/site.rb diff --git a/lib/site_generator.rb b/lib/pressa/site_generator.rb similarity index 98% rename from lib/site_generator.rb rename to lib/pressa/site_generator.rb index 98f204c..77b9d79 100644 --- a/lib/site_generator.rb +++ b/lib/pressa/site_generator.rb @@ -1,5 +1,5 @@ require "fileutils" -require_relative "utils/file_writer" +require "pressa/utils/file_writer" module Pressa class SiteGenerator diff --git a/lib/utils/file_writer.rb b/lib/pressa/utils/file_writer.rb similarity index 100% rename from lib/utils/file_writer.rb rename to lib/pressa/utils/file_writer.rb diff --git a/lib/utils/markdown_renderer.rb b/lib/pressa/utils/markdown_renderer.rb similarity index 96% rename from lib/utils/markdown_renderer.rb rename to lib/pressa/utils/markdown_renderer.rb index b5ca515..8dc1bfc 100644 --- a/lib/utils/markdown_renderer.rb +++ b/lib/pressa/utils/markdown_renderer.rb @@ -1,9 +1,9 @@ require "kramdown" require "yaml" -require_relative "file_writer" -require_relative "../site" -require_relative "../views/layout" -require_relative "../views/icons" +require "pressa/utils/file_writer" +require "pressa/site" +require "pressa/views/layout" +require "pressa/views/icons" module Pressa module Utils diff --git a/lib/views/archive_view.rb b/lib/pressa/views/archive_view.rb similarity index 92% rename from lib/views/archive_view.rb rename to lib/pressa/views/archive_view.rb index b776267..1bde3b5 100644 --- a/lib/views/archive_view.rb +++ b/lib/pressa/views/archive_view.rb @@ -1,5 +1,5 @@ require "phlex" -require_relative "year_posts_view" +require "pressa/views/year_posts_view" module Pressa module Views diff --git a/lib/views/feed_post_view.rb b/lib/pressa/views/feed_post_view.rb similarity index 100% rename from lib/views/feed_post_view.rb rename to lib/pressa/views/feed_post_view.rb diff --git a/lib/views/icons.rb b/lib/pressa/views/icons.rb similarity index 100% rename from lib/views/icons.rb rename to lib/pressa/views/icons.rb diff --git a/lib/views/layout.rb b/lib/pressa/views/layout.rb similarity index 99% rename from lib/views/layout.rb rename to lib/pressa/views/layout.rb index bfc5f5c..40a1069 100644 --- a/lib/views/layout.rb +++ b/lib/pressa/views/layout.rb @@ -1,5 +1,5 @@ require "phlex" -require_relative "icons" +require "pressa/views/icons" module Pressa module Views diff --git a/lib/views/month_posts_view.rb b/lib/pressa/views/month_posts_view.rb similarity index 94% rename from lib/views/month_posts_view.rb rename to lib/pressa/views/month_posts_view.rb index 5368609..9b50016 100644 --- a/lib/views/month_posts_view.rb +++ b/lib/pressa/views/month_posts_view.rb @@ -1,5 +1,5 @@ require "phlex" -require_relative "post_view" +require "pressa/views/post_view" module Pressa module Views diff --git a/lib/views/post_view.rb b/lib/pressa/views/post_view.rb similarity index 97% rename from lib/views/post_view.rb rename to lib/pressa/views/post_view.rb index 6c0c4c1..30b0381 100644 --- a/lib/views/post_view.rb +++ b/lib/pressa/views/post_view.rb @@ -1,5 +1,5 @@ require "phlex" -require_relative "icons" +require "pressa/views/icons" module Pressa module Views diff --git a/lib/views/project_view.rb b/lib/pressa/views/project_view.rb similarity index 97% rename from lib/views/project_view.rb rename to lib/pressa/views/project_view.rb index cb867a4..53f6906 100644 --- a/lib/views/project_view.rb +++ b/lib/pressa/views/project_view.rb @@ -1,5 +1,5 @@ require "phlex" -require_relative "icons" +require "pressa/views/icons" module Pressa module Views diff --git a/lib/views/projects_view.rb b/lib/pressa/views/projects_view.rb similarity index 96% rename from lib/views/projects_view.rb rename to lib/pressa/views/projects_view.rb index 01b3cbe..a1f20d1 100644 --- a/lib/views/projects_view.rb +++ b/lib/pressa/views/projects_view.rb @@ -1,5 +1,5 @@ require "phlex" -require_relative "icons" +require "pressa/views/icons" module Pressa module Views diff --git a/lib/views/recent_posts_view.rb b/lib/pressa/views/recent_posts_view.rb similarity index 91% rename from lib/views/recent_posts_view.rb rename to lib/pressa/views/recent_posts_view.rb index a18bc02..79550c2 100644 --- a/lib/views/recent_posts_view.rb +++ b/lib/pressa/views/recent_posts_view.rb @@ -1,5 +1,5 @@ require "phlex" -require_relative "post_view" +require "pressa/views/post_view" module Pressa module Views diff --git a/lib/views/year_posts_view.rb b/lib/pressa/views/year_posts_view.rb similarity index 100% rename from lib/views/year_posts_view.rb rename to lib/pressa/views/year_posts_view.rb diff --git a/spec/test_helper.rb b/spec/test_helper.rb index 6c45c43..47bad16 100644 --- a/spec/test_helper.rb +++ b/spec/test_helper.rb @@ -1,2 +1,4 @@ -require_relative "../lib/pressa" +lib_path = File.expand_path("../lib", __dir__) +$LOAD_PATH.unshift(lib_path) unless $LOAD_PATH.include?(lib_path) +require "pressa" require "minitest/autorun"