eliashaeussler/typo3-form-consent

View on GitHub
.ddev/commands/web/init-typo3

Summary

Maintainability
Test Coverage
#!/usr/bin/env bash
# bashsupport disable=BP2001
# shellcheck disable=SC2086
set -e

## Description: Initialize TYPO3 installation
## Usage: init-typo3
## Example: ddev init-typo3

readonly dbHost="db"
readonly dbUser="db"
readonly dbPassword="db"
readonly dbName="db"
readonly dbCredentials="-h${dbHost} -u${dbUser} -p${dbPassword}"
readonly adminUsername="admin"
readonly adminPassword="Passw0rd!"
readonly fileadminWebPath="/var/www/html/.Build/web/fileadmin"
readonly fileadminFixturePath="/var/www/html/Tests/Acceptance/Data/Fileadmin"
readonly fixturePath="/var/www/html/Tests/Acceptance/Data/Fixtures"

typo3Binary="/var/www/html/.Build/bin/typo3"
typo3ConsoleBinary="/var/www/html/.Build/bin/typo3cms"
typo3Version="$($typo3Binary --version --no-ansi | grep ^TYPO3 | awk '{print $3}')"
typo3Version="${typo3Version%%.*}"

function _progress() {
    printf "%s... " "$1"
}

function _done() {
    printf "\e[32mDone\e[39m\n"
}

function _setup_v11() {
    export TYPO3_INSTALL_DB_USER="$dbUser"
    export TYPO3_INSTALL_DB_PASSWORD="$dbPassword"
    export TYPO3_INSTALL_DB_HOST="$dbHost"
    export TYPO3_INSTALL_DB_USE_EXISTING=0
    export TYPO3_INSTALL_DB_DBNAME="$dbName"
    export TYPO3_INSTALL_ADMIN_USER="$adminUsername"
    export TYPO3_INSTALL_ADMIN_PASSWORD="$adminPassword"

    _progress "Installing TYPO3 Console"
    composer require --dev --quiet helhum/typo3-console:^7.1.4 -W
    _done

    _progress "Setting up TYPO3 installation"
    rm -rf /var/www/html/var
    "$typo3ConsoleBinary" install:setup --no-interaction --force --quiet
    _done

    _progress "Removing TYPO3 Console"
    composer remove --dev --quiet helhum/typo3-console
    _done
}

function _setup_v12() {
    export TYPO3_DB_DRIVER=mysqli
    export TYPO3_DB_USERNAME="$dbUser"
    export TYPO3_DB_PASSWORD="$dbPassword"
    export TYPO3_DB_PORT=3306
    export TYPO3_DB_HOST="$dbHost"
    export TYPO3_DB_DBNAME="$dbName"
    export TYPO3_SETUP_ADMIN_EMAIL=admin@example.com
    export TYPO3_SETUP_ADMIN_USERNAME="$adminUsername"
    export TYPO3_SETUP_ADMIN_PASSWORD="$adminPassword"
    export TYPO3_SERVER_TYPE=other
    export TYPO3_PROJECT_NAME="EXT:form_consent"

    _progress "Setting up TYPO3 installation"
    "$typo3Binary" setup --no-interaction --force --quiet
    _done
}

# Create empty database
_progress "Creating empty database"
mysql -Nse "SHOW TABLES" $dbCredentials "$dbName" | while read -r table; do
    mysql -e "DROP TABLE ${table}" $dbCredentials "$dbName"
done
_done

# Set up environment
if [ "$typo3Version" -eq 11 ]; then
    _setup_v11
else
    _setup_v12
fi

# Import DB fixtures
for file in "$fixturePath"/*.sql; do
    _progress "Importing DB fixture \"$(basename "$file")\""
    mysql $dbCredentials "$dbName" < "$file"
    _done
done

# Create fileadmin
if [ -d "$fileadminWebPath" ]; then
    rm -rf "$fileadminWebPath"
fi
cp -r "$fileadminFixturePath" "$fileadminWebPath"