changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > org / annotate publish.el

changeset 15: 27795b18326b
parent: 06842841bf42
child: ab1f674742a8
author: ellis <ellis@rwest.io>
date: Fri, 24 Nov 2023 22:39:07 -0500
permissions: -rw-r--r--
description: blog update
13
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
1
 ;;; publish.el --- the.compiler.company publishing script  -*- lexical-binding: t; -*-
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
2
 
14
06842841bf42 hello-world update
ellis <ellis@rwest.io>
parents: 13
diff changeset
3
 ;; emacsclient -e '(load-file "publish.el")' '(publish)'
06842841bf42 hello-world update
ellis <ellis@rwest.io>
parents: 13
diff changeset
4
 
13
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
5
 ;;; Code:
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
6
 (require 'ox-publish)
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
7
 (require 'org-id)
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
8
 ;; vendored
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
9
 (require 'htmlize)
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
10
 (defvar project-dir "~/dev/comp/org")
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
11
 (defvar publish-dir "/mnt/w/compiler.company")
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
12
 (defvar html-theme nil)
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
13
 (defvar url "https://compiler.company")
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
14
 (defvar html-nav "<div> <a href = \"https://compiler.company\">~/</a> ( <a href = \"https://compiler.company/blog\">blog</a> <a href = \"https://compiler.company/docs\">docs</a> <a href = \"https://vc.compiler.company/comp\">code</a> ) </div>")
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
15
 
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
16
 (defvar html-foot "<footer>updated %C</footer>")
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
17
 
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
18
 (setq org-html-style-default ""
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
19
       org-html-scripts ""
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
20
       org-html-htmlize-output-type 'css
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
21
       org-export-htmlize-output-type 'css
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
22
       org-html-doctype "html5"
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
23
       org-html-html5-fancy t
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
24
       org-html-validation-link nil
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
25
       org-src-fontify-natively t
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
26
       make-backup-files nil
15
27795b18326b blog update
ellis <ellis@rwest.io>
parents: 14
diff changeset
27
       debug-on-error t
27795b18326b blog update
ellis <ellis@rwest.io>
parents: 14
diff changeset
28
       org-id-link-to-org-use-id t)
13
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
29
 
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
30
 (setq org-publish-project-alist
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
31
       `(("compiler.company" :components ("index" "blog" "docs"))
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
32
         ("index"
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
33
          :base-directory ,project-dir
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
34
          :base-extension "org"
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
35
          :recursive nil
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
36
          :htmlized-source t
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
37
 	 :html-preamble ,html-nav
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
38
          :publishing-directory ,publish-dir
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
39
          :publishing-function org-html-publish-to-html
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
40
          :html-postamble ,html-foot)
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
41
         ("blog"
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
42
          :base-directory ,(expand-file-name "blog" project-dir)
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
43
          :base-extension "org"
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
44
 	 :publishing-directory ,(expand-file-name "blog" publish-dir)
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
45
 	 :publishing-function org-html-publish-to-html
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
46
 	 :htmlized-source t
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
47
 	 :html-preamble ,html-nav
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
48
          :html-postamble ,html-foot)
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
49
         ("docs"
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
50
          :base-directory ,(expand-file-name "docs" project-dir)
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
51
          :base-extension "org"
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
52
          :recursive t
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
53
          :publishing-directory ,(expand-file-name "docs" publish-dir)
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
54
 	 :publishing-function org-html-publish-to-html
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
55
 	 :htmlized-source t
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
56
          :html-preamble ,html-nav
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
57
          :html-postamble ,html-foot)))
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
58
 
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
59
 (defun org-custom-id-get (&optional pom create prefix)
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
60
   "Get the CUSTOM_ID property of the entry at point-or-marker POM.
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
61
    If POM is nil, refer to the entry at point. If the entry does
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
62
    not have an CUSTOM_ID, the function returns nil. However, when
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
63
    CREATE is non nil, create a CUSTOM_ID if none is present
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
64
    already. PREFIX will be passed through to `org-id-new'. In any
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
65
    case, the CUSTOM_ID of the entry is returned."
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
66
   (interactive)
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
67
 (org-with-point-at pom
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
68
   (let ((id (org-entry-get nil "CUSTOM_ID"))
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
69
 	;; use CUSTOM_ID for links
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
70
 	(org-id-link-to-org-use-id 'create-if-interactive-and-no-custom-id))
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
71
       (cond
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
72
        ((and id (stringp id) (string-match "\\S-" id))
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
73
         id)
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
74
        (create
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
75
         (setq id (org-id-new prefix))
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
76
         (org-entry-put pom "CUSTOM_ID" id)
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
77
         (org-id-add-location id (buffer-file-name (buffer-base-buffer)))
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
78
         id)))))
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
79
 ;;;###autoload
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
80
 (defun org-id-add-to-headlines-in-file ()
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
81
   "Add CUSTOM_ID properties to all headlines in the
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
82
    current file which do not already have one."
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
83
   (interactive)
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
84
   (org-map-entries (lambda () (org-custom-id-get (point) 'create))))
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
85
 
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
86
 ;;;###autoload
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
87
 (defun publish (&optional sitemap static force async)
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
88
   "publish `rwest-io' content.
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
89
 If STATIC is t, also publish media and static files.
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
90
 If FORCE is t, skip checking file mod date and just publish all files.
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
91
 If ASYNC is t, call `org-publish' asynchronously.
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
92
 If given a prefix (C-u), set all args to t"
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
93
   (interactive)
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
94
   (if current-prefix-arg
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
95
       (setq static t
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
96
 	    force t
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
97
             async t))
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
98
   (let ((default-directory project-dir))
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
99
     (message (format "publishing from %s" default-directory))    
d0daa407ec13 org publishing
ellis <ellis@rwest.io>
parents:
diff changeset
100
     (org-publish "compiler.company" force async)))