Class: VagrantPlugins::Rsync::Cap::EnsureRsync

Inherits:
Object
  • Object
show all
Defined in:
lib/vagrant-rsync/cap/ensure_rsync.rb

Class Method Summary collapse

Class Method Details

.ensure_rsync(machine, env) ⇒ Object



8
9
10
11
12
13
14
15
16
17
# File 'lib/vagrant-rsync/cap/ensure_rsync.rb', line 8

def self.ensure_rsync(machine, env)
  return unless machine.communicate.ready?

  if rsync_installed?(machine)
    env.ui.info I18n.t('vagrant_rsync.rsync_installed')
  else
    env.ui.info I18n.t('vagrant_rsync.installing_rsync')
    install_rsync!(machine)
  end
end

.install_rsync!(machine) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/vagrant-rsync/cap/ensure_rsync.rb', line 23

def self.install_rsync!(machine)
  machine.communicate.tap do |comm|
    case machine.guest.name
    when :debian, :ubuntu
      comm.sudo "apt-get update"
      comm.sudo "apt-get install rsync -y"
    when :fedora, :centos, :redhat
      comm.sudo "yum install rsync -y"
    when :suse
      comm.sudo "yast2 -i rsync"
    when :gentoo
      comm.sudo "emerge rsync"
    when :arch
      comm.sudo "pacman -s rsync"
    else
      raise Errors::RsyncNotAvailableError, guest: machine.guest.name
    end
  end
end

.rsync_installed?(machine) ⇒ Boolean

Returns:

  • (Boolean)


19
20
21
# File 'lib/vagrant-rsync/cap/ensure_rsync.rb', line 19

def self.rsync_installed?(machine)
  machine.communicate.execute("rsync --version") rescue false
end