diff --git a/.gitignore b/.gitignore index 261f08f..1318a63 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ /ha-private.org /incubate.org /elisp/bookmark+*.el +/.DS_Store diff --git a/ha-org-publishing.org b/ha-org-publishing.org index 7d270cd..8c8718b 100644 --- a/ha-org-publishing.org +++ b/ha-org-publishing.org @@ -89,7 +89,7 @@ My main blog made up a collection of org files: :preparation-function org-mode-blog-prepare :export-with-tags nil :headline-levels 4 - :auto-preamble t + :auto-preamble nil :auto-postamble nil :auto-sitemap t :sitemap-title "Howardisms" @@ -103,14 +103,13 @@ My main blog made up a collection of org files: :html-doctype "html5" :html-html5-fancy t + :html-head-include-default-style nil ;; :html-preamble org-mode-blog-preamble - ;; :html-postamble org-mode-blog-postamble + :html-postamble org-mode-blog-postamble ;; :html-postamble "
" - :html-head + :html-head-extra ,(jack-html - '((:meta (@ :http-equiv "X-Clacks-Overhead" - :content "GNU Terry Pratchett")) - (:link (@ :rel "stylesheet" + '((:link (@ :rel "stylesheet" :type "text/css" :href "http://fonts.googleapis.com/css?family=Source+Sans+Pro:400,700&subset=latin,latin-ext")) (:link (@ :rel "stylesheet" @@ -124,15 +123,12 @@ My main blog made up a collection of org files: :href "/css/styles.css")) (:script (@ :type "text/javascript" :src "https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js")) - (:script (@ :src "/js/magic.js" - :type "text/javascript")) - (:link (@ :rel "icon" - :href "/img/dragon.svg")) - (:link (@ :rel "shortcut icon" - :href "/img/dragon-head.svg")) - (:meta (@ :name "viewport" - :content "width=device-width, initial-scale=1")))) - :html-head-include-default-style nil)) + (:script (@ :src "/js/magic.js" :type "text/javascript")) + (:meta (@ :name "viewport" :content "width=device-width, initial-scale=1")) + (:link (@ :rel "shortcut icon" :href "/img/dragon-head.svg")) + (:link (@ :rel "icon" :href "/img/dragon.svg")) + (:link (@ :rel "me" :href "https://emacs.ch/@howard")) + (:meta (@ :http-equiv "X-Clacks-Overhead" :content "GNU Terry Pratchett")))))) #+end_src Why not break out the images and other static files into a separate project: @@ -242,6 +238,38 @@ I’ve been committing my literate-style Emacs configuration for years now, and :recursive t :publishing-function org-publish-attachment)) #+end_src +** Airbnb +I have an ADU on my property that I rent out through Airbnb. The place is full of QR Codes that display everything from local restaurants to how to play the Raspberry Pi Arcade my son and I built. + +#+begin_src emacs-lisp + (add-to-list 'org-publish-project-alist + `("airbnb" + :base-directory "~/website/airbnb" + :publishing-directory ,(concat org-mode-publishing-directory "airbnb/") + :publishing-function org-html-publish-to-html + :recursive t + :auto-preamble nil + :auto-sitemap nil + :makeindex nil + :section-numbers nil + :html-head-include-default-style nil + :html-head ,(jack-html + '(:link (@ :rel "stylesheet" :type "text/css" + :href "airbnb.css"))) + :html-head-extra nil + :table-of-contents nil + :with-author nil + :with-creator nil + :with-tags nil)) + + (add-to-list 'org-publish-project-alist + `("airbnb-static" + :base-directory "~/website/airbnb" + :base-extension "css\\|js\\|png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg\\|swf" + :publishing-directory ,(concat org-mode-publishing-directory "airbnb/") + :recursive t + :publishing-function org-publish-attachment)) +#+end_src * Including Sections In the project definitions, I reference a =pre-= and =postamble= that allow me to inject some standard HTML file headers and footers: @@ -283,16 +311,29 @@ Using =rsync= to keep published files in sync with my website: (seq-filter (lambda (lst) (string-equal (car lst) project))) (car) (cdr))) - (src (plist-get conf :publishing-directory)) - (dest (cond - ((equal project "blog-content") "howardism") + (parent (plist-get conf :publishing-directory)) + (combos (cond + ((equal project "blog-content") + '("Technical" "howardism" + "Personal" "howardism" + "index.html" "howardism" + "about-me.html" "howardabrams")) ((equal project "blog-static") "howardism") ((equal project "blog-rss") "howardism") ((equal project "tech-notes") "howardabrams/technical") ((equal project "tech-notes-static") "howardabrams/technical") ((equal project "hamacs") "howardabrams/hamacs") - ((equal project "hamacs-static") "howardabrams/hamacs")))) - (async-shell-command (format "rsync -az %s %s:%s" src host dest)))) + ((equal project "hamacs-static") "howardabrams/hamacs") + ((equal project "airbnb") "howardabrams/airbnb") + ((equal project "airbnb-static") "howardabrams/airbnb")))) + ;; (dolist (tuple (seq-partition combos 2)) + ;; (seq-let (src dest) tuple + ;; (format "rsync -az %s/%s %s:%s" parent src host dest))) + (thread-last (seq-partition combos 2) + (seq-map (lambda (tuple) (seq-let (src dest) tuple + (format "rsync -avz %s%s %s:%s" parent src host dest)))) + (s-join "; ") + (async-shell-command)))) #+end_src * Keybindings Make it easy to publish all projects or single project: @@ -302,6 +343,7 @@ Make it easy to publish all projects or single project: "o p" '(:ignore t :which-key "publish") "o p a" '("all" . org-publish-all) "o p p" '("project" . org-publish-project) + "o p s" '("sync site" . ha-sync-site) "o p h" '("hamacs" . (lambda () (interactive) (org-publish-project "hamacs") (sit-for 30)