vagrant-rsync 0.1.1 → 0.2.0
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.
- checksums.yaml +8 -8
- data/README.md +2 -0
- data/lib/command.rb +55 -3
- data/lib/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NjRjMzc4ODNmMmQ4ZDRiNTk0YWNiNTE3YmYyMjhjYTE1YzVlZGE0OQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NGU5MGE1NjE5NmZlOWViMDI5NzRhZGQxYWEwMjQxMThmZmQ5OTVlZg==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MzJmNDNmZWRkYjBmMjU5ZDM2ZjJhODM4NmNlYTI1YThhYWQ1Yjk4NzA4NmNl
|
10
|
+
MWExNTg5NmVlY2I4MTkzYzkyYzMyMmU3NGM0YWE1OWM5YWYyNTNlMWZmYTlj
|
11
|
+
MGQ0MmMyNDNkNzlmOGViN2Y3YjNhM2M1MjU3ZDQ5ZWI5YTU0ZTg=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YjliZmQwOGU2M2Y1YWRiYzE0Y2Q2N2U5MWExZWFjZTE2OTZjNGUxNDBlM2Vl
|
14
|
+
NmZmNzcxNWVjZjY5OTdiNDY4YTE0NGEwYWVmMTJhYTI5ZGVmMDAxZWYxNzRk
|
15
|
+
N2NhOTA5YjJmNjUzOGJkNDcyMzBiYTU1NGY0ZjI0M2FjOTc0ZmU=
|
data/README.md
CHANGED
@@ -8,6 +8,7 @@ Based off of [Vagrant-Sync](https://github.com/calavera/vagrant-sync)
|
|
8
8
|
## Features
|
9
9
|
* automatically detects all shared folders, on all named machines
|
10
10
|
* syncs em up.
|
11
|
+
* install rsync automatically on a variety of linux based guests. (turn off with --no-install)
|
11
12
|
|
12
13
|
## Usage
|
13
14
|
|
@@ -24,6 +25,7 @@ Note: This plugin is meant for interacting with guests that are not running on y
|
|
24
25
|
I have no idea what will happen if you are sharing with NFS or virtualbox shared folders.
|
25
26
|
It might destroy all your data and turn your co-workers into angry badgers. Be forewarned.
|
26
27
|
|
28
|
+
If you'd like me to add new guests to the rsync auto-install, send me the command to install rsync, and I'll make it happen.
|
27
29
|
|
28
30
|
Can be mixed in with Guard or kicker or what-have-you to rsync whenever the host filesystem changes.
|
29
31
|
|
data/lib/command.rb
CHANGED
@@ -1,27 +1,76 @@
|
|
1
1
|
require 'optparse'
|
2
|
+
require 'pp'
|
2
3
|
module VagrantPlugins
|
3
4
|
module CommandRSYNC
|
4
5
|
class Command < Vagrant.plugin("2", :command)
|
6
|
+
|
7
|
+
class RsyncNotAvailableError < Vagrant::Errors::VagrantError
|
8
|
+
error_namespace("vagrant.plugin.vagrant-rsync")
|
9
|
+
end
|
10
|
+
|
11
|
+
def verify_rsync(vm)
|
12
|
+
begin
|
13
|
+
vm.communicate.execute("rsync --version")
|
14
|
+
rescue Exception => e
|
15
|
+
@env.ui.say(:info, "rsync not found, installing rsync now. disable this with --no-install")
|
16
|
+
# should notify people we are installing rsync here.
|
17
|
+
case vm.guest.name
|
18
|
+
when :debian, :ubuntu
|
19
|
+
vm.communicate.sudo("apt-get update")
|
20
|
+
vm.communicate.sudo("apt-get install rsync")
|
21
|
+
when :fedora, :centos, :redhat
|
22
|
+
vm.communicate.sudo("yum install rsync")
|
23
|
+
when :suse
|
24
|
+
vm.communicate.sudo("yast2 -i rsync")
|
25
|
+
when :gentoo
|
26
|
+
vm.communicate.sudo("emerge rsync")
|
27
|
+
when :arch
|
28
|
+
vm.communicate.sudo("pacman -s rsync")
|
29
|
+
# when :solaris
|
30
|
+
# vm.communicate.sudo("pkg install rsync")
|
31
|
+
# when :freebsd
|
32
|
+
# vm.communicate.sudo("pkg_add -r rsync")
|
33
|
+
else
|
34
|
+
raise RsyncNotAvailableError
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
5
39
|
def execute
|
6
|
-
options = {
|
40
|
+
options = { :install_rsync => true,
|
41
|
+
:verbose => false}
|
7
42
|
|
8
43
|
opts = OptionParser.new do |opt|
|
9
44
|
opt.banner = "Usage: vagrant rsync [vm-name]"
|
10
|
-
opt.on(
|
45
|
+
opt.on("-n","--no-install", "do not attempt to install rysnc if not found") do |v|
|
46
|
+
options[:install_rsync] = false
|
47
|
+
end
|
48
|
+
opt.on('-v','--verbose',"Run verbosely") do |v|
|
11
49
|
options[:verbose] = true
|
12
50
|
end
|
51
|
+
opts.on( '-h', '--help', 'Display this screen' ) do
|
52
|
+
puts opts
|
53
|
+
exit
|
54
|
+
end
|
13
55
|
end
|
14
56
|
|
15
57
|
argv = parse_options(opts)
|
16
58
|
unless argv
|
17
59
|
argv=["default"]
|
18
60
|
end
|
61
|
+
|
19
62
|
with_target_vms(argv) do |vm|
|
20
63
|
raise Vagrant::Errors::VMNotCreatedError if vm.state.id == :not_created
|
21
64
|
raise Vagrant::Errors::VMInaccessible if vm.state.id == :inaccessible
|
22
65
|
end
|
23
66
|
|
24
67
|
with_target_vms(argv) do |vm|
|
68
|
+
|
69
|
+
if options[:install_rsync]
|
70
|
+
@env.ui.say(:info,"checking if rsync exists on host")
|
71
|
+
verify_rsync(vm)
|
72
|
+
end
|
73
|
+
|
25
74
|
vm.config.vm.synced_folders.each do |id, data|
|
26
75
|
next if data[:nfs]
|
27
76
|
hostpath = File.expand_path(data[:hostpath], vm.env.root_path)
|
@@ -41,10 +90,13 @@ module VagrantPlugins
|
|
41
90
|
|
42
91
|
|
43
92
|
if options[:verbose]
|
44
|
-
|
93
|
+
## should the vagrant way of outputting text
|
94
|
+
@env.ui.say(:info,command.join(" "))
|
45
95
|
end
|
46
96
|
|
47
97
|
r = Vagrant::Util::Subprocess.execute(*command)
|
98
|
+
@env.ui.say(:info, "done") if options[:verbose]
|
99
|
+
pp r.inspect
|
48
100
|
if r.exit_code != 0
|
49
101
|
raise Errors::RsyncError,
|
50
102
|
:guestpath => guestpath,
|
data/lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-rsync
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bill Cromie
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-06-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|