* Build New Lisp Application Image #+name: build-image #+begin_src emacs-lisp :results none :var image-name=vampire-image-name() (with-current-buffer (get-buffer-create "*vampire-build*") (erase-buffer) (insert (format "Building image %s.\n\n" image-name)) (shell-command "sbcl --load build.lisp" (current-buffer)) (rename-file "bin/vampire" image-name)) (switch-to-buffer-other-window "*vampire-build*") #+end_src ** New tagged image filename #+name: vampire-image-name #+begin_src emacs-lisp (let ((commit (string-trim (shell-command-to-string "git rev-parse --short HEAD"))) (date (string-trim (shell-command-to-string "date '+%Y%m%d'")))) (format "bin/vampire-%s-%s" commit date)) #+end_src * Deploy Image and Assets to Server Host #+begin_src emacs-lisp :var name=vampire-image-name() dest="/scp:vampire@:" :noweb yes (with-current-buffer (get-buffer-create "*vampire-deploy*") (erase-buffer) (insert (format "Deploying image %s. \n\n" name)) <> <>) (switch-to-buffer-other-window "*vampire-deploy*") #+end_src ** Copy Image To Host Destination #+name: deploy-image #+begin_src emacs-lisp :results none (let ((destination (concat dest name))) (insert (format "Copying image %s to %s" name destination)) (newline) (copy-file name destination t) (insert (format "Making symbolic link to point bin/vampire at %s" name destination)) (newline) (make-symbolic-link destination (concat dest "bin/vampire") t)) #+end_src ** Copy CSS files #+name: deploy-assets #+begin_src emacs-lisp :results none (let ((destination (concat dest "static/css/"))) (insert (format "Copying static CSS assets %s..." destination)) (newline) (copy-directory "static/css/" destination nil nil t) (insert "Done.") (newline)) #+end_src ** copy directory notes If NEWNAME is a directory name, copy DIRECTORY as a subdirectory there. However, if called from Lisp with a non-nil optional argument COPY-CONTENTS, copy the contents of DIRECTORY directly into NEWNAME instead.