if platform_family?('debian')
  execute 'add_neo4j_gpg_key' do
    command 'curl -fsSL https://debian.neo4j.com/neotechnology.gpg.key | gpg --dearmor -o /etc/apt/trusted.gpg.d/neo4j.gpg'
    not_if { ::File.exist?('/etc/apt/trusted.gpg.d/neo4j.gpg') }
  end

  if node['neo4j']['version'].to_i == 5
    apt_repository 'neo4j' do
      uri 'https://debian.neo4j.com'
      distribution 'stable'
      components ['5']
      signed_by '/etc/apt/trusted.gpg.d/neo4j.gpg'
      action :add
    end
    execute 'echo "neo4j-enterprise neo4j/accept-license select Accept commercial license" | debconf-set-selections'
  elsif node['neo4j']['version'].start_with?('202')
    apt_repository 'neo4j' do
      uri 'https://debian.neo4j.com'
      distribution 'stable'
      components ['latest']
      signed_by '/etc/apt/trusted.gpg.d/neo4j.gpg'
      action :add
    end
    execute 'echo "neo4j-enterprise neo4j/accept-license select Accept commercial license" | debconf-set-selections'
  end

  apt_package node['neo4j']['package_name'] do
    action [:unlock]
  end

  apt_package node['neo4j']['package_name'] do
    action [:install, :lock]
    version "1:#{node['neo4j']['version']}"
  end
end

# apr needed for openssl netty-tcnative support
# lsof needed by neo4j
packages = %w(
  checkpolicy
  lsof
  make
  openssl
  policycoreutils
  unzip
  zip
)

if platform_family?('debian')
  packages += %w(
    auditd
    libapr1
    policycoreutils-python-utils
    selinux-basics
    selinux-policy-default
    selinux-policy-dev
    selinux-utils
    semodule-utils
    setools
  )
end

packages.each do |name|
  package name
end

# this provides jcmd needed for JFR profiling
openjdk_package = if node['platform_version'].start_with?('12')
                    'openjdk-17-jdk-headless'
                  else
                    'openjdk-21-jdk-headless'
                  end

package openjdk_package do
  action :install
end
