class Inspec::Resources::SysV

def info(service_name)

def info(service_name)
  # check if service is installed
  # read all available services via ls /etc/init.d/
  srvlist = inspec.command('ls -1 /etc/init.d/')
  return nil if srvlist.exit_status != 0
  # check if the service is in list
  service = srvlist.stdout.split("\n").select { |srv| srv == service_name }
  # abort if we could not find any service
  return nil if service.empty?
  # read all enabled services from runlevel
  # on rhel via: 'chkconfig --list', is not installed by default
  # bash: for i in `find /etc/rc*.d -name S*`; do basename $i | sed -r 's/^S[0-9]+//'; done | sort | uniq
  enabled_services_cmd = inspec.command('find /etc/rc*.d /etc/init.d/rc*.d -name "S*"').stdout
  service_line = %r{rc(?<runlevel>[0-6])\.d/S[^/]*?#{Regexp.escape service_name}$}
  all_services = enabled_services_cmd.split("\n").map { |line|
    service_line.match(line)
  }.compact
  enabled = !all_services.empty?
  # Determine a list of runlevels which this service is activated for
  runlevels = RUNLEVELS.dup
  all_services.each { |x| runlevels[x[:runlevel].to_i] = true }
  # check if service is really running
  # service throws an exit code if the service is not installed or
  # not enabled
  cmd = inspec.command("#{service_ctl} #{service_name} status")
  running = cmd.exit_status == 0
  {
    name: service_name,
    description: nil,
    installed: true,
    running: running,
    enabled: enabled,
    runlevels: runlevels,
    type: 'sysv',
  }
end

def initialize(service_name, service_ctl = nil)

def initialize(service_name, service_ctl = nil)
  @service_ctl = service_ctl || 'service'
  super
end