Sha256: ac0636e2502d4b0be245abd6d27cce417d2c2a1a15c797bb432cf4f4a8bfdfbe

Contents?: true

Size: 900 Bytes

Versions: 2

Compression:

Stored size: 900 Bytes

Contents

module Mirage
module CLIBridge
  def mirage_process_ids *ports
    ports.flatten!
    mirage_instances = {}
    ["Mirage Server", "mirage_server", "mirage server"].each do |process_name|
      processes_with_name(process_name).lines.collect { |line| line.chomp }.each do |process_line|
        pid = process_line.split(' ')[1]
        port = process_line[/port (\d+)/, 1]
        mirage_instances[port] = pid
      end
    end

    return mirage_instances if ports.first.to_s.downcase == "all"
    Hash[mirage_instances.find_all { |port, pid| ports.include?(port.to_i) }]
  end

  def kill pid
    ChildProcess.windows? ? `taskkill /F /T /PID #{pid}` : `kill -9 #{pid}`
  end

  def processes_with_name name
    if ChildProcess.windows?

      `tasklist /V | findstr "#{name.gsub(" ", '\\ ')}"`
    else
      IO.popen("ps aux | grep '#{name}' | grep -v grep | grep -v #{$$}")
    end
  end

end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
mirage-2.4.1 lib/mirage/client/cli_bridge.rb
mirage-2.4.0 lib/mirage/client/cli_bridge.rb