#
# Cookbook:: irrigate-php
# Recipe:: php82
#

if platform_family?('debian')

  prerequisite_packages = %w(
    apt-transport-https
    bzip2
    ca-certificates
    curl
    gpg
    libbz2-dev
    libcurl4-openssl-dev
    libdb-dev
    libevent-dev
    libfreetype6-dev
    libgmp-dev
    libjpeg-dev
    libjpeg62-turbo-dev
    libmcrypt-dev
    libmemcached-dev
    libmhash-dev
    libmhash2
    libpng-dev
    libssl-dev
    libtiff-dev
    libxml2-dev
    libzip-dev
    lsb-release
    memcached
    software-properties-common
    unzip
    wget
  )

  prerequisite_packages.each do |name|
    package name
  end

  # Manually fetch and add GPG key with curl
  execute 'add_gpg_key' do
    command 'curl -fsSL https://packages.sury.org/php/apt.gpg | gpg --dearmor -o /etc/apt/trusted.gpg.d/sury.gpg'
    not_if { ::File.exist?('/etc/apt/trusted.gpg.d/sury.gpg') }
  end

  # Add Sury PHP source
  apt_repository 'sury' do
    components ['main']
    signed_by '/etc/apt/trusted.gpg.d/sury.gpg'
    trusted false
    uri 'https://packages.sury.org/php'
  end

  packages = %w(
    php8.2
    php8.2-apcu
    php8.2-bcmath
    php8.2-cli
    php8.2-common
    php8.2-curl
    php8.2-dev
    php8.2-gd
    php8.2-gmp
    php8.2-imagick
    php8.2-ldap
    php8.2-mbstring
    php8.2-mcrypt
    php8.2-memcache
    php8.2-memcached
    php8.2-mysql
    php8.2-opcache
    php8.2-pgsql
    php8.2-redis
    php8.2-redis
    php8.2-soap
    php8.2-ssh2
    php8.2-uploadprogress
    php8.2-xml
    php8.2-yaml
    php8.2-zip
    php-pear
  )

  packages.each do |name|
    package name do
      retries 10
      retry_delay 10
    end
  end

  template '/etc/php/8.2/cli/php.ini' do
    source 'php.ini.erb'
    mode '0644'
    owner 'root'
    group 'root'
  end

  if node['php']['error_log'].start_with?('/')
    file node['php']['error_log'] do
      action :create_if_missing
      mode '0640'
      owner node['php']['error_log_file_owner']
    end
  end
end
