#!/usr/bin/env bash

# Copyright 2018-2023 Istituto Nazionale di Fisica Nucleare
# SPDX-License-Identifier: EUPL-1.2

downloadNginx() {

  # check if ~/rpmbuild exists and is not empty
  if [ -d ${HOME}/rpmbuild ] && [ "$(ls -A ${HOME}/rpmbuild)" ]; then
    >&2 echo "Error: ${HOME}/rpmbuild already exists and is not empty"
    return 1
  fi

  # set nginx version
  if [ -z ${ngxVersion} ]; then
    ngxVersion=1.26.1-2
  fi
  echo "Downloading nginx version ${ngxVersion}"
  src_package_name="nginx-${ngxVersion}.el9.ngx.src.rpm"
  src_package_url="https://nginx.org/packages/centos/9/SRPMS/${src_package_name}"

  # setup rpmbuild dir
  cat <<EOF > ~/.rpmmacros
%_topdir %{getenv:HOME}/rpmbuild
EOF

  cd
  rpmdev-setuptree

  # download nginx sources
  cd ~/rpmbuild/SOURCES/
  wget ${src_package_url}
  rpm2cpio ${src_package_name} | cpio -idm
}

buildHttpgNginxRPM() {

  if [ -z ${CI_PROJECT_DIR} ]; then
    >&2 echo "CI_PROJECT_DIR not set, assuming the current working directory \'${PWD}\'"
    CI_PROJECT_DIR="${PWD}"
  fi

  # set the nginx spec file with the httpg patch
  cd ~/rpmbuild/SOURCES/
  cp ${CI_PROJECT_DIR}/nginx-httpg_no_delegation.patch ~/rpmbuild/SOURCES/
  cp ${CI_PROJECT_DIR}/rpm/nginx.spec ~/rpmbuild/SPECS

  # build rpm
  rpmlint ~/rpmbuild/SPECS/nginx.spec
  rpmbuild -ba ~/rpmbuild/SPECS/nginx.spec

  # include httpg in the rpm name
  mv ~/rpmbuild/RPMS/x86_64/nginx-$ngxVersion-1.el7.ngx.x86_64.rpm ~/rpmbuild/RPMS/x86_64/nginx-httpg-$ngxVersion-1.el7.ngx.x86_64.rpm
  mv ~/rpmbuild/RPMS/x86_64/nginx-debuginfo-$ngxVersion-1.el7.ngx.x86_64.rpm ~/rpmbuild/RPMS/x86_64/nginx-httpg-debuginfo-$ngxVersion-1.el7.ngx.x86_64.rpm
  mv ~/rpmbuild/SRPMS/nginx-$ngxVersion-1.el7.ngx.src.rpm ~/rpmbuild/SRPMS/nginx-httpg-$ngxVersion-1.el7.ngx.src.rpm

  cd ${CI_PROJECT_DIR}

}

buildVomsModuleRPM() {

  if [ -z ${CI_PROJECT_DIR} ]; then
    CI_PROJECT_DIR="/workspaces/ngx_http_voms_module"
  fi

  # set voms modules sources
  cd ~/rpmbuild/SOURCES/
  mkdir ngx-http-voms-module
  cp ${CI_PROJECT_DIR}/config ngx-http-voms-module/
  cp ${CI_PROJECT_DIR}/config.make ngx-http-voms-module/
  cp -r ${CI_PROJECT_DIR}/src ngx-http-voms-module/
  cp ${CI_PROJECT_DIR}/rpm/nginx-module-http-voms.spec ~/rpmbuild/SPECS

  # build rpm
  rpmlint ~/rpmbuild/SPECS/nginx-module-http-voms.spec
  rpmbuild -ba ~/rpmbuild/SPECS/nginx-module-http-voms.spec

  cd ${CI_PROJECT_DIR}

}
