#!/usr/bin/env bash

set -e

PROJECT="0"
DB_NAME="db_xps_dev2"
DB_USER="xaverbertsch"
DB_PASS="yuhvMqruzbJYtqmpJutQfaX86WXQ2Ut6"
DB_HOST="localhost"
HTACCESS_USER="digidesk"
HTACCESS_PASS="WhgB4CoA.bH9CF@d"

echo "Installing Shopware 6.7..."

composer config --global audit.block-insecure false

COMPOSER_MEMORY_LIMIT=-1 composer create-project shopware/production $PROJECT 6.7.5.1 

composer config --global audit.block-insecure true

cd $PROJECT

echo "Configuring environment..."

cat > .env.local <<EOF
APP_ENV=prod
APP_URL=http://sw67.xps-store.de

DATABASE_URL="mysql://${DB_USER}:${DB_PASS}@${DB_HOST}:3306/${DB_NAME}"
EOF

echo "Installing Shopware..."

php -d memory-limit=2048M bin/console system:install \
--create-database \
--basic-setup \
--shop-locale=de-DE \
--shop-currency=EUR \
--shop-name="XPS Store"


echo "Updating translations..."

php -d memory-limit=2048M bin/console translation:update

echo "Setting German as default language..."

php -d memory-limit=2048M bin/console language:set-default de-DE || true

#echo "Building storefront..."

php -d memory-limit=2048M bin/build-storefront.sh


echo "Creating .htpasswd..."

HASH=$(openssl passwd -apr1 "$HTACCESS_PASS")
echo "$HTACCESS_USER:$HASH" > .htpasswd


echo "Configuring public/.htaccess..."

cat >> public/.htaccess <<EOF

# Basic Auth protection
AuthType Basic
AuthName "Please login."
AuthUserFile $(pwd)/.htpasswd

SetEnvIf Request_URI /api noauth=1

Require env noauth
Require env REDIRECT_noauth
Require valid-user
EOF


SHARED_DIR="../../shared"
SHARED_PUBLIC_DIR="$SHARED_DIR/public"

echo "Preparing shared directories..."

mkdir -p $SHARED_DIR
mkdir -p $SHARED_PUBLIC_DIR


echo "Syncing root files to shared directory..."

rsync -av ./composer.json $SHARED_DIR/
rsync -av ./composer.lock $SHARED_DIR/
rsync -av ./.env $SHARED_DIR/
rsync -av ./.env.dev $SHARED_DIR/
rsync -av ./.env.local $SHARED_DIR/


echo "Syncing root directories to shared directory..."

rsync -av ./config $SHARED_DIR/
rsync -av ./files $SHARED_DIR/
rsync -av ./src $SHARED_DIR/


echo "Syncing public assets to shared/public..."

rsync -av ./public/bundles $SHARED_PUBLIC_DIR/
rsync -av ./public/media $SHARED_PUBLIC_DIR/
#rsync -av --ignore-errors ./public/sitemap $SHARED_PUBLIC_DIR/
rsync -av ./public/theme $SHARED_PUBLIC_DIR/
rsync -av ./public/.htaccess $SHARED_PUBLIC_DIR/


echo "Removing original root files..."

rm -f ./composer.json
rm -f ./composer.lock
rm -f ./.env
rm -f ./.env.dev
rm -f ./.env.local


echo "Removing original root directories..."

rm -rf ./config
rm -rf ./files
rm -rf ./src


echo "Removing original public assets..."

rm -rf ./public/bundles
rm -rf ./public/media
#rm -rf ./public/sitemap
rm -rf ./public/theme
rm -f ./public/.htaccess


echo "Creating symlinks for root files..."

ln -sfn $SHARED_DIR/composer.json ./composer.json
ln -sfn $SHARED_DIR/composer.lock ./composer.lock
ln -sfn $SHARED_DIR/.env ./.env
ln -sfn $SHARED_DIR/.env.dev ./.env.dev
ln -sfn $SHARED_DIR/.env.local ./.env.local


echo "Creating symlinks for root directories..."

ln -sfn $SHARED_DIR/config ./config
ln -sfn $SHARED_DIR/files ./files
ln -sfn $SHARED_DIR/src ./src


echo "Creating symlinks for public assets..."


ln -sfn ../../../shared/public/bundles ./public/bundles
ln -sfn ../../../shared/public/media ./public/media
#ln -sfn $SHARED_PUBLIC_DIR/sitemap ./public/sitemap
ln -sfn ../../../shared/public/theme ./public/theme
ln -sfn ../../../shared/public/.htaccess ./public/.htaccess


echo "Shared resources linked successfully."




echo "========================================"
echo "Shopware installation finished!"
