;; -*- lexical-binding: t -*- ;;; Package -- make.el ;;; Commentary: ;;; ;;; Code: (package-initialize) (require 'org) (require 'cl-lib) (require 'ox) (require 'ox-html) (dolist (d '("public_html")) (unless (file-exists-p d) (make-directory d))) (require 'org-special-block-extras) (add-hook #'org-mode-hook #'org-special-block-extras-mode) (defun my-org--support-special-blocks-with-args (backend) (let ((fbackend (if (equal backend '(templated-html)) 'html backend))) `(,fbackend))) (advice-add 'org--support-special-blocks-with-args :filter-args #'my-org--support-special-blocks-with-args) (ignore-errors (require 'ox-thtml)) ;; https://alhassy.github.io/AlBasmala.html#Floating-TOC (advice-add 'org-html--translate :before-until 'display-toc-as-toc) (defun display-toc-as-toc (phrase info) (when (equal phrase "Table of Contents") " TOC ")) (require 'extra-blocks) ;; DOES NOT WORK https://github.com/alphapapa/unpackaged.el#export-to-html-with-useful-anchors (setq org-export-with-sub-superscripts '{} org-export-headline-levels 6 ; emacs-htmlize does not work when Emacs is ran in =script= mode unfortunately ;; org-html-html5-fancy t org-html-htmlize-output-type 'css indent-tabs-mode nil) (setq-default indent-tabs-mode nil) (defvar magic_rb/asset-include "\\(ttf\\|svg\\|jpg\\|gif\\|png\\|css\\|js\\|el\\|nb\\|ipynb\\|pdf\\|xml\\|woff2\\)") (defun org-publish-sitemap-filtered (exclude) "Publish sitemap filtered using EXCLUDE." (lambda (title list) (let ((filtered-list (seq-filter (lambda (x) (if (equal x 'unordered) t (pcase (with-temp-buffer (let ((org-inhibit-startup nil)) (insert (car x)) (org-mode) (goto-char (point-min)) (org-element-link-parser))) (`nil (error "Unreachable")) (link (not (seq-contains-p exclude (plist-get (car (cdr link)) :path) #'string-equal)))))) list))) (org-publish-sitemap-default title filtered-list)))) (defvar org-publish-project-alist) (setq org-publish-project-alist `( ;; Blog ("redalder-blog-content" :base-directory ,(expand-file-name "./blog/") :base-extension "org" :publishing-directory ,(expand-file-name "./public_html/blog") :recursive t :section-numbers nil :with-toc nil :with-date nil :html-template ,(templated-html-load-template "./templates/blog.html") :publishing-function org-html-publish-to-templated-html :headline-levels 5 :exclude "^\\(index.org\\|*.inc\\)" :auto-preamble t :auto-sitemap t :sitemap-folders ignore :sitemap-style list :sitemap-title "Magic_RB's blog" :sitemap-filename "sitemap.inc" :sitemap-sort-files anti-chronologically :sitemap-function ,(org-publish-sitemap-filtered '("limiting-online-communication.org"))) ("redalder-blog-index" :base-directory ,(expand-file-name "./blog/") :root-directory ,(expand-file-name "./blog/") :recursive t :base-extension "org" :exclude "^.*$" :include ("index.org") :publishing-directory ,(expand-file-name "./public_html/blog/") :section-numbers nil :with-toc nil :with-date nil :html-template ,(templated-html-load-template "./templates/blog-index.html") :publishing-function org-html-publish-to-templated-html) ("redalder-blog" :components ("redalder-blog-content" "redalder-blog-index")) ;; Homepage ("redalder-homepage" :base-directory ,(expand-file-name "./home") :recursive nil :base-extension "org" :exclude "^.*$" :include ("index.org") :with-toc nil :publishing-directory ,(expand-file-name "./public_html/") :html-template ,(templated-html-load-template "./templates/index.html") :publishing-function org-html-publish-to-templated-html) ;; Contact ("redalder-contact" :base-directory ,(expand-file-name "./home") :recursive nil :base-extension "org" :exclude "^.*$" :include ("contact.org") :with-toc nil :publishing-directory ,(expand-file-name "./public_html/") :html-template ,(templated-html-load-template "./templates/empty.html") :publishing-function org-html-publish-to-templated-html) ;; Links ("redalder-links" :base-directory ,(expand-file-name "./home") :recursive nil :base-extension "org" :exclude "^.*$" :include ("links.org") :with-toc nil :publishing-directory ,(expand-file-name "./public_html/") :html-template ,(templated-html-load-template "./templates/empty.html") :publishing-function org-html-publish-to-templated-html) ;; Static images and css and js for redalder.org ("redalder-assets" :base-directory ,(expand-file-name "./assets/") :publishing-directory ,(expand-file-name "./public_html/") :recursive t :base-extension ,magic_rb/asset-include :publishing-function org-publish-attachment) ;; Static images and css and js for nixng.org ("nixng-assets" :base-directory ,(expand-file-name "./assets/") :publishing-directory ,(expand-file-name "./public_html/") :recursive t :base-extension ,magic_rb/asset-include :publishing-function org-publish-attachment) ;; top-level trigger ("redalder-publish" :components ("redalder-blog" "redalder-assets" "redalder-homepage" "redalder-contact" "redalder-links")) ("nixng-publish" :components ("nixng-assets")))) (defun magic_rb/publish-website (website) "Publish WEBSITE." (cond ((string= website "redalder.org") (org-publish "redalder-publish" t)) ((string= website "nixng.org") (org-publish "nixng-publish")))) (provide 'make) ;;; make.el ends here