#!/bin/bash

version=$(<src/public/version.txt)

echo "
   ____       _               _   ____
  |  _ \ ___ | |__   ___ _ __| |_|___ \\
  | |_) / _ \| '_ \ / _ \ '__| __| __) |
  |  _ < (_) | |_) |  __/ |  | |_ / __/
  |_| \_\___/|_.__/ \___|_|   \__|_____|

* RELEASE ${version} DISTRIBUTION SCRIPT *

Let's start..."

if ! [ -x "$(command -v jq)" ]; then
  echo "ERROR: Program 'jq' is needed and not installed." >&2
  exit 1
fi

echo "
Removing old 'dist' folder..."
rm -rf dist

echo "
Copying all application source code's folders..."
releaseName="Robert2-${version}"
distFolder="dist/${releaseName}"
mkdir -p $distFolder
cp -r src dist
mv dist/src $distFolder/src
cp -r utilities $distFolder
cp .htaccess $distFolder/.htaccess
cp composer.json $distFolder/composer.json
cp ../README.md $distFolder/README.md
cp ../LICENCE.md $distFolder/LICENCE.md
rm -R $distFolder/utilities/postman
mkdir -p $distFolder/data/bills
cp data/bills/.gitignore $distFolder/data/bills/.gitignore
mkdir $distFolder/data/imports
cp data/imports/.gitignore $distFolder/data/imports/.gitignore

echo "
Cleaning unnecessary (and private config) files..."
cd $distFolder
rm -r src/vendor
rm src/App/Config/settings.json
rm src/install/progress.json
rm -r src/var/cache && mkdir -m 777 src/var/cache/
rm -r src/var/logs && mkdir -m 777 src/var/logs/
rm -r src/var/tmp && mkdir -m 777 src/var/tmp/

echo "
Set folders permissions..."
chmod 777 -R data
chmod 777 src/App/Config
chmod 777 src/install

echo "
Installing dependencies..."
query='del(."require-dev")|del(.autoload."psr-4"."Robert2\\Tests\\")|del(.autoload."psr-4"."Robert2\\Fixtures\\")|del(.scripts."create-migration")|del(.scripts."lint")|del(.scripts."test")|del(.scripts."testapi")|del(.scripts."testmodels")|del(.scripts."testother")|del(.scripts."build-api-doc")|del(.scripts."release")'
jq $query composer.json > tmp.composer.json
mv tmp.composer.json composer.json
composer install --quiet
echo "Done."

echo "
Packaging project into ZIP file..."
cd ..
echo " -> ${releaseName}.zip"
zip -r --quiet "${releaseName}.zip" $releaseName

echo "
Removing folder..."
cd ..
rm -rf $distFolder

echo "
All done!!
See you next release. Bye!"
