atom-sync package
atom-sync is an Atom package to sync files bidirectionally between remote host and local over ssh+rsync. Inspired by Sublime SFTP.
This package is currently in early development and has only been tested on Mac. Please kindly try it out and provide feedback.
Feature
- Sync over ssh+rsync — still secure, but much faster.
- Multi-Folder Projects with different sync config files supported
- Triggers conditionally run commands after successful uploading
Prerequisite
- Ensure you have
ssh
andrsync
installed.
Quick Start
- Open a project folder to sync in Atom.
- Right click on the project folder and select
Sync
->Edit Remote Config
. - Edit and save the config file.
- Right click on the project folder and select
Sync
->Sync Remote -> Local
. - Watch water flows.
Notice
- Password based login is not supported—at least yet, you have to assign your key file and better host name in .ssh/config in advanced. Try to Simplify Your Life With an SSH Config File.
Config File (and Tutorial)
.sync-config.cson
remote:
host: "HOSTNAME", # server name or ip or ssh host abbr in .ssh/config
user: "USERNAME", # ssh username
path: "REMOTE_DIR" # e.g. /home/someone/somewhere
behaviour:
uploadOnSave: true # Upload every time you save a file
syncDownOnOpen: true # Download every time you open a file
forgetConsole: false # Never show console panel even while syncing
autoHideConsole: true # Hide console automatically after 1.5s
alwaysSyncAll: false # Sync all files and folders under the project \
# instead of syncing single file or folder
option:
deleteFiles: true # Delete files during syncing
autoHideDelay: 1500 # Time delay to hide console
exclude: [ # Excluding patterns
'.sync-config.cson'
'.git'
'node_modules'
'tmp'
'vendor'
]
flags: 'avzpur' # Advanced option: rsync flags
shell: 'ssh'
trigger: # Triggers fire after uploading file successfully
# which STARTS with following patterns
"*": "uptime" # Wildcard trigger for any file uploaded
"resources/scripts/coffee": [ # Any file under %PROJECT_ROOT%/resources/scripts/coffee \
# being uploaded will fire this trigger
"echo Compile coffeescript to js ..."
"coffee -b --output js/ --compile coffee/"
"ls public/js/|xargs -I@ echo \\t@" # You can also pipe commands but don't \
# forget to escape special characters
]
"resources/scripts/sass": [
"echo Compile sass to css ..."
"sass --update resources/scripts/sass:public/css"
]
Introduction to Trigger
Config
trigger:
"*": [
"echo \'<span class=warning>Every time you\\'ll see me</span>\'"
]
"coffee": [
"echo Compile coffeescript to js ..."
"mkdir -p js"
"coffee -b --output js/ --compile coffee/"
"ls js/|xargs -I@ echo \\t@"
]
"sass/style.sass": [
"echo Compile sass to css ..."
"mkdir -p css"
"sass --update sass:css"
]
Result
Keybindings
ctrl
+alt
+l
(Windows/Linux)cmd
+alt
+l
(Mac) Toggle log window
Known Problems
- You have to
Sync Local -> Remote
manually after renaming and deleting files.
Roadmap
- Listen to events
- Create folders
- Rename files/folders
- What about deleting?