[Emacs] Set up travis html generation

This commit is contained in:
Ivan Malison 2016-12-28 02:08:34 -08:00
parent b328832f9a
commit 0f165c007b
No known key found for this signature in database
GPG Key ID: 62530EFBE99DC2F8
8 changed files with 148 additions and 15 deletions

7
.travis.yml Normal file
View File

@ -0,0 +1,7 @@
language: generic
script: bash
env:
global:
- ENCRYPTION_LABEL: "73e6c870aa87"
- COMMIT_AUTHOR_EMAIL: "IvanMalison@gmail.com"

6
bin/Cask Normal file
View File

@ -0,0 +1,6 @@
(source org)
(source melpa)
(depends-on "use-package")
(depends-on "org-plus-contrib")
(depends-on "htmlize")

19
bin/compile.sh Executable file
View File

@ -0,0 +1,19 @@
#!/usr/bin/env bash
export PATH="$HOME/.cask/bin:$HOME/.evm/bin:$PATH"
THIS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
TARGET=$(readlink -f "$THIS_DIR/../dotfiles/emacs.d/README.org")
git clone https://github.com/rejeep/evm.git "$HOME/.evm"
evm config path /tmp
evm install emacs-25.1-travis --use --skip
export EMACS=$(sh -c 'type -P emacs')
curl -fsSkL https://raw.github.com/cask/cask/master/go | python
cask install
cask exec emacs --script generate-html.el
cp "../dotfiles/emacs.d/README.html" out

64
bin/deploy.sh Executable file
View File

@ -0,0 +1,64 @@
#!/usr/bin/env bash
# This approach was adapted from https://gist.github.com/domenic/ec8b0fc8ab45f39403dd
set -e # Exit with nonzero exit code if anything fails
SOURCE_BRANCH="master"
TARGET_BRANCH="gh-pages"
function doCompile {
./compile.sh
}
# Pull requests and commits to other branches shouldn't try to deploy, just build to verify
if [ "$TRAVIS_PULL_REQUEST" != "false" -o "$TRAVIS_BRANCH" != "$SOURCE_BRANCH" ]; then
echo "Skipping deploy; just doing a build."
doCompile
exit 0
fi
# Save some useful information
REPO=`git config remote.origin.url`
SSH_REPO=${REPO/https:\/\/github.com\//git@github.com:}
SHA=`git rev-parse --verify HEAD`
# Clone the existing gh-pages for this repo into out/
# Create a new empty branch if gh-pages doesn't exist yet (should only happen on first deply)
git clone $REPO out
cd out
git checkout $TARGET_BRANCH || git checkout --orphan $TARGET_BRANCH
cd ..
# Clean out existing contents
rm -rf out/**/* || exit 0
# Run our compile script
doCompile
# Now let's go have some fun with the cloned repo
cd out
git config user.name "$COMMIT_AUTHOR_NAME"
git config user.email "$COMMIT_AUTHOR_EMAIL"
# If there are no changes to the compiled out (e.g. this is a README update) then just bail.
if [ -z `git diff --exit-code` ]; then
echo "No changes to the output on this push; exiting."
exit 0
fi
# Commit the "changes", i.e. the new version.
# The delta will show diffs between new and old versions.
git add .
git commit -m "Deploy to GitHub Pages: ${SHA}"
# Get the deploy key by using Travis's stored variables to decrypt deploy_key.enc
ENCRYPTED_KEY_VAR="encrypted_${ENCRYPTION_LABEL}_key"
ENCRYPTED_IV_VAR="encrypted_${ENCRYPTION_LABEL}_iv"
ENCRYPTED_KEY=${!ENCRYPTED_KEY_VAR}
ENCRYPTED_IV=${!ENCRYPTED_IV_VAR}
openssl aes-256-cbc -K $ENCRYPTED_KEY -iv $ENCRYPTED_IV -in deploy_key.enc -out deploy_key -d
chmod 600 deploy_key
eval `ssh-agent -s`
ssh-add deploy_key
git push $SSH_REPO $TARGET_BRANCH

BIN
bin/deploy_key.enc Normal file

Binary file not shown.

30
bin/generate-html.el Executable file
View File

@ -0,0 +1,30 @@
(package-initialize)
(require 'ox-html)
(require 'htmlize)
(defmacro do-nothing (name)
`(defun ,name (&rest args) nil))
(do-nothing imalison:add-to-org-agenda-files)
(do-nothing imalison:disable-linum-mode)
(setq emacs-dir
(expand-file-name "../dotfiles/emacs.d/"
(file-name-directory load-file-name)))
(setq readme-src (concat emacs-dir "README.org"))
(org-babel-tangle-file readme-src)
(load-file (concat emacs-dir "org-config.el"))
(defun export-target (target)
(with-current-buffer (find-file-noselect target)
(let ((org-export-headline-levels 10))
(org-html-export-to-html))))
(setq org-html-postamble nil)
(setq org-html-htmlize-output-type 'css)
(setq org-confirm-babel-evaluate nil)
(message (export-target readme-src))

View File

@ -2014,6 +2014,7 @@ I don't use auto-complete at all, so I have set up a hook to automatically disab
(require 'smartparens-config) (require 'smartparens-config)
(smartparens-global-mode 1) (smartparens-global-mode 1)
(sp-use-smartparens-bindings) (sp-use-smartparens-bindings)
(sp-local-pair 'org-mode "~" "~")
(unbind-key "C-M-<backspace>" smartparens-mode-map) (unbind-key "C-M-<backspace>" smartparens-mode-map)
(unbind-key "C-<backspace>" smartparens-mode-map) (unbind-key "C-<backspace>" smartparens-mode-map)
(unbind-key "M-<backspace>" smartparens-mode-map))) (unbind-key "M-<backspace>" smartparens-mode-map)))
@ -2779,7 +2780,7 @@ Intero seems to be causing hangs, so it has been disabled
** Document ** Document
*** org *** org
**** config **** config
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp :tangle org-config.el
(use-package org (use-package org
:ensure org-plus-contrib :ensure org-plus-contrib
:bind (:map org-mode-map :bind (:map org-mode-map
@ -2787,13 +2788,13 @@ Intero seems to be causing hangs, so it has been disabled
:preface :preface
(progn (progn
;; XXX: These should probably be moved to config, right? ;; XXX: These should probably be moved to config, right?
(defvar-setq org-startup-indented nil) (setq org-startup-indented nil
(defvar-setq org-startup-folded t) org-startup-folded t
(defvar-setq org-edit-src-content-indentation 0) org-edit-src-content-indentation 0
(defvar-setq org-src-preserve-indentation t) org-src-preserve-indentation t
(defvar-setq org-directory "~/Dropbox/org") org-directory "~/Dropbox/org"
(defvar-setq org-mobile-inbox-for-pull "~/Dropbox/org/flagged.org") org-mobile-inbox-for-pull "~/Dropbox/org/flagged.org"
(defvar-setq org-mobile-directory "~/Dropbox/Apps/MobileOrg") org-mobile-directory "~/Dropbox/Apps/MobileOrg")
(setq org-goto-interface 'outline-path-completion (setq org-goto-interface 'outline-path-completion
org-goto-max-level 10 org-goto-max-level 10
@ -2914,7 +2915,7 @@ Intero seems to be causing hangs, so it has been disabled
"STARTED(s!)" "WAIT(w!)" "BACKLOG(b!)" "|" "STARTED(s!)" "WAIT(w!)" "BACKLOG(b!)" "|"
"DONE(d!)" "HANDLED(h!)" "EXPIRED(e!)" "CANCELED(c!)"))) "DONE(d!)" "HANDLED(h!)" "EXPIRED(e!)" "CANCELED(c!)")))
(defvar-setq helm-org-headings-fontify t) (setq helm-org-headings-fontify t)
(setq org-todo-repeat-to-state "TODO") (setq org-todo-repeat-to-state "TODO")
(setq org-agenda-span 10) (setq org-agenda-span 10)
@ -2924,7 +2925,6 @@ Intero seems to be causing hangs, so it has been disabled
"%80ITEM(Task) %10Effort(Effort){:} %10CLOCKSUM") "%80ITEM(Task) %10Effort(Effort){:} %10CLOCKSUM")
(add-to-list 'org-show-context-detail '(org-goto . lineage)) (add-to-list 'org-show-context-detail '(org-goto . lineage))
(sp-local-pair 'org-mode "~" "~")
(add-to-list (add-to-list
'org-src-lang-modes '("plantuml" . plantuml)) 'org-src-lang-modes '("plantuml" . plantuml))
@ -3191,6 +3191,12 @@ Intero seems to be causing hangs, so it has been disabled
;; blame. ;; blame.
)) ))
#+END_SRC #+END_SRC
**** Load org-config.el
I put some org-mode specific configs in a separate file so that they can be used
separately. This means that I need to load this file in init.el.
#+BEGIN_SRC emacs-lisp
(load-file (concat (file-name-directory load-file-name) "org-config.el"))
#+END_SRC
**** Use frames **** Use frames
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package org (use-package org
@ -3203,7 +3209,7 @@ Intero seems to be causing hangs, so it has been disabled
#+END_SRC #+END_SRC
**** Set Background Color of Source Blocks for Export **** Set Background Color of Source Blocks for Export
This was taken from [[http://emacs.stackexchange.com/questions/3374/set-the-background-of-org-exported-code-blocks-according-to-theme][here]]. This was taken from [[http://emacs.stackexchange.com/questions/3374/set-the-background-of-org-exported-code-blocks-according-to-theme][here]].
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp :tangle org-config.el
(use-package org (use-package org
:config :config
(progn (progn
@ -3225,7 +3231,7 @@ background of code to whatever theme I'm using's background"
**** Use my own default naming scheme for org-headings **** Use my own default naming scheme for org-headings
First we define a function that will generate a sanitized version of the heading First we define a function that will generate a sanitized version of the heading
as its link target. as its link target.
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp :tangle org-config.el
(defun imalison:org-get-raw-value (item) (defun imalison:org-get-raw-value (item)
(when (listp item) (when (listp item)
(let* ((property-list (cadr item))) (let* ((property-list (cadr item)))
@ -3249,7 +3255,7 @@ as its link target.
This function replaces the default naming scheme with a call to This function replaces the default naming scheme with a call to
~imalison:generate-name~, and uses a slightly different uniquify approach. ~imalison:generate-name~, and uses a slightly different uniquify approach.
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp :tangle org-config.el
(use-package ox (use-package ox
:ensure nil :ensure nil
:demand t :demand t
@ -4062,6 +4068,7 @@ I have currently disabled key-chord because it may cause typing lag.
(setq jabber-alert-message-function 'jabber-message-content-message))) (setq jabber-alert-message-function 'jabber-message-content-message)))
#+END_SRC #+END_SRC
** htmlize ** htmlize
This package is needed to export org to html.
#+BEGIN_SRC emacs-lisp #+BEGIN_SRC emacs-lisp
(use-package htmlize) (use-package htmlize)
#+END_SRC #+END_SRC