diff options
author | Thomas Letan <lthms@soap.coffee> | 2020-04-02 20:16:53 +0200 |
---|---|---|
committer | Thomas Letan <lthms@soap.coffee> | 2020-04-02 20:16:53 +0200 |
commit | 46b2e7a3be44312f93b3d638f9bbd944f5c063a1 (patch) | |
tree | b1eff65fa11c462e114204aadf7e6645d70d6b31 /site/cleopatra/org.org | |
parent | Enjoy soupault’s plugin autodiscovery feature (diff) |
Refactor the build process to use cleopatra the Second
Diffstat (limited to 'site/cleopatra/org.org')
-rw-r--r-- | site/cleopatra/org.org | 188 |
1 files changed, 188 insertions, 0 deletions
diff --git a/site/cleopatra/org.org b/site/cleopatra/org.org new file mode 100644 index 0000000..bab4dc9 --- /dev/null +++ b/site/cleopatra/org.org @@ -0,0 +1,188 @@ +* Author Guidelines + +* Under the Hood + +#+BEGIN_SRC emacs-lisp :tangle scripts/packages.el +(require 'package) + +(setq user-emacs-directory (concat (getenv "ROOT") "/emacs.d")) +(setq package-user-dir (concat (getenv "ROOT") "/emacs.d")) +(setq package-archives + '(("gnu" . "https://elpa.gnu.org/packages/") + ("melpa" . "https://melpa.org/packages/"))) + +(package-initialize) + +(or (file-exists-p package-user-dir) + (package-refresh-contents)) + +(defun ensure-package-installed (&rest packages) + "Ensure every PACKAGES is installed." + (mapcar + (lambda (package) + (if (package-installed-p package) + nil + (package-install package)) + package) + packages)) + +(ensure-package-installed 'use-package) +(eval-when-compile (require 'use-package)) + +(use-package org :ensure t) +(use-package htmlize :ensure t) +(use-package lua-mode :ensure t :defer t) +(use-package rust-mode :ensure t :defer t) +(use-package sass-mode :ensure t :defer t) +(use-package haskell-mode :ensure t :defer t) +(use-package toml-mode :ensure t :defer t) +(use-package json-mode :ensure t :defer t) +(use-package monokai-pro-theme :ensure t :defer t + :init + (load-theme 'monokai-pro t)) + +(provide 'packages) +#+END_SRC + +#+BEGIN_SRC emacs-lisp :tangle scripts/export-org.el +(require 'packages) + +(org-babel-do-load-languages + 'org-babel-load-languages + '((shell . t))) +(setq org-src-preserve-indentation t) +(setq org-src-fontify-natively t) +(setq org-confirm-babel-evaluate nil) +(setq org-export-with-toc nil) +(setq org-export-with-sub-superscripts nil) + +(add-to-list 'org-entities-user + '("im" "\\(" nil "<span class=\"imath\">" "" "" "")) +(add-to-list 'org-entities-user + '("mi" "\\)" nil "</span>" "" "" "")) + +(setq org-babel-exp-code-template + (concat "#+BEGIN_SRC %lang%switches%flags " + ":tangle %tangle :name %name\n" + "%body\n" + "#+END_SRC")) + +(defun cleopatra-html-src-block (oldfun src-block contents info) + (let* + ((old-ret (funcall oldfun src-block contents info)) + (pars (org-babel-parse-header-arguments + (org-element-property :parameters src-block))) + (tangle (cdr (assoc :tangle pars))) + (name (cdr (assoc :name pars)))) + (cond + (name + (concat + "<div class=\"org-literate-programming\">" + (format "<div class=\"org-src-name\"><<%s>> :=</div>" name) + old-ret + "</div>")) + ((not (string= tangle "no")) + (concat + "<div class=\"org-literate-programming\">" + old-ret + (format "<div class=\"org-src-tangled-to\">%s</div>" tangle) + "</div>")) + (t old-ret)))) + +(advice-add 'org-html-src-block + :around #'cleopatra-html-src-block) + +(org-html-export-to-html nil nil nil t) +#+END_SRC + +#+BEGIN_SRC makefile :tangle org.mk +EMACSBIN := emacs +EMACS := ROOT="${ROOT}" ${EMACSBIN} +TANGLE := --batch \ + --load="${ROOT}/scripts/tangle-org.el" \ + 2>> build.log + +ORG_POSTS := $(shell find site/ -name "*.org") +ORG_HTML := $(ORG_POSTS:.org=.html) + +org-prebuild : .emacs +org-build : ${ORG_HTML} + +theme-build : site/style/org.sass +soupault-build : org-build + +ARTIFACTS += ${ORG_HTML} "*.html~" +CONFIGURE += .emacs emacs.d/ + +EXPORT := --directory="${ROOT}/scripts/" --batch \ + --load="${ROOT}/scripts/export-org.el" \ + 2>> build.log +INIT := --batch --load="${ROOT}/scripts/packages.el" \ + 2>> build.log + +.emacs : scripts/packages.el + @cleopatra echo Initiating "Emacs configuration" + @${EMACS} ${INIT} + @touch .emacs + +%.html : %.org scripts/packages.el scripts/export-org.el \ + .emacs org.mk + @cleopatra echo Exporting "$*.org" + @${EMACS} $< ${EXPORT} +#+END_SRC + +#+BEGIN_SRC sass :tangle site/style/org.sass +.org-src-container + @include code-block + padding-top : .1rem + padding-bottom : .1rem + +.org-src-tangled-to, .org-src-name + @include padding-centered(4rem) + +.example + @include verbatim-block + // this is hacky, but it works: no need for a padding-bottom + padding-top : 1rem + +.footdef + @include padding-centered + +.footpara + display: inline + margin-left: .2em + +.section-number-2:after, +.section-number-3:after + content: ". " + +.section-number-4, +.section-number-5, +.section-number-6 + display: none + +dl + dt + font-weight: bold + dd p + margin-top: 0 + +.footnotes + font-size : 1rem + +.org-literate-programming + padding-top : 1rem + padding-bottom : 1rem + .org-src-name + @include code-font + font-weight: bold + + .org-src-tangled-to:before + content: "\f054" + font : normal normal normal 14px/1 ForkAwesome + + .org-src-tangled-to + @include code-font + font-weight: bold + text-align: right +#+END_SRC |