[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/ssh-deploy 1e58dc3 040/173: SSH deployment now works vi
From: |
Stefan Monnier |
Subject: |
[elpa] externals/ssh-deploy 1e58dc3 040/173: SSH deployment now works via TRAMP instead of SCP |
Date: |
Sat, 20 Oct 2018 10:36:27 -0400 (EDT) |
branch: externals/ssh-deploy
commit 1e58dc3496a6c74e93e7f754d7e506a72d009789
Author: Christian Johansson <address@hidden>
Commit: Christian Johansson <address@hidden>
SSH deployment now works via TRAMP instead of SCP
---
ssh-deploy.el | 111 +++++++++++++++++++++++++++++-----------------------------
1 file changed, 55 insertions(+), 56 deletions(-)
diff --git a/ssh-deploy.el b/ssh-deploy.el
index b491934..2e48cfe 100644
--- a/ssh-deploy.el
+++ b/ssh-deploy.el
@@ -4,7 +4,7 @@
;; Maintainer: Christian Johansson <github.com/cjohansson>
;; Created: 5 Jul 2016
;; Modified: 14 Nov 2016
-;; Version: 1.39
+;; Version: 1.40
;; Keywords: tools, convenience
;; URL: https://github.com/cjohansson/emacs-ssh-deploy
@@ -29,10 +29,9 @@
;;; Commentary:
-;; `ssh-deploy' enables automatic deploys on explicit-save, manual
-;; uploads, downloads, differences, remote terminals and remote directory
browsing
-;; via key-pair password-less authorized SSH connections and password-based
FTP connections.
-;; To do this it uses `tramp',`tramp-term', `scp', `curl', `ediff' and `ztree'.
+;; `ssh-deploy' enables automatic deploys on explicit-save, manual uploads,
+;; downloads, differences, remote terminals and remote directory browsing via
TRAMP.
+;; To do this it uses `tramp', `tramp-term', `ediff' and `ztree'.
;; By setting the variables (globally or per directory):
;; `ssh-deploy-root-local',`ssh-deploy-root-remote',
;; `ssh-deploy-on-explicit-save' you can setup a directory for
@@ -58,7 +57,7 @@
;; An example for FTP, /Users/Chris/Web/Site2/.dir.locals.el:
;; ((nil . (
;; (ssh-deploy-root-local . "/Users/Chris/Web/Site2/")
-;; (ssh-deploy-root-remote . "/ftp:myuser:address@hidden:/site2/")
+;; (ssh-deploy-root-remote . "/ftp:address@hidden:/site2/")
;; (ssh-deploy-on-explicit-save . nil)
;; )))
;;
@@ -181,8 +180,8 @@
"Run COMMAND in asynchronous mode."
(message "Shell command: '%s'" command)
(let ((proc (start-process-shell-command "process" nil command)))
- (set-process-filter proc (lambda (proc output)(message "%s"
(replace-regexp-in-string "\^M" "\n" output))))
- (set-process-sentinel proc (lambda (proc output)
+ (set-process-filter proc (lambda(proc output)(message "%s"
(replace-regexp-in-string "\^M" "\n" output))))
+ (set-process-sentinel proc (lambda(proc output)
(if (string= (symbol-name (process-status
proc)) "exit")
(if (= (process-exit-status proc) 0)
(message "Successfully ran shell
command.")
@@ -190,61 +189,61 @@
(defun ssh-deploy--download (remote local local-root)
"Download REMOTE to LOCAL with the LOCAL-ROOT via ssh or ftp."
- (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-file-via-ssh remote local)
- (ssh-deploy--download-file-via-ftp remote local))
- (if (string= (alist-get 'protocol remote) "ssh")
- (ssh-deploy--download-directory-via-ssh 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: Left for further research, is it possible to make this asynchrous?
+ (ssh-deploy--download-via-tramp remote local local-root))
+
+;; TODO When process asks for password we should supply it to the process
automatically
(defun ssh-deploy--upload-via-tramp (local remote local-root)
"Upload LOCAL path to REMOTE and LOCAL-ROOT via tramp."
- (let ((remote-path (concat "/" (alist-get 'protocol remote) ":"
(shell-quote-argument (alist-get 'username remote)) "@" (shell-quote-argument
(alist-get 'server remote)) ":" (shell-quote-argument (alist-get 'path
remote))))
- (file-or-directory (file-regular-p local)))
- (if file-or-directory
- (progn
- (message "Uploading file '%s' to '%s'.." local remote-path)
- (copy-file local remote-path t t))
- (progn
- (message "Uploading directory '%s' to '%s' via TRAMP.." local
remote-path)
- (copy-directory local remote-path t t)))))
-
-;; TODO: Left for further research, is it possible to make this asynchrous?
+ (if (fboundp 'async-start)
+ (let ((remote-path (concat "/" (alist-get 'protocol remote) ":"
(shell-quote-argument (alist-get 'username remote)) "@" (shell-quote-argument
(alist-get 'server remote)) ":" (shell-quote-argument (alist-get 'path
remote))))
+ (file-or-directory (file-regular-p local)))
+ (if file-or-directory
+ (progn
+ (message "Uploading file '%s' to '%s' via TRAMP.." local
remote-path)
+ (async-start
+ `(lambda()
+ (copy-file ,local ,remote-path t t)
+ ,local)
+ (lambda(return-path)
+ (message "Upload '%s' finished" return-path))))
+ (progn
+ (message "Uploading directory '%s' to '%s' via TRAMP.." local
remote-path)
+ (async-start
+ `(lambda()
+ (copy-directory ,local ,(file-name-directory
(directory-file-name remote-path)) t t)
+ ,local)
+ (lambda(return-path)
+ (message "Upload '%s' finished" return-path))))))
+ (message "async.el is not installed")))
+
+;; TODO When process asks for password we should supply it to the process
automatically
(defun ssh-deploy--download-via-tramp (remote local local-root)
"Download REMOTE path to LOCAL and LOCAL-ROOT via tramp."
- (let ((remote-path (concat "/" (alist-get 'protocol remote) ":"
(shell-quote-argument (alist-get 'username remote)) "@" (shell-quote-argument
(alist-get 'server remote)) ":" (shell-quote-argument (alist-get 'path
remote))))
- (file-or-directory (file-regular-p local)))
- (if file-or-directory
- (progn
- (message "Downloading file '%s' to '%s' via TRAMP.." remote-path
local)
- (copy-file remote-path local t t))
- (progn
- (message "Download directory '%s' to '%s' via TRAMP.." remote-path
local)
- (copy-directory remote-path local t t)))))
+ (if (fboundp 'async-start)
+ (let ((remote-path (concat "/" (alist-get 'protocol remote) ":"
(shell-quote-argument (alist-get 'username remote)) "@" (shell-quote-argument
(alist-get 'server remote)) ":" (shell-quote-argument (alist-get 'path
remote))))
+ (file-or-directory (file-regular-p local)))
+ (if file-or-directory
+ (progn
+ (message "Downloading file '%s' to '%s' via TRAMP.." remote-path
local)
+ (async-start
+ `(lambda()
+ (copy-file ,remote-path ,local t t)
+ ,local)
+ (lambda(return-path)
+ (message "Download '%s' finished" return-path))))
+ (progn
+ (message "Downloading directory '%s' to '%s' via TRAMP.."
remote-path local)
+ (async-start
+ `(lambda()
+ (copy-directory ,remote-path ,(file-name-directory
(directory-file-name local)) t t)
+ ,local)
+ (lambda(return-path)
+ (message "Download '%s' finished" return-path))))))
+ (message "async.el is not installed")))
(defun ssh-deploy--upload (local remote local-root)
"Upload LOCAL to REMOTE and LOCAL-ROOT via ssh or ftp."
- (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-file-via-ssh local remote)
- (ssh-deploy--upload-file-via-ftp local remote))
- (if (string= (alist-get 'protocol remote) "ssh")
- (ssh-deploy--upload-directory-via-ssh 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.")))
+ (ssh-deploy--upload-via-tramp local remote local-root))
(defun ssh-deploy--upload-file-via-ssh (local remote)
"Upload file LOCAL to REMOTE via ssh."
- [elpa] externals/ssh-deploy ebdbb7e 014/173: Add TRAMP protocol for difference queries, (continued)
- [elpa] externals/ssh-deploy ebdbb7e 014/173: Add TRAMP protocol for difference queries, Stefan Monnier, 2018/10/20
- [elpa] externals/ssh-deploy fa368fb 020/173: Made relative path generation as stand-alone function and now checks if ztree and tramp-term is installed before trying to call them., Stefan Monnier, 2018/10/20
- [elpa] externals/ssh-deploy f4ad77d 026/173: Now works asynchrously, moved (revert-buffer) to successful downloads instead of to key-binding., Stefan Monnier, 2018/10/20
- [elpa] externals/ssh-deploy 05ed4c8 009/173: Made changes to comply with MELPA guidelines., Stefan Monnier, 2018/10/20
- [elpa] externals/ssh-deploy 89fb82a 038/173: Fixed bug when downloading via SSH to a local path containing whitespaces, Stefan Monnier, 2018/10/20
- [elpa] externals/ssh-deploy 965c68f 028/173: Centralized asynchronous shell commands., Stefan Monnier, 2018/10/20
- [elpa] externals/ssh-deploy e6e1ad8 039/173: Updated version and modified date, Stefan Monnier, 2018/10/20
- [elpa] externals/ssh-deploy 2257f95 029/173: Fixed upload and downloads of root directories where local root directory name differs from remote root directory name., Stefan Monnier, 2018/10/20
- [elpa] externals/ssh-deploy 560ff1d 037/173: Added TRAMP functions and improved messages., Stefan Monnier, 2018/10/20
- [elpa] externals/ssh-deploy a86091c 032/173: Broken down diff function into multiple functions to easily add new protocols., Stefan Monnier, 2018/10/20
- [elpa] externals/ssh-deploy 1e58dc3 040/173: SSH deployment now works via TRAMP instead of SCP,
Stefan Monnier <=
- [elpa] externals/ssh-deploy 4a2f947 053/173: Fixed bug where missing remote file used wrong logic, Stefan Monnier, 2018/10/20
- [elpa] externals/ssh-deploy 61a16be 047/173: Merged remote, Stefan Monnier, 2018/10/20
- [elpa] externals/ssh-deploy d599659 015/173: Added support for opening remote terminals, uploads/downloads/differences of directories, browsing remote hosts and fixed a bug where paths with special chars were not handled correctly., Stefan Monnier, 2018/10/20
- [elpa] externals/ssh-deploy 1af0208 045/173: Cleaned up code structure and isolated functions, Stefan Monnier, 2018/10/20
- [elpa] externals/ssh-deploy 740c27d 054/173: Fixed message when no base revision exists and remote file equals local file, Stefan Monnier, 2018/10/20
- [elpa] externals/ssh-deploy ac7aff8 052/173: Asynchronous detection of remote changes doesn't use any synchronous action, Stefan Monnier, 2018/10/20
- [elpa] externals/ssh-deploy d4953c7 049/173: Fixed upload/download of root directory with different names, Stefan Monnier, 2018/10/20
- [elpa] externals/ssh-deploy 2d2c380 033/173: Implemented FTP via cURL but haven't tested it yet., Stefan Monnier, 2018/10/20
- [elpa] externals/ssh-deploy f36ffce 059/173: Added MELPA Stable link, Stefan Monnier, 2018/10/20
- [elpa] externals/ssh-deploy 29cf0b2 061/173: Added force handler in documentation, Stefan Monnier, 2018/10/20