From b42d31fa4c8375a8831698012582ba47d40c23a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleks=20R=C5=ABti=C5=86=C5=A1?= Date: Fri, 14 Feb 2025 03:11:25 +0000 Subject: [PATCH] Add Go module hosting --- build.rb | 8 ++++++++ pages/gomod.rb | 22 ++++++++++++++++++++++ pages/layout.rb | 7 ++++++- 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 pages/gomod.rb diff --git a/build.rb b/build.rb index 1b5d5da..9ac7353 100644 --- a/build.rb +++ b/build.rb @@ -10,6 +10,10 @@ require_relative "pages/blog" require_relative "pages/about" require_relative "pages/post" +def go_modules = { + "farthergate.com/stack" => "https://git.farthergate.com/aleks/stack" +} + Phlexite::Site.new { |s| s.build_dir = 'public' @@ -24,4 +28,8 @@ Phlexite::Site.new { |s| posts.each do |post| s.page "p/#{post[:slug]}/index.html", Pages::Post.new(post) end + + go_modules.each do |import, repo| + s.page "#{import.delete_prefix('farthergate.com/')}", Pages::GoMod.new(import, repo) + end } diff --git a/pages/gomod.rb b/pages/gomod.rb new file mode 100644 index 0000000..bfeee87 --- /dev/null +++ b/pages/gomod.rb @@ -0,0 +1,22 @@ +class Pages::GoMod < ::Phlex::HTML + def initialize(import, repo) + @import = import + @repo = repo + end + def view_template + meta = @post[:data].front_matter + render ::Pages::Layout.new({title: meta['title']}, meta: { + "go-import" => "#{import} git #{repo}" + }) { + p { + h1 { @import } + p { + plain "This is a generated page to host the Go module located at " + a(href: repo) { repo } + plain ". You'll probably find more information about it over there." + } + } + } + end +end + \ No newline at end of file diff --git a/pages/layout.rb b/pages/layout.rb index 5a9bc01..04b1ec9 100644 --- a/pages/layout.rb +++ b/pages/layout.rb @@ -19,13 +19,14 @@ module Pages }, } - def initialize(page) + def initialize(page, meta:) @page = page if @page.is_a? Symbol @page_info = pages[page] else @page_info = @page end + @meta = meta end def view_template @@ -38,6 +39,10 @@ module Pages link(rel: "prefetch", href: "/DM_Mono/DMMono-Regular.ttf") link(rel: "prefetch", href: "/DM_Mono/DMMono-Medium.ttf") link(rel: "stylesheet", href: "/site.css") + + @meta.each { |name, content| + meta(name: name, content: content) + } } body { header {