vagrant-unison 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,15 +1,33 @@
1
1
  require "log4r"
2
2
  require "vagrant"
3
+ require 'listen'
3
4
 
4
5
  module VagrantPlugins
5
6
  module Unison
6
7
  class Command < Vagrant.plugin("2", :command)
8
+
7
9
  def execute
8
-
10
+
9
11
  with_target_vms do |machine|
12
+ hostpath, guestpath = init_paths machine
13
+
14
+ trigger_unison_sync machine
15
+
16
+ @env.ui.info "Watching #{hostpath} for changes..."
17
+
18
+ Listen.to(hostpath) do |modified, added, removed|
19
+ @env.ui.info "Detected modifications to #{modified.inspect}" unless modified.empty?
20
+ @env.ui.info "Detected new files #{added.inspect}" unless added.empty?
21
+ @env.ui.info "Detected deleted files #{removed.inspect}" unless removed.empty?
22
+
23
+ trigger_unison_sync machine
24
+ end
25
+ end
10
26
 
11
- ssh_info = machine.ssh_info
27
+ 0 #all is well
28
+ end
12
29
 
30
+ def init_paths(machine)
13
31
  hostpath = File.expand_path(machine.config.sync.host_folder, @env.root_path)
14
32
  guestpath = machine.config.sync.guest_folder
15
33
 
@@ -17,33 +35,37 @@ module VagrantPlugins
17
35
  # avoid creating an additional directory with rsync
18
36
  hostpath = "#{hostpath}/" if hostpath !~ /\/$/
19
37
 
20
- @env.ui.info "Unisoning {host}::#{hostpath} --> {guest VM}::#{guestpath}"
21
-
22
- # Create the guest path
23
- #machine.communicate.sudo("mkdir -p '#{guestpath}'")
24
- #machine.communicate.sudo("chown #{ssh_info[:username]} '#{guestpath}'")
25
-
26
- # Unison over to the guest path using the SSH info
27
- command = [
28
- "unison", "-batch",
29
- "-ignore=Name {git*,.vagrant/,*.DS_Store}",
30
- "-sshargs", "-p #{ssh_info[:port]} -o StrictHostKeyChecking=no -i #{ssh_info[:private_key_path]}",
31
- hostpath,
32
- "ssh://#{ssh_info[:username]}@#{ssh_info[:host]}/#{guestpath}"
33
- ]
34
-
35
- r = Vagrant::Util::Subprocess.execute(*command)
36
- if r.exit_code != 0
37
- raise Vagrant::Errors::UnisonError,
38
- :command => command.inspect,
39
- :guestpath => guestpath,
40
- :hostpath => hostpath,
41
- :stderr => r.stderr
42
- end
38
+ [hostpath, guestpath]
39
+ end
43
40
 
44
- end
41
+ def trigger_unison_sync(machine)
42
+ hostpath, guestpath = init_paths machine
43
+
44
+ @env.ui.info "Unisoning changes from {host}::#{hostpath} --> {guest VM}::#{guestpath}"
45
+
46
+ ssh_info = machine.ssh_info
45
47
 
46
- 0
48
+ # Create the guest path
49
+ machine.communicate.sudo("mkdir -p '#{guestpath}'")
50
+ machine.communicate.sudo("chown #{ssh_info[:username]} '#{guestpath}'")
51
+
52
+ # Unison over to the guest path using the SSH info
53
+ command = [
54
+ "unison", "-batch",
55
+ "-ignore=Name {git*,.vagrant/,*.DS_Store}",
56
+ "-sshargs", "-p #{ssh_info[:port]} -o StrictHostKeyChecking=no -i #{ssh_info[:private_key_path]}",
57
+ hostpath,
58
+ "ssh://#{ssh_info[:username]}@#{ssh_info[:host]}/#{guestpath}"
59
+ ]
60
+
61
+ r = Vagrant::Util::Subprocess.execute(*command)
62
+ if r.exit_code != 0
63
+ raise Vagrant::Errors::UnisonError,
64
+ :command => command.inspect,
65
+ :guestpath => guestpath,
66
+ :hostpath => hostpath,
67
+ :stderr => r.stderr
68
+ end
47
69
  end
48
70
 
49
71
  end
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module Unison
3
- VERSION = "0.0.4"
3
+ VERSION = "0.0.5"
4
4
  end
5
5
  end
@@ -13,7 +13,8 @@ Gem::Specification.new do |s|
13
13
 
14
14
  s.required_rubygems_version = ">= 1.3.6"
15
15
 
16
- s.add_runtime_dependency "guard", "~> 1.6.2"
16
+ s.add_runtime_dependency "listen", "~> 0.7.3"
17
+ s.add_runtime_dependency "rb-fsevent", "~> 0.9"
17
18
 
18
19
  s.add_development_dependency "rake"
19
20
  s.add_development_dependency "rspec-core", "~> 2.12.2"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-unison
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -12,13 +12,13 @@ cert_chain: []
12
12
  date: 2013-03-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: guard
15
+ name: listen
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: 1.6.2
21
+ version: 0.7.3
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,23 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: 1.6.2
29
+ version: 0.7.3
30
+ - !ruby/object:Gem::Dependency
31
+ name: rb-fsevent
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '0.9'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '0.9'
30
46
  - !ruby/object:Gem::Dependency
31
47
  name: rake
32
48
  requirement: !ruby/object:Gem::Requirement
@@ -126,7 +142,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
126
142
  version: '0'
127
143
  segments:
128
144
  - 0
129
- hash: -4025481939700274276
145
+ hash: -4193190591169953002
130
146
  required_rubygems_version: !ruby/object:Gem::Requirement
131
147
  none: false
132
148
  requirements: