#+TITLE:   tools/upload
#+DATE:    Feb 19, 2020
#+SINCE:   2.0.9
#+STARTUP: inlineimages nofold

* Table of Contents :TOC_3:noexport:
- [[#description][Description]]
  - [[#maintainers][Maintainers]]
  - [[#module-flags][Module Flags]]
  - [[#plugins][Plugins]]
- [[#prerequisites][Prerequisites]]
- [[#features][Features]]
- [[#configuration][Configuration]]
- [[#troubleshooting][Troubleshooting]]
  - [[#root-local-and-root-remote-must-match][~root-local~ and ~root-remote~ must match]]

* Description
Uses ~ssh-deploy~ to map a local folder to a remote one.

From the [[https://github.com/cjohansson/emacs-ssh-deploy/blob/master/README.md][ssh-deploy README]]:

#+BEGIN_QUOTE
The ssh-deploy plug-in for Emacs makes it possible to effortlessly deploy local files and directories to remote hosts via Tramp (including but not limited to SSH, SFTP, FTP). It tries to provide functions that can be easily used by custom scripts.

The idea for this plug-in was to mimic the behavior of PhpStorm deployment functionality.
#+END_QUOTE

** Maintainers
This module has no dedicated maintainers.

** Module Flags
This module provides no flags.

** Plugins
+ [[https://github.com/cjohansson/emacs-ssh-deploy][ssh-deploy]]

* Prerequisites
This module has no prerequisites.

* Features
Uses ~ssh-deploy~ to map a local folder to a remote one. Set
~ssh-deploy-root-remote~ and ~ssh-deploy-root-local~ in a .dir-locals.el file
to establish this mapping.

Example:
#+BEGIN_SRC emacs-lisp
((nil . ((ssh-deploy-root-local . "/local/path/to/project")
         (ssh-deploy-root-remote . "/ssh:user@server:/remote/project/")
         (ssh-deploy-on-explicit-save . t))))
#+END_SRC

Note: ~ssh-deploy-root-local~ is optional, and will resort to
~doom-project-root~ if unspecified.

* TODO Configuration
Check out [[https://github.com/cjohansson/emacs-ssh-deploy#deployment-configuration-examples][Deployment configuration examples]] for some ideas of what's possible.

* Troubleshooting
** ~root-local~ and ~root-remote~ must match
The final directory names much match
#+BEGIN_SRC emacs-lisp
((nil . ((ssh-deploy-root-local . "/local/path/to/example-project")
         (ssh-deploy-root-remote . "/ssh:user@server:/remote/example-project/")
#+END_SRC
