diff --git a/cli/cli.lisp b/cli/cli.lisp index ab41e7f..495581f 100644 --- a/cli/cli.lisp +++ b/cli/cli.lisp @@ -43,6 +43,8 @@ (sitemap) (static-pages) ; (versioned) ;; *Remove comment to enable symlinked, timestamped deploys. + ;; default deploy method is rsync + (rsync \"-avz\" \"--delete\" \"--exclude\" \".git/\" \"--exclude\" \".gitignore\" \"--copy-links\") ) :sitenav ((:url \"http://~a.github.com/\" :name \"Home\") (:url \"http://twitter.com/~a\" :name \"Twitter\") diff --git a/docs/plugin-use.md b/docs/plugin-use.md index 735a24a..d653fea 100644 --- a/docs/plugin-use.md +++ b/docs/plugin-use.md @@ -7,6 +7,13 @@ * Available plugins are listed below with usage descriptions and config examples. +## Direct deployment via rsync + +**Description**: This directly sends the contents of the staging dir to the deployed directory. +The former default deployment method. + +**Example**: `(rsync "--exclude" ".git/" "--exclude" ".gitignore" "--copy-links")` + ## Analytics via Google **Description**: Provides traffic analysis through diff --git a/plugins/rsync.lisp b/plugins/rsync.lisp new file mode 100644 index 0000000..7ce605e --- /dev/null +++ b/plugins/rsync.lisp @@ -0,0 +1,19 @@ + +(defpackage :coleslaw-rsync + (:use :cl) + (:import-from :coleslaw #:*config* + #:deploy + #:deploy-dir) + (:export #:enable)) + +(in-package :coleslaw-rsync) + +(defvar *args* nil) + +(defmethod deploy (staging) + (coleslaw::run-program "rsync ~{~A~^ ~} ~A ~A" *args* + (merge-pathnames staging) + (merge-pathnames (deploy-dir *config*)))) + +(defun enable (&rest args) + (setf *args* args)) diff --git a/src/coleslaw.lisp b/src/coleslaw.lisp index d53d2e7..1517c66 100644 --- a/src/coleslaw.lisp +++ b/src/coleslaw.lisp @@ -46,7 +46,8 @@ (defgeneric deploy (staging) (:documentation "Deploy the STAGING build to the directory specified in the config.") (:method (staging) - (run-program "rsync --delete -avz ~a ~a" staging (merge-pathnames (deploy-dir *config*))))) + "By default, do nothing" + (declare))) (defun update-symlink (path target) "Update the symlink at PATH to point to TARGET." diff --git a/src/config.lisp b/src/config.lisp index ac65ca8..9d5a45f 100644 --- a/src/config.lisp +++ b/src/config.lisp @@ -21,7 +21,7 @@ (:default-initargs :feeds nil :license nil - :plugins nil + :plugins '((rsync "-avz" "--delete" "--exclude" ".git/" "--exclude" ".gitignore" "--copy-links")) :sitenav nil :excerpt-sep "" :charset "UTF-8"