branch: externals/ssh-deploy commit 4e70a4115fd57fae10525e3fd1218a765a6d64d9 Author: Christian Johansson <christ...@cvj.se> Commit: Christian Johansson <christ...@cvj.se>
Now uses TRAMP via async.el for SSH transfers --- ssh-deploy.el | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/ssh-deploy.el b/ssh-deploy.el index 2e48cfe..e5abc49 100644 --- a/ssh-deploy.el +++ b/ssh-deploy.el @@ -3,7 +3,7 @@ ;; Author: Christian Johansson <github.com/cjohansson> ;; Maintainer: Christian Johansson <github.com/cjohansson> ;; Created: 5 Jul 2016 -;; Modified: 14 Nov 2016 +;; Modified: 16 Nov 2016 ;; Version: 1.40 ;; Keywords: tools, convenience ;; URL: https://github.com/cjohansson/emacs-ssh-deploy @@ -186,10 +186,21 @@ (if (= (process-exit-status proc) 0) (message "Successfully ran shell command.") (message "Failed to run shell command."))))))) - (defun ssh-deploy--download (remote local local-root) "Download REMOTE to LOCAL with the LOCAL-ROOT via ssh or ftp." - (ssh-deploy--download-via-tramp remote local local-root)) + (if (or (string= (alist-get 'protocol remote) "ssh") (string= (alist-get 'protocol remote) "ftp")) + (progn + (let ((path (concat (alist-get 'server remote) ":" (alist-get 'path remote)))) + (message "Downloading path '%s' to '%s'.." path local) + (let ((file-or-directory (file-regular-p local))) + (if file-or-directory + (if (string= (alist-get 'protocol remote) "ssh") + (ssh-deploy--download-via-tramp remote local local-root) + (ssh-deploy--download-file-via-ftp remote local)) + (if (string= (alist-get 'protocol remote) "ssh") + (ssh-deploy--download-via-tramp remote local local-root) + (ssh-deploy--download-directory-via-ftp remote local local-root)))))) + (message "Unsupported protocol. Only SSH and FTP are supported at the moment."))) ;; TODO When process asks for password we should supply it to the process automatically (defun ssh-deploy--upload-via-tramp (local remote local-root) @@ -243,7 +254,20 @@ (defun ssh-deploy--upload (local remote local-root) "Upload LOCAL to REMOTE and LOCAL-ROOT via ssh or ftp." - (ssh-deploy--upload-via-tramp local remote local-root)) + (if (or (string= (alist-get 'protocol remote) "ssh") (string= (alist-get 'protocol remote) "ftp")) + (progn + (let ((path (concat (alist-get 'server remote) ":" (alist-get 'path remote)))) + (message "Uploading path '%s' to '%s'.." local path) + (let ((file-or-directory (file-regular-p local))) + (if file-or-directory + (if (string= (alist-get 'protocol remote) "ssh") + (ssh-deploy--upload-via-tramp local remote local-root) + (ssh-deploy--upload-file-via-ftp local remote)) + (if (string= (alist-get 'protocol remote) "ssh") + (ssh-deploy--upload-via-tramp local remote local-root) + (ssh-deploy--upload-directory-via-ftp local remote local-root)))))) + (message "Unsupported protocol. Only SSH and FTP are supported at the moment."))) + (defun ssh-deploy--upload-file-via-ssh (local remote) "Upload file LOCAL to REMOTE via ssh."