import experience
[resume.jamesrichardson.name.git] / readme.org
bloba0ad672c0046f90aa1f8363234d048c0b22f5926
1 # -*- org-src-preserve-indentation: t -*-
2 #+TITLE: James' Résumé publishing tool
3 #+AUTHOR: James Richardson
5 * My Résumé
6 :PROPERTIES:
7 :ID:       9eef74e1-83b4-4621-a121-426b817276b6
8 :END:
9 This my resume in [[http://orgmode.org/][org-mode]]. Actually it is the readme about my
10 résumé. It started out as my résumé and readme, but I moved the résumé [[file:resume.org][here]]
12 ** Why? (or should this be why not?)
13 :PROPERTIES:
14 :ID:       e1518b97-f95d-452d-9e8c-3756f80562ff
15 :END:
16 This is my attempt to be really geeky and have an +markdown+ org-mode
17 resume. I was using [[http://daringfireball.net/projects/markdown/][markdown]] with [[http://johnmacfarlane.net/pandoc/][pandoc]], which worked nicely for
18 generating markdown -> LaTeX -> pdf. I seem to be moving everything
19 else[fn:1] to org-mode, though the resume would be a good fit.
21 org-mode gives me this:
22 1. ability to publish to html, pdf, odf, and a plethora of other
23    formats.
24 2. hook into my agenda 
25 3. everything else org-mode offers.
28 * project publish
29 :PROPERTIES:
30 :ID:       8b527b65-7462-4328-b97b-537811cfdab1
31 :END:
32 Define the project here, such that this file can be loaded into
33 =emacs= and cause the website to be updated automatically. This means,
34 also, that the project shouldn't be defined in my normal =emacs=,
35 otherwise they probably won't stay in sync. 
37 #+begin_listing
38 #+name: setup
39 #+begin_src emacs-lisp :tangle yes :noweb yes
40 (require 'ox-html)
41 (setq this-directory (file-name-directory (or load-file-name buffer-file-name)))
42 ;;(setq pub-directory "/ssh:resume.jamestechnotes.com:/home/public/")
43 (setq pub-directory "~/public_html/resume.jamestechnotes.com")
44 (setq org-publish-timestamp-directory (concat (or (when (boundp 'temporary-file-directory) temporary-file-directory)
45                                                   "/tmp/")
46                                               ".org-timestamps/"))
47 (setq org-html-htmlize-output-type 'css)
49 (unless (boundp 'org-publish-project-alist)
50   (setq org-publish-project-alist nil))
52 (add-to-list
53  'org-publish-project-alist
54  `("resume-content"
55    :base-directory ,this-directory
56    :base-extension "org"
57    :publishing-directory ,(expand-file-name pub-directory)
58    :publishing-function (org-html-publish-to-html org-latex-publish-to-pdf)
59    :recursvie t
60    :headline-levels 6
61    :auto-preamble nil
62    :auto-sitemap nil
63    :makeindex nil
64    :html-head-include-default-style nil
65    :html-head-include-scripts nil
66    :html-head-extra "<link rel=\"stylesheet\" title=\"Default\" href=\"/css/stylesheet.css\" type=\"text/css\" />
67   <script src=\"/js/org.js\"></script>
68   <link rel=author href=\"https://plus.google.com/u/0/100087072360376597478?rel=author\" />"
69    :completion-function (jr-resume-content-rename-resume-to-index)
70    ))
72 (add-to-list
73  'org-publish-project-alist
74  '("resume" :components ("resume-content")))
76 (defun jr-resume-content-rename-resume-to-index ()
77   "Rename resume.html to index.html after publish."
78   (let* ((pub-dir (file-name-as-directory (plist-get project-plist :publishing-directory))))
79     (princ (file-name-as-directory (plist-get project-plist :publishing-directory)))
80     (princ project-plist)
81     (princ "james")
82     (let ((default-directory pub-dir))
83       (rename-file (expand-file-name "resume.html" pub-dir) (expand-file-name "index.html") t))))
84 #+end_src
85 #+end_listing
86 * Tools
87 :PROPERTIES:
88 :ID:       5b53908a-bc3c-4637-9676-bade5966668f
89 :END:
90 I would like to make this thing as stand alone as possible, but the
91 proper incantation escapes me. I have a script in =$HOME/bin= that
92 will take care of the bootstrap, which consists of the following:
93 + if =$TMP/resume= doesn't exist, execute =cd $TMP;git checkout git://git.jamestechnotes.com/james/wiki/resume.git=
94 + if =$TMP/resume= exists, execute =cd $TMP/resume;git pull=
95 + execute =emacs --batch --no-initfile --eval "(require 'org)" --eval '(org-babel-tangle-file "readme.org" nil "makefile")'=
96 I should then have a =Makefile= that will publish the site.
98 #+begin_listing
99 #+name: makefile
100 #+begin_src makefile -i  :tangle Makefile :padline no :comments yes
101 EMACS=emacs
103 BATCH=$(EMACS) --batch --no-init-file --directory ~/src/org-mode/lisp \
104             --eval '(setq safe-local-variable-values (quote ((org-confirm-babel-evaluate) (org-src-preserve-indentation .t))))' \
105             --eval "(require 'org)" \
106             --eval "(setq org-confirm-babel-evaluate nil)" \
107             --eval "(org-babel-do-load-languages 'org-babel-load-languages \
108                      '((emacs-lisp . t) \
109                       (sh . t) \
110                       (makefile . t)))" \
111             --eval '(org-babel-load-file "readme.org")'
113 FILES = resume.org
115 all: Makefile resume
117 resume: $(FILES)
118         $(BATCH) --visit "$<" --eval '(org-publish "resume")'
119         $(BATCH) --visit "$<" --eval "(princ 'this-directory)"
121 Makefile: readme.org
122         $(BATCH) --visit "$<" --funcall org-babel-tangle
123 #+end_src
124 #+end_listing
126 * Footnotes
127 :PROPERTIES:
128 :ID:       42743822-6c5a-4037-9d66-493c63160279
129 :END:
131 [fn:1] [[http://jamestechnotes.com][HomePage]], todo/planning, even emacs initialization.