Move generator code under lib/pressa

This commit is contained in:
Sami Samhuri 2026-02-07 20:54:38 -08:00
parent bb3d698e27
commit 54a0543a7f
No known key found for this signature in database
30 changed files with 59 additions and 54 deletions

View file

@ -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.

View file

@ -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)

View file

@ -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)

View file

@ -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

View file

@ -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

View file

@ -1,5 +1,5 @@
require "dry-struct"
require_relative "../site"
require "pressa/site"
module Pressa
module Posts

View file

@ -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

View file

@ -1,6 +1,6 @@
require "kramdown"
require_relative "models"
require_relative "metadata"
require "pressa/posts/models"
require "pressa/posts/metadata"
module Pressa
module Posts

View file

@ -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

View file

@ -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

View file

@ -1,5 +1,5 @@
require "dry-struct"
require_relative "../site"
require "pressa/site"
module Pressa
module Projects

View file

@ -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

View file

@ -1,5 +1,5 @@
require "fileutils"
require_relative "utils/file_writer"
require "pressa/utils/file_writer"
module Pressa
class SiteGenerator

View file

@ -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

View file

@ -1,5 +1,5 @@
require "phlex"
require_relative "year_posts_view"
require "pressa/views/year_posts_view"
module Pressa
module Views

View file

@ -1,5 +1,5 @@
require "phlex"
require_relative "icons"
require "pressa/views/icons"
module Pressa
module Views

View file

@ -1,5 +1,5 @@
require "phlex"
require_relative "post_view"
require "pressa/views/post_view"
module Pressa
module Views

View file

@ -1,5 +1,5 @@
require "phlex"
require_relative "icons"
require "pressa/views/icons"
module Pressa
module Views

View file

@ -1,5 +1,5 @@
require "phlex"
require_relative "icons"
require "pressa/views/icons"
module Pressa
module Views

View file

@ -1,5 +1,5 @@
require "phlex"
require_relative "icons"
require "pressa/views/icons"
module Pressa
module Views

View file

@ -1,5 +1,5 @@
require "phlex"
require_relative "post_view"
require "pressa/views/post_view"
module Pressa
module Views

View file

@ -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"