Class: Inspec::Resources::LaunchCtl

Inherits:
ServiceManager show all
Defined in:
lib/inspec/resources/service.rb

Overview

MacOS / Darwin new launctl on macos 10.10

Instance Attribute Summary

Attributes inherited from ServiceManager

#inspec, #service_ctl

Instance Method Summary collapse

Constructor Details

#initialize(service_name, service_ctl = nil) ⇒ LaunchCtl

Returns a new instance of LaunchCtl.



634
635
636
637
# File 'lib/inspec/resources/service.rb', line 634

def initialize(service_name, service_ctl = nil)
  @service_ctl = service_ctl || "launchctl"
  super
end

Instance Method Details

#info(service_name) ⇒ Object



639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
# File 'lib/inspec/resources/service.rb', line 639

def info(service_name)
  # get the status of upstart service
  cmd = inspec.command("#{service_ctl} list")
  return nil if cmd.exit_status != 0

  # search for the service
  srv = /(^.*#{service_name}.*)/.match(cmd.stdout)
  return nil if srv.nil? || srv[0].nil?

  # extract values from service
  parsed_srv = /^(?<pid>[0-9-]+)\t(?<exit>[\-0-9]+)\t(?<name>\S*)$/.match(srv[0])
  enabled = !parsed_srv["name"].nil? # it's in the list

  # check if the service is running
  pid = parsed_srv["pid"]
  running = pid != "-"

  # extract service label
  srv = parsed_srv["name"] || service_name

  {
    name: srv,
    description: nil,
    installed: true,
    running: running,
    enabled: enabled,
    type: "darwin",
  }
end