# Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/

class SystemReport::Plugin::Os < SystemReport::Plugin
  OS_RELEASE_FILE = '/etc/os-release'.freeze

  DESCRIPTION = __('Operating system').freeze

  def fetch
    os_release.merge(platform: RUBY_PLATFORM).deep_symbolize_keys
  end

  private

  def os_release
    return {} if !File.exist?(OS_RELEASE_FILE)

    os_release = File.read(OS_RELEASE_FILE)
    begin
      os_release.split("\n").to_h do |line|
        key, value = line.split('=')
        key.downcase!
        value.delete!('"')

        [key, value]
      end
    rescue
      Rails.logger.error("Failed to parse #{OS_RELEASE_FILE}")
      {}
    end
  end
end