(package-initialize) (require 'ox-publish) (require 'org-publish-rss) (defun my/file-to-string (file) (with-temp-buffer (insert-file-contents file) (buffer-string))) (setq org-html-validation-link nil org-html-head-include-scripts nil org-html-doctype "html5" org-html-html5-fancy t org-html-head-include-default-style nil org-html-head (my/file-to-string "templates/head.html") org-html-postamble nil org-export-with-section-numbers nil org-export-with-timestamps nil org-export-with-toc nil) (defun my/sitemap-format-entry (entry style project) (let ((title (org-publish-find-title entry project)) (date (org-publish-find-date entry project))) (format "%s - [[file:%s][%s]]" (format-time-string "%F" date) entry title))) (defun my/sitemap-function (title list) ; todo change this (setq spec (list (cons ?a title) (cons ?l (org-list-to-org list)))) (format-spec (my/file-to-string "templates/blog-sitemap.org") spec)) (setq org-publish-project-alist (list (list "blog" :recursive t :base-directory "./src/blog" :publishing-directory "./public/blog" :publishing-function 'org-html-publish-to-html :auto-sitemap t :sitemap-title "Lemurblog" :sitemap-filename "index.org" :sitemap-sort-files 'anti-chronologically :sitemap-format-entry 'my/sitemap-format-entry :sitemap-function 'my/sitemap-function :auto-rss t :rss-description "The Lemurian Mage's Awesome Lemur Blog" :rss-link "https://lemurianmage.srht.site/blog" :rss-copyright "nah" :completion-function 'org-publish-rss) (list "pages" :recursive nil :base-directory "./src" :publishing-function 'org-html-publish-to-html :publishing-directory "./public") (list "assets" :recursive t :base-directory "./src/assets" :base-extension 'any :include '("../blog/rss.xml") :publishing-function 'org-publish-attachment :publishing-directory "./public/assets"))) (delete-directory "public" :recursive t) (setenv "TZ" "UTC0") ; remove the timezone from rss output (org-publish-all t) (delete-file "src/blog/rss.xml~") ; I have no clue why this thing appears at all (message "Build done!")