local hs = {}
if obj.spec.suspend ~= nil and obj.spec.suspend == true then
  hs.message = obj.kind .. " is suspended"
  hs.status = "Suspended"
  return hs
end
-- Helm repositories of type "oci" do not contain any information in the status
-- https://fluxcd.io/flux/components/source/helmrepositories/#helmrepository-status
if obj.spec.type ~= nil and obj.spec.type == "oci" then
  hs.message = "Helm repositories of type 'oci' do not contain any information in the status."
  hs.status = "Healthy"
  return hs
end
if obj.status ~= nil then
  if obj.status.conditions ~= nil then
    local numProgressing = 0
    local numSucceeded = 0
    local message = ""
    for _, condition in ipairs(obj.status.conditions) do
      if condition.type == "Ready" then
        if condition.status == "True" then
          numSucceeded = numSucceeded + 1
        elseif condition.status == "Unknown" then
          numProgressing = numProgressing + 1
        end
        message = condition.reason
      elseif condition.type == "Reconciling" and condition.status == "True" then
        numProgressing = numProgressing + 1
      elseif condition.type == "ArtifactOutdated" and condition.status == "True" then
        message = message .. " " .. condition.reason
      elseif condition.type == "ArtifactInStorage" and condition.status == "True" then
        numSucceeded = numSucceeded + 1
      end
    end
    if(numProgressing == 2) then
      hs.message = message
      hs.status = "Progressing"
      return hs
    elseif(numSucceeded == 2) then
      hs.message = message
      hs.status = "Healthy"
      return hs
    else
      hs.message = message
      hs.status = "Degraded"
      return hs
    end
  end
end
hs.message = "Status unknown"
hs.status = "Progressing"
return hs
