update blog
[blog.git] / blog.el
diff --git a/blog.el b/blog.el
index a0bb36b..245a849 100644 (file)
--- a/blog.el
+++ b/blog.el
 ;; constants
 ;; (defconst root-dir "~/Private/blog/")
 (defconst root-dir (file-name-directory (or load-file-name buffer-file-name)))
-(defconst publish-dir (concat root-dir "_site/"))
+(defvar publish-dir (concat root-dir "_site/"))
 (defconst css-file "../css/worg.css")
+(defvar force-publish nil)
 ;; (defconst css-file (concat root-dir "css/worg.css"))
 
+(let ((aa (pop command-line-args-left)))
+  (if (>  (length aa) 0)
+      (setq publish-dir aa)))
 
 
+(let ((force (pop command-line-args-left)))
+  (if (string= force "true")
+      (setq force-publish t)))
+
+
+;; (setq publish-dir (or (pop command-line-args-left) publish-dir))
+(message publish-dir)
+
 (require 'org)
-;; (require 'org-html)
 (require 'ox-publish)
 (require 'htmlize)
 
-
+(message "Org-mode version %s" (org-version))
+(message "publish directory is %s" publish-dir)
+(message "force %s" force-publish)
 
 ;; To prevent inline-css when exporting html. will use external css
 (setq org-html-htmlize-output-type 'css)
 
+
+(setq blog-extra-head
+      (concat
+       ;; "<link rel='stylesheet' href='" css-file "' />\n"
+       "<link rel='stylesheet' href='../css/main.css' />\n"
+       "<link rel='stylesheet' href='../css/code.css' />"
+       ))
+
+(setq blog-header
+      (concat
+       " <header id= 'banner' > "
+       "<h1><a href= '/' >Peng Li</a></h1>"
+       "<hr>"
+       "<nav><ul>"
+       "<li><a href= '/' >About</a></li>"
+       "<li><a href= '/blog.html' >Blog</a></li>"
+       "<li><a href= '/home.html' >Home</a></li>"
+       "</ul></nav>"
+       "</header>"))
+
+
+
+(setq blog-footer
+      "<hr />\n
+<p><span style=\"float: left;\"><a href= \"/blog.xml\">RSS</a></span>
+License: <a href= \"https://creativecommons.org/licenses/by-sa/4.0/\">CC BY-SA 4.0</a></p\n")
+
+;; don't know why setting this null in `org-publish-project-alist' doesn't work
+;; (setf org-html-home/up-format "")
+
 (setq org-publish-project-alist
       `(
-        ("org-notes"
-         :base-directory ,root-dir
-         :base-extension "org"
-         :publishing-directory ,publish-dir
-         :recursive t
-         :publishing-function org-html-publish-to-html
-         :headline-levels 4
-         :section-numbers nil
-         :auto-preamble t
-         :auto-sitemap t          ;Generate sitmap.org automagicaly...
-         :sitemap-filename "sitemap.org" ;... call it sitemap.org (it's the default )...
-         :sitemap-title "Sitemap"
-
-         :html-table-of-contents nil
-         :html-postamble nil ;dont export creator auto validation info in html postamble div
-         :html-link-home "/"
-         :html-head  ,(concat  "<link rel='stylesheet' href='" css-file  "' />")
-         :html-head-include-default-style nil
-         :html-head-include-scripts nil)
-        ("org-static"
-         :base-directory ,root-dir
-         :base-extension "css\\|js\\|png\\|gif\\|pdf\\|mp3\\|ogg\\|swf"
-         :publishing-directory ,publish-dir
-         :recursive t
-         :publishing-function org-publish-attachment
-         :table-of-contents nil)
-        ("org" :components ("org-notes" "org-static"))))
-
-
-(provide 'blog)
+       ("blog-pages"
+        ;; publishing
+        :base-directory ,root-dir
+        :base-extension "org"
+        :publishing-directory ,publish-dir
+        :recursive nil
+        :publishing-function org-html-publish-to-html
+        
+        ;; html style
+        :htlm-link-home "/"
+        ;; disable home/up div
+        :html-home/up-format ""
+        :html-link-home ""
+        :html-link-up ""
+        ;;
+        :html-head nil
+        :html-head-include-default-style nil
+        :html-head-include-scripts nil
+        :html-head-extra  ,blog-extra-head
+        :html-preamble ,blog-header
+        :html-postamble ,blog-footer)
+
+       ("blog-posts"
+        ;; publishing
+        :base-directory ,(concat root-dir "/posts")
+        :base-extension "org"
+        :publishing-directory ,(concat publish-dir "/posts")
+        :recursive t
+        :publishing-function org-html-publish-to-html
+
+        ;; html style
+        :html-link-home "/"
+        ;; disable Home/Up
+        :html-home/up-format ""
+        :html-link-up ""
+        :html-link-home ""
+        ;; Add css file, preamble and posamble
+        :html-head nil
+        :html-head-include-default-style nil
+        :html-head-include-scripts nil
+        :html-head-extra ,blog-extra-head
+        :html-preamble ,blog-header
+        :html-postamble ,blog-footer
+
+        ;; sitemap
+        :auto-sitemap t
+        :sitemap-filename "sitemap.org"
+        :sitemap-title "Sitemap"
+        )
+       
+       ("blog-css"
+        :base-directory ,(concat root-dir "/css")
+        :base-extension ".*"
+        :publishing-directory ,(concat publish-dir "/css")
+        :publishing-function org-publish-attachment
+        :recursive t)
+       ("blog-cgi"
+        :base-directory ,(concat root-dir "/cgi-bin")
+        :base-extension ".*"
+        :publishing-directory ,(concat publish-dir "/cgi-bin")
+        :publishing-function org-publish-attachment
+        :recursive t)
+        ("blog" :components ("blog-pages" "blog-posts" "blog-css" "blog-cgi"))))
+
+(org-publish-project "blog" force-publish)
+
+;; (provide 'blog)
+(kill-emacs 0)
 ;;; blog.el ends here