#!/usr/bin/env bash
set -eu
# build-rpm-package:
# Build RPM package for Neo4j Cypher Shell from a zip file

if [ $# -ne 3 ]
then
  echo "Usage: ${0} <workspace> <zipfile> <distribution>"
  exit 1
fi

# Read in shared functions
. "$(dirname ${0})/shared.sh"

package_directory=${1}
zipfile=${2}
distribution=${3}

# Make path absolute because rpmbuild is a bit stupid
if [[ ! "${package_directory}" =~ "^/" ]]; then
  package_directory="$(pwd)/${package_directory}"
fi

echo "Building Cypher Shell RPM package"
echo "Package directory: ${package_directory}"
echo "Zip file: ${zipfile}"
echo "Distribution: ${distribution}"

# Get version(s)
parse_version_from_zipfile "${zipfile}"

echo "RPM version: ${rpm_version}"
echo "Release: ${rpm_release}"

license="GPLv3"

echo "License: ${license}"

# Prepare workspace
mkdir -p ${package_directory}/{BUILD,RPMS,SOURCES,BUILDROOT,SPECS,SRPMS}/
sources_directory=${package_directory}/BUILD/cypher-shell-${rpm_version}
mkdir -p ${sources_directory}
mkdir -p ${sources_directory}/manpages
common_directory=src/common
spec_directory=src/rpm/noarch

# Extract zip distribution
unzip ${zipfile} -d ${sources_directory}
zip_root=`unzip -Z1 ${zipfile} | head -1`
mv ${sources_directory}/${zip_root} ${sources_directory}/cypher-shell

# Manpage
cp ${common_directory}/manpages/cypher-shell.1 ${sources_directory}/manpages/cypher-shell.1
gzip -f ${sources_directory}/manpages/*

# Generate spec file
VERSION=${rpm_version} RELEASE=${rpm_release} envsubst '${VERSION} ${RELEASE}' < ${spec_directory}/cypher-shell.spec > ${package_directory}/SPECS/cypher-shell.spec

# build package and metadata files
(cd ${package_directory} && rpmbuild --define "_topdir ${package_directory}" -bb SPECS/cypher-shell.spec)

# Move finished RPMs to directory below because TeamCity sucks
cp ${package_directory}/RPMS/noarch/*.rpm ${package_directory}/..
