Class: VagrantPlugins::VagrantNotifyForwarder::Action::StartClientForwarder
- Inherits:
-
Object
- Object
- VagrantPlugins::VagrantNotifyForwarder::Action::StartClientForwarder
- Defined in:
- lib/vagrant-notify-forwarder/action/start_client_forwarder.rb
Instance Method Summary collapse
- #call(env) ⇒ Object
- #ensure_binary_downloaded(env) ⇒ Object
-
#initialize(app, env) ⇒ StartClientForwarder
constructor
A new instance of StartClientForwarder.
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 |