Class: Vagrant::Unificar::Command

Inherits:
Object
  • Object
show all
Defined in:
lib/vagrant-unificar/command.rb

Instance Method Summary collapse

Instance Method Details

#executeObject



6
7
8
9
10
11
12
# File 'lib/vagrant-unificar/command.rb', line 6

def execute
  with_target_vms do |machine|
    init(machine)
  end

  0
end

#init(machine) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/vagrant-unificar/command.rb', line 15

def init(machine)

  usuario = self.usuario
  host_ip = machine.config.unificar.host_ip == nil ? "10.0.2.2": machine.config.unificar.host_ip
  local_dir = machine.config.unificar.local_dir == "." ? File.realpath("."): machine.config.unificar.local_dir
  remote_mountpoint = machine.config.unificar.remote_mountpoint
  debug = machine.config.unificar.debug

  if usuario.nil? || local_dir.nil? || remote_mountpoint.nil?
    machine.ui.error("Alguno de los valores necesarios en el archivo Vagrantfile no fueron cargados" , {:prefix => false})
    machine.ui.error("Ejemplo de configuracion valida: " , {:prefix => false})
    machine.ui.info("config.unificar.local_dir = \".\"", {:prefix => false})
    machine.ui.info("config.unificar.remote_mountpoint = \"/vagrant\"", {:prefix => false})

    #TODO: Hacer mejor devolucion de error
    return 1
  end

  password = machine.ui.ask("#{usuario}@#{host_ip} (no se vera el password al ser tecleado): ", {:prefix => false, :echo => false})

  cmd = "echo \"#{password}\" | sshfs -o allow_other -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o password_stdin #{usuario}@#{host_ip}:#{local_dir} #{remote_mountpoint}"


  if not debug.nil? and debug == true
     machine.ui.info(cmd, {:prefix => false})
  end

  ret = machine.communicate.execute(cmd, {:error_check => false})
  if ret == 0
    machine.ui.info("#{local_dir} -> #{remote_mountpoint} Montado correctamente", {:prefix => false})
  else
    machine.ui.error("#{local_dir} -> #{remote_mountpoint} Imposible montar" , {:prefix => false})
    machine.ui.info("Posibles problemas:", {:prefix => false})
    machine.ui.info("\t-> Password esta mal escrito", {:prefix => false})
    machine.ui.info("\t-> SSHFS no está instalado en la fisica o en la virtual", {:prefix => false})
    machine.ui.info("\t-> Se encuentra ya montado", {:prefix => false})
    machine.ui.info("\t-> Mounpoint no esta vacio", {:prefix => false})
    machine.ui.info("\t-> Mounpoint no tiene los permisos correctos", {:prefix => false})
    machine.ui.info("\t-> Mounpoint o el directorio local no existen", {:prefix => false})
  end


end

#usuarioObject



60
61
62
63
# File 'lib/vagrant-unificar/command.rb', line 60

def usuario
  #TODO: Hacer version para Windows
  `whoami`.strip
end