vagrant-unison 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -15,38 +15,48 @@ module VagrantPlugins
15
15
 
16
16
  ssh_info = machine.ssh_info
17
17
 
18
- # Create the guest path
18
+ # Create empty guestpath
19
+ machine.communicate.sudo("rm -rf '#{guestpath}'")
19
20
  machine.communicate.sudo("mkdir -p '#{guestpath}'")
20
21
  machine.communicate.sudo("chown #{ssh_info[:username]} '#{guestpath}'")
21
22
 
22
- #copy up everything at the beginning
23
23
  Net::SCP.start(ssh_info[:host], ssh_info[:username],
24
24
  { :port => ssh_info[:port],
25
- :keys => [ ssh_info[:private_key_path],
26
- :paranoid => false ] }) do |scp|
27
- scp.upload! hostpath, guestpath, :recursive => true
28
- end
25
+ :keys => [ ssh_info[:private_key_path] ],
26
+ :paranoid => false }) do |scp|
27
+
28
+ #copy up everything at the beginning
29
+ @env.ui.info "Uploading {host}::#{hostpath} to {guest}::#{guestpath}"
30
+ Dir.glob("#{hostpath}**/*", File::FNM_DOTMATCH).each do |file|
31
+ remote_file = file.gsub(hostpath, guestpath)
32
+ if File.stat(file).file?
33
+ scp.upload!( file, remote_file ) do |ch, name, sent, total|
34
+ @env.ui.info "\r#{name}: #{(sent.to_f * 100 / total.to_f).to_i}%"
35
+ end
36
+ end
37
+ if File.directory?(file)
38
+ machine.communicate.sudo("mkdir -p '#{remote_file}'")
39
+ machine.communicate.sudo("chown #{ssh_info[:username]} '#{remote_file}'")
40
+ end
41
+ end
29
42
 
30
- @env.ui.info "Watching #{hostpath} for changes..."
43
+ @env.ui.info "Watching {host}::#{hostpath} for changes..."
31
44
 
32
- Listen.to(hostpath) do |modified, added, removed|
33
- Net::SCP.start(ssh_info[:host], ssh_info[:username],
34
- { :port => ssh_info[:port],
35
- :keys => [ ssh_info[:private_key_path],
36
- :paranoid => false ] }) do |scp|
37
- (modified_list << added_list).flatten.each do |file|
45
+ Listen.to(hostpath) do |modified, added, removed|
46
+ (modified << added).flatten.each do |file|
38
47
  remote_file = file.gsub(hostpath, guestpath)
39
- @env.ui.info "Uploading #{file} to #{remote_file}"
40
- scp.upload! file, remote_file
48
+ @env.ui.info "Uploading {host}::#{file} to {guest VM}::#{remote_file}"
49
+ scp.upload!( file, remote_file ) do |ch, name, sent, total|
50
+ @env.ui.info "\r#{name}: #{(sent.to_f * 100 / total.to_f).to_i}%"
51
+ end
41
52
  end
42
53
  removed.each do |file|
43
54
  remote_file = file.gsub(hostpath, guestpath)
44
- @env.ui.info "Deleting #{remote_file}"
55
+ @env.ui.info "Deleting {guest VM}::#{remote_file}"
45
56
  machine.communicate.sudo("rm #{remote_file}")
46
57
  end
47
- end
48
-
49
- end
58
+ end # Listen
59
+ end # Net::SCP.start
50
60
 
51
61
  end
52
62
 
@@ -57,42 +67,12 @@ module VagrantPlugins
57
67
  hostpath = File.expand_path(machine.config.sync.host_folder, @env.root_path)
58
68
  guestpath = machine.config.sync.guest_folder
59
69
 
60
- # Make sure there is a trailing slash on the host path to
61
- # avoid creating an additional directory with rsync
70
+ # Make sure there is a trailing slash both paths
62
71
  hostpath = "#{hostpath}/" if hostpath !~ /\/$/
72
+ guestpath = "#{guestpath}/" if guestpath !~ /\/$/
63
73
 
64
74
  [hostpath, guestpath]
65
75
  end
66
-
67
- def trigger_unison_sync(machine)
68
- hostpath, guestpath = init_paths machine
69
-
70
- @env.ui.info "Unisoning changes from {host}::#{hostpath} --> {guest VM}::#{guestpath}"
71
-
72
- ssh_info = machine.ssh_info
73
-
74
- # Create the guest path
75
- machine.communicate.sudo("mkdir -p '#{guestpath}'")
76
- machine.communicate.sudo("chown #{ssh_info[:username]} '#{guestpath}'")
77
-
78
- # Unison over to the guest path using the SSH info
79
- command = [
80
- "unison", "-batch",
81
- "-ignore=Name {.git*,.vagrant/,*.DS_Store}",
82
- "-sshargs", "-p #{ssh_info[:port]} -o StrictHostKeyChecking=no -i #{ssh_info[:private_key_path]}",
83
- hostpath,
84
- "ssh://#{ssh_info[:username]}@#{ssh_info[:host]}/#{guestpath}"
85
- ]
86
-
87
- r = Vagrant::Util::Subprocess.execute(*command)
88
- if r.exit_code != 0
89
- raise Vagrant::Errors::UnisonError,
90
- :command => command.inspect,
91
- :guestpath => guestpath,
92
- :hostpath => hostpath,
93
- :stderr => r.stderr
94
- end
95
- end
96
76
 
97
77
  end
98
78
  end
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module Unison
3
- VERSION = "0.0.7"
3
+ VERSION = "0.0.8"
4
4
  end
5
5
  end
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.7
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -158,7 +158,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
158
158
  version: '0'
159
159
  segments:
160
160
  - 0
161
- hash: 1245206040023063051
161
+ hash: 3608198865268606227
162
162
  required_rubygems_version: !ruby/object:Gem::Requirement
163
163
  none: false
164
164
  requirements: