#!/usr/bin/env bash
set -e

if [[ "$#" -ne 1 ]]; then
  echo "Usage:" >&2
  echo "   $0 {version}" >&2
  exit 1
fi

version=$1
builtcontent="./build/shlink_${version}_dist"
projectdir=$(pwd)
[[ -f ./composer.phar ]] && composerBin='./composer.phar' || composerBin='composer'

# Copy project content to temp dir
echo 'Copying project files...'
rm -rf "${builtcontent}"
mkdir -p "${builtcontent}"
rsync -av * "${builtcontent}" \
    --exclude=bin/test \
    --exclude=data/infra \
    --exclude=data/travis \
    --exclude=data/cache/* \
    --exclude=data/log/* \
    --exclude=data/locks/* \
    --exclude=data/proxies/* \
    --exclude=data/migrations_template.txt \
    --exclude=data/GeoLite2-City.* \
    --exclude=data/database.sqlite \
    --exclude=data/shlink-tests.db \
    --exclude=**/.gitignore \
    --exclude=CHANGELOG.md \
    --exclude=composer.lock \
    --exclude=vendor \
    --exclude=docs \
    --exclude=indocker \
    --exclude=docker* \
    --exclude=php* \
    --exclude=infection.json \
    --exclude=phpstan.neon \
    --exclude=config/autoload/*local* \
    --exclude=config/test \
    --exclude=**/test* \
    --exclude=build* \
    --exclude=.github
cd "${builtcontent}"

# Install dependencies
echo "Installing dependencies with $composerBin..."
${composerBin} self-update
${composerBin} install --no-dev --optimize-autoloader --apcu-autoloader --no-progress --no-interaction

# Delete development files
echo 'Deleting dev files...'
rm composer.*

# Update shlink version in config
sed -i "s/%SHLINK_VERSION%/${version}/g" config/autoload/app_options.global.php

# Compressing file
echo 'Compressing files...'
cd "${projectdir}"/build
rm -f ./shlink_${version}_dist.zip
zip -ry ./shlink_${version}_dist.zip ./shlink_${version}_dist
cd "${projectdir}"
rm -rf "${builtcontent}"

echo 'Done!'