Class: VagrantPlugins::VagrantNotifyForwarder::Action::StartClientForwarder

Inherits:
Object
  • Object
show all
Defined in:
lib/vagrant-notify-forwarder/action/start_client_forwarder.rb

Instance Method Summary collapse

Constructor Details

#initialize(app, env) ⇒ StartClientForwarder

Returns a new instance of StartClientForwarder.



7
8
9
# File 'lib/vagrant-notify-forwarder/action/start_client_forwarder.rb', line 7

def initialize(app, env)
  @app = app
end

Instance Method Details

#call(env) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/vagrant-notify-forwarder/action/start_client_forwarder.rb', line 33

def call(env)
  @app.call env

  return if $BOOT_SAVED

  return unless env[:machine].config.notify_forwarder.enable

  path = ensure_binary_downloaded env
  return unless path

  port = env[:machine].config.notify_forwarder.port

  start_command = "nohup /tmp/notify-forwarder receive -p #{port} &"

  if env[:machine].config.notify_forwarder.run_as_root
    start_command = "sudo #{start_command}"
  end

  env[:machine].communicate.upload(path, "/tmp/notify-forwarder")
  env[:ui].output("Starting notify-forwarder ...")
  env[:machine].communicate.execute(start_command)
  env[:ui].detail("Notify-forwarder: guest listening for file change notifications on 0.0.0.0:#{port}.")
end

#ensure_binary_downloaded(env) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/vagrant-notify-forwarder/action/start_client_forwarder.rb', line 11

def ensure_binary_downloaded(env)
  os = :unsupported
  hardware = :unsupported

  env[:machine].communicate.execute('uname -s') do |type, data|
    env[:ui].info "Notify-forwarder: Detected client operating system: #{data}"
    os = Utils.parse_os_name data if type == :stdout
  end

  env[:machine].communicate.execute('uname -m') do |type, data|
    env[:ui].info "Notify-forwarder: Detected client hardware: #{data}"
    hardware = Utils.parse_hardware_name data if type == :stdout
  end

  env[:ui].error "Notify-forwarder: Unsupported client operating system (detected: #{os})" if os == :unsupported
  env[:ui].error "Notify-forwarder: Unsupported client hardware (detected: #{hardware})" if hardware == :unsupported

  if os != :unsupported and hardware != :unsupported
    Utils.ensure_binary_downloaded env, os, hardware
  end
end