class Aptible::CLI::Helpers::SecurityKey::DeviceMapper

Attributes

pid[R]

Public Class Methods

new(pid, out_read, err_read) click to toggle source
# File lib/aptible/cli/helpers/security_key.rb, line 71
def initialize(pid, out_read, err_read)
  @pid = pid
  @out_read = out_read
  @err_read = err_read
end
spawn() click to toggle source
# File lib/aptible/cli/helpers/security_key.rb, line 91
def self.spawn
  out_read, out_write = IO.pipe
  err_read, err_write = IO.pipe

  pid = Process.spawn(
    'fido2-token -L',
    out: out_write, err: err_write,
    close_others: true
  )

  U2F_LOGGER.debug("#{self}: spawned #{pid}")

  [out_write, err_write].each(&:close)

  new(pid, out_read, err_read)
end

Public Instance Methods

exited(status) click to toggle source
# File lib/aptible/cli/helpers/security_key.rb, line 77
def exited(status)
  out, err = [@out_read, @err_read].map(&:read).map(&:chomp)

  if status.exitstatus == 0
    U2F_LOGGER.info("#{self.class}: ok: #{out}")
    [nil, out]
  else
    U2F_LOGGER.warn("#{self.class}: err: #{err}")
    [nil, nil]
  end
ensure
  [@out_read, @err_read].each(&:close)
end