From 01eaa95d67079396ef6673e234b6ee44be1d715b Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Sat, 5 Nov 2022 22:03:30 +0100 Subject: [PATCH] jekyll: pageless_redirects plugin Signed-off-by: CrazyMax --- _plugins/pageless_redirects.rb | 38 ++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 _plugins/pageless_redirects.rb diff --git a/_plugins/pageless_redirects.rb b/_plugins/pageless_redirects.rb new file mode 100644 index 0000000000..3d3505d9de --- /dev/null +++ b/_plugins/pageless_redirects.rb @@ -0,0 +1,38 @@ +require 'jekyll' +require 'octopress-hooks' + +module Jekyll + class RedirectPage < Jekyll::Page + def initialize(site, src, redirect_to) + puts " #{src} => #{redirect_to}" + @site = site + @base = site.source + @dir = src + @name = "index.html" + process(@name) + @data = { + "sitemap" => false, + "redirect_to" => redirect_to + } + end + end + + class PagelessRedirects < Octopress::Hooks::Site + def post_read(site) + beginning_time = Time.now + puts "Starting plugin pageless_redirects.rb..." + + if File.file?("_redirects.yml") + rd = YAML.load_file("_redirects.yml") + rd.each do |redirect_to, srcs| + srcs.each do |src| + site.pages << RedirectPage.new(site, src, redirect_to) + end + end + end + + end_time = Time.now + puts "done in #{(end_time - beginning_time)} seconds" + end + end +end