vagrant-vaimo-unison 0.2.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +8 -16
- data/lib/vagrant-vaimo-unison/command.rb +29 -39
- data/lib/vagrant-vaimo-unison/plugin.rb +9 -0
- data/lib/vagrant-vaimo-unison/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a719989697e0e88a4de615042660811d231c216f
|
4
|
+
data.tar.gz: 3b907f1f4483815e27f7969e985689e006c6f3aa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f9f004ed178a759e3847aa46c5d02042c15a951ddf03a1d51d9075e506b66e656f3bf5142971fd4097361cdef80bb1acb70410b2c615a03d82405fcafe474e0e
|
7
|
+
data.tar.gz: 3466c2cf67c6f77e1112567e3f68205bf3fb4ff72930859ab09adfd893d9beab26d35fdee9caec68093e01b95f7d0a8b3ceedd168d9331dd4305544a0758442e
|
data/README.md
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
This is a [Vagrant](http://www.vagrantup.com) 1.7+ plugin that syncs files over SSH from a local folder
|
4
4
|
to your Vagrant VM (local or on AWS). Under the covers it uses [Unison](http://www.cis.upenn.edu/~bcpierce/unison/)
|
5
5
|
|
6
|
-
**NOTE:** This plugin requires Vagrant 1.
|
6
|
+
**NOTE:** This plugin requires Vagrant 1.9+,
|
7
7
|
|
8
8
|
## Features
|
9
9
|
|
@@ -45,11 +45,14 @@ to your Vagrant VM (local or on AWS). Under the covers it uses [Unison](http://
|
|
45
45
|
# File patterns to ignore when syncing. Ensure you don't have spaces between the commas!
|
46
46
|
config.unison.ignore = "Name {.DS_Store,.git,node_modules}" # Default: none
|
47
47
|
|
48
|
+
# File patterns to not ignore when syncing. Ensure you don't have spaces between the commas!
|
49
|
+
config.unison.ignorenot = "Name {.htaccess}" # Default: none
|
50
|
+
|
48
51
|
# SSH connection details for Vagrant to communicate with VM.
|
49
52
|
config.unison.ssh_host = "10.0.0.1" # Default: '127.0.0.1'
|
50
53
|
config.unison.ssh_port = 22 # Default: 2222
|
51
54
|
config.unison.ssh_user = "deploy" # Default: 'vagrant'
|
52
|
-
config.unison.perms = 0 # if you get "properties changed on both sides" error
|
55
|
+
config.unison.perms = 0 # if you get "properties changed on both sides" error
|
53
56
|
|
54
57
|
# `vagrant unison-sync-polling` command will restart unison in VM if memory
|
55
58
|
# usage gets above this threshold (in MB).
|
@@ -60,20 +63,9 @@ to your Vagrant VM (local or on AWS). Under the covers it uses [Unison](http://
|
|
60
63
|
end
|
61
64
|
```
|
62
65
|
|
66
|
+
## Start syncing/watching Folders
|
63
67
|
|
64
|
-
|
65
|
-
|
66
|
-
Run `vagrant unison-sync-once` to run a single, non-interactive sync and then exit.
|
67
|
-
|
68
|
-
Run `vagrant unison-sync-polling` to start in bidirect monitor (repeat) mode - every second unison checks for changes on either side and syncs them.
|
69
|
-
|
70
|
-
## (Legacy) Sync using OSX inotify events
|
71
|
-
|
72
|
-
Run `vagrant unison-sync` to sync then start watching the local_folder for changes, and syncing these to your vagrang VM.
|
73
|
-
|
74
|
-
This uses the `watch` ruby gem and runs a one-off unison sync when it gets change events.
|
75
|
-
|
76
|
-
For some reason, this does not always get all the events immediately which can be frustrating. Since the polling mode (unison repeat mode) is not too resource intensive, I recommend that instead.
|
68
|
+
Run `vagrant unison-sync` to run polling (will sync files from host to guest if changes are made)
|
77
69
|
|
78
70
|
## Sync in interactive mode
|
79
71
|
|
@@ -86,7 +78,7 @@ This is a useful tool when the automatic sync sees a change in a file on both
|
|
86
78
|
sides and skips it.
|
87
79
|
|
88
80
|
## Cleanup unison database
|
89
|
-
Run `vagrant unison-cleanup` to clear the unison metadata from `~/Library/Application Support/Unison
|
81
|
+
Run `vagrant unison-cleanup` to clear the unison metadata from `~/Library/Application Support/Unison/`.
|
90
82
|
|
91
83
|
## Error states
|
92
84
|
|
@@ -9,37 +9,7 @@ require_relative 'unison_sync'
|
|
9
9
|
|
10
10
|
module VagrantPlugins
|
11
11
|
module Unison
|
12
|
-
class
|
13
|
-
include UnisonSync
|
14
|
-
|
15
|
-
def self.synopsis
|
16
|
-
'sync the unison shared folder once'
|
17
|
-
end
|
18
|
-
|
19
|
-
def execute
|
20
|
-
status = nil
|
21
|
-
with_target_vms do |machine|
|
22
|
-
execute_sync_command(machine) do |command|
|
23
|
-
command.batch = true
|
24
|
-
command.terse = true
|
25
|
-
command = command.to_s
|
26
|
-
|
27
|
-
@env.ui.info 'Running unison once'
|
28
|
-
@env.ui.info " #{command}"
|
29
|
-
|
30
|
-
status = system(command)
|
31
|
-
@env.ui.info "**** unison exited. success: #{status} ****"
|
32
|
-
end
|
33
|
-
end
|
34
|
-
if status
|
35
|
-
return 0
|
36
|
-
end
|
37
|
-
|
38
|
-
1
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
class CommandPolling < Vagrant.plugin("2", :command)
|
12
|
+
class CommandSync < Vagrant.plugin("2", :command)
|
43
13
|
include UnisonSync
|
44
14
|
attr_accessor :bg_thread
|
45
15
|
|
@@ -53,6 +23,7 @@ module VagrantPlugins
|
|
53
23
|
@bg_thread = watch_vm_for_memory_leak(machine)
|
54
24
|
execute_sync_command(machine) do |command|
|
55
25
|
command.repeat = true
|
26
|
+
command.batch = true
|
56
27
|
command.terse = true
|
57
28
|
command = command.to_s
|
58
29
|
|
@@ -104,7 +75,7 @@ module VagrantPlugins
|
|
104
75
|
next
|
105
76
|
end
|
106
77
|
pid, mem_pct_unison = _unison_proc_returnval.strip.split(' ')
|
107
|
-
mem_unison = (total_mem.to_f * mem_pct_unison.to_f/100).round(1)
|
78
|
+
mem_unison = (total_mem.to_f * mem_pct_unison.to_f / 100).round(1)
|
108
79
|
# Debugging: uncomment to log every loop tick
|
109
80
|
# puts "Unison running as #{pid} using #{mem_unison} mb"
|
110
81
|
if mem_unison > mem_cap_mb
|
@@ -116,23 +87,42 @@ module VagrantPlugins
|
|
116
87
|
end
|
117
88
|
end
|
118
89
|
|
90
|
+
class CommandOnce < Vagrant.plugin('2', :command)
|
91
|
+
include UnisonSync
|
92
|
+
|
93
|
+
def self.synopsis
|
94
|
+
'sync the unison shared folder once'
|
95
|
+
end
|
96
|
+
|
97
|
+
def execute
|
98
|
+
@env.ui.info 'The command is deprecated, use vagrant unison-sync'
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
class CommandPolling < Vagrant.plugin("2", :command)
|
103
|
+
include UnisonSync
|
104
|
+
attr_accessor :bg_thread
|
105
|
+
|
106
|
+
def self.synopsis
|
107
|
+
'sync the unison shared folder forever, by polling for changes'
|
108
|
+
end
|
109
|
+
|
110
|
+
def execute
|
111
|
+
@env.ui.info 'The command is deprecated, use vagrant unison-sync'
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
119
115
|
class CommandCleanup < Vagrant.plugin('2', :command)
|
120
116
|
def self.synopsis
|
121
|
-
'
|
117
|
+
'Remove archives and configuration from host and guest. Keeps files in guest (need to remove manually if needed)'
|
122
118
|
end
|
123
119
|
|
124
120
|
def execute
|
125
121
|
with_target_vms do |machine|
|
126
|
-
guest_path = UnisonPaths.new(@env, machine).guest
|
127
|
-
|
128
122
|
command = "rm -rf ~/Library/'Application Support'/Unison/*"
|
129
123
|
@env.ui.info "Running #{command} on host"
|
130
124
|
system(command)
|
131
125
|
|
132
|
-
command = "rm -rf #{guest_path}/* #{guest_path}/..?* #{guest_path}/.[!.]*"
|
133
|
-
@env.ui.info "Running #{command} on guest VM (delete all files from directory including hidden ones)"
|
134
|
-
machine.communicate.sudo(command)
|
135
|
-
|
136
126
|
command = 'rm -rf ~/.unison'
|
137
127
|
@env.ui.info "Running #{command} on guest VM"
|
138
128
|
machine.communicate.execute(command)
|
@@ -24,6 +24,15 @@ module VagrantPlugins
|
|
24
24
|
Config
|
25
25
|
end
|
26
26
|
|
27
|
+
command 'unison-sync' do
|
28
|
+
setup_logging
|
29
|
+
setup_i18n
|
30
|
+
|
31
|
+
#Return the command
|
32
|
+
require_relative 'command'
|
33
|
+
CommandSync
|
34
|
+
end
|
35
|
+
|
27
36
|
command 'unison-sync-once' do
|
28
37
|
setup_logging
|
29
38
|
setup_i18n
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-vaimo-unison
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Laing
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2018-01-05 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rake
|