diff --git a/.env.example b/.env.example deleted file mode 100644 index 425800320..000000000 --- a/.env.example +++ /dev/null @@ -1,30 +0,0 @@ -PLUGIN_NAME=woocommerce-paypal-payments -BASE_PATH=./ -PROJECT_MOUNT_PATH=/var/www/html/wp-content/plugins/woocommerce-paypal-payments -DOCROOT_PATH=/var/www/html -BUILD_ROOT_PATH=/app/ -PROJECT_NAME=inpsyde_woocommerce-paypal-payments -HOST_IP_ADDRESS=172.17.0.1 - -WP_DOMAIN=wc-pp.myhost -WP_TITLE="WooCommerce PayPal Payments" - -WP_VERSION=5.3 -WC_VERSION=4.7.0 - -PHP_BUILD_VERSION=7.1 -PHP_TEST_VERSION=7.1 -PHP_DEPS_VERSION=7.1 - -DB_ROOT_PASSWORD=root -DB_NAME=wordpress -DB_USER_NAME=wordpress -DB_USER_PASSWORD=J(P*@%OSJiaifN2 - -ADMIN_USER=admin -ADMIN_PASS=admin -ADMIN_EMAIL=me@my.com - -#NGROK_HOST=mydomain.ngrok.io - -COMPOSER_MEMORY_LIMIT=1.5G diff --git a/.gitattributes b/.gitattributes index 23148506b..6774b417a 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,6 +1,5 @@ /.github/ export-ignore /.psalm/ export-ignore -/docker/ export-ignore /.ddev/ export-ignore /tests/ export-ignore /.idea/ export-ignore @@ -11,8 +10,6 @@ auth.json export-ignore composer.json export-ignore composer.lock export-ignore DEVELOPMENT.md export-ignore -docker-compose.yml export-ignore -grumphp.yml export-ignore gulpfile.js export-ignore package.json export-ignore phpcs.xml export-ignore diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index 0f9d75055..000000000 --- a/docker-compose.yml +++ /dev/null @@ -1,120 +0,0 @@ -version: '3.4' -services: - wp_dev: - build: - context: ./ - dockerfile: docker/Dockerfile_wp - target: dev - args: - PHP_BUILD_VERSION: $PHP_BUILD_VERSION - PHP_TEST_VERSION: $PHP_TEST_VERSION - PHP_DEPS_VERSION: $PHP_DEPS_VERSION - PROJECT_MOUNT_PATH: $PROJECT_MOUNT_PATH - BUILD_ROOT_PATH: $BUILD_ROOT_PATH - DOCROOT_PATH: $DOCROOT_PATH - WP_DOMAIN: ${WP_DOMAIN} - WP_VERSION: $WP_VERSION - container_name: "${PROJECT_NAME}_wp_dev" - depends_on: - - db - restart: unless-stopped - environment: - WORDPRESS_DB_HOST: db:3306 - WORDPRESS_DB_NAME: $DB_NAME - WORDPRESS_DB_USER: $DB_USER_NAME - WORDPRESS_DB_PASSWORD: $DB_USER_PASSWORD - WORDPRESS_DEBUG: 1 - DOCROOT_PATH: ${DOCROOT_PATH} - PLUGIN_NAME: ${PLUGIN_NAME} - ADMIN_USER: ${ADMIN_USER} - ADMIN_PASS: ${ADMIN_PASS} - ADMIN_EMAIL: ${ADMIN_EMAIL} - WP_DOMAIN: ${WP_DOMAIN} - WP_TITLE: ${WP_TITLE} - WC_VERSION: $WC_VERSION - NGROK_HOST: ${NGROK_HOST} - - volumes: - - wordpress:${DOCROOT_PATH} - - ${BASE_PATH}:${PROJECT_MOUNT_PATH} - ports: - - 80:80 - - db: - image: mariadb:latest - container_name: "${PROJECT_NAME}_db" - restart: unless-stopped - environment: - MYSQL_ROOT_PASSWORD: $DB_ROOT_PASSWORD - MYSQL_DATABASE: $DB_NAME - MYSQL_USER: $DB_USER_NAME - MYSQL_PASSWORD: $DB_USER_PASSWORD - ports: - - 3306:3306 - volumes: - - db:/var/lib/mysql - - db_admin: - image: phpmyadmin/phpmyadmin:latest - container_name: "${PROJECT_NAME}_db_admin" - restart: unless-stopped - environment: - MYSQL_ROOT_PASSWORD: $DB_ROOT_PASSWORD - depends_on: - - db - ports: - - 1234:80 - # volumes: - # - db_admin - - composer: - build: - context: ./ - dockerfile: docker/Dockerfile_wp - target: composer - args: - PHP_DEPS_VERSION: $PHP_DEPS_VERSION - BUILD_ROOT_PATH: $BUILD_ROOT_PATH - container_name: "${PROJECT_NAME}_composer" - working_dir: ${BUILD_ROOT_PATH} - volumes: - - ${BASE_PATH}:${BUILD_ROOT_PATH} - environment: - - COMPOSER_MEMORY_LIMIT=${COMPOSER_MEMORY_LIMIT} - - build: - build: - context: ./ - dockerfile: docker/Dockerfile_wp - target: build - args: - PHP_DEPS_VERSION: $PHP_DEPS_VERSION - PHP_BUILD_VERSION: $PHP_BUILD_VERSION - BUILD_ROOT_PATH: $BUILD_ROOT_PATH - WP_VERSION: $WP_VERSION - container_name: "${PROJECT_NAME}_build" - working_dir: ${BUILD_ROOT_PATH} - volumes: - - ${BASE_PATH}:${BUILD_ROOT_PATH} - - test: - extra_hosts: - - "host.docker.internal:${HOST_IP_ADDRESS}" - build: - context: ./ - dockerfile: docker/Dockerfile_wp - target: test - args: - PHP_DEPS_VERSION: $PHP_DEPS_VERSION - BUILD_ROOT_PATH: $BUILD_ROOT_PATH - PHP_BUILD_VERSION: $PHP_BUILD_VERSION - PHP_TEST_VERSION: $PHP_TEST_VERSION - container_name: "${PROJECT_NAME}_test" - working_dir: ${BUILD_ROOT_PATH} - volumes: - - ${BASE_PATH}:${BUILD_ROOT_PATH} - -volumes: - wordpress: - db: - db_admin: diff --git a/docker/Dockerfile_wp b/docker/Dockerfile_wp deleted file mode 100644 index a698095d7..000000000 --- a/docker/Dockerfile_wp +++ /dev/null @@ -1,159 +0,0 @@ -ARG PHP_BUILD_VERSION -ARG PHP_TEST_VERSION -ARG PHP_DEPS_VERSION -ARG WP_VERSION - -# Composer on correct PHP version -FROM php:${PHP_DEPS_VERSION}-cli as composer - -ARG BUILD_ROOT_PATH - -RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" -RUN echo 'memory_limit = 128M' >> /usr/local/etc/php/conf.d/docker-php-memlimit.ini; - -RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \ - php composer-setup.php --install-dir=/usr/bin --filename=composer --version=1.10.22 && \ - php -r "unlink('composer-setup.php');" - -RUN apt-get update -RUN apt-get install -y \ - ssh \ - zip \ - unzip \ - curl \ - git \ - # These are for extensions - zlib1g-dev \ - libicu-dev - -RUN mkdir -p ~/.ssh -RUN ssh-keyscan -H github.com >> ~/.ssh/known_hosts - -RUN docker-php-ext-install intl json && \ - docker-php-ext-enable intl json - -WORKDIR ${BUILD_ROOT_PATH} - -# Composer on correct PHP version -FROM php:${PHP_BUILD_VERSION}-cli as build - -ARG BUILD_ROOT_PATH - -RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" -RUN echo 'memory_limit = 256M' >> /usr/local/etc/php/conf.d/docker-php-memlimit.ini; - -RUN apt-get update -RUN apt-get install -y gnupg apt-transport-https ca-certificates - -RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \ - echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list - -RUN apt-get update -RUN apt-get install -y \ - ssh \ - zip \ - unzip \ - curl \ - git \ - yarn \ - ca-certificates \ - # These are for extensions - zlib1g-dev \ - libicu-dev \ - g++ \ - # For installing things from URL - wget - -# https://github.com/nodesource/distributions/issues/1266 -RUN update-ca-certificates - -RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \ - php composer-setup.php --install-dir=/usr/bin --filename=composer --version=1.10.22 && \ - php -r "unlink('composer-setup.php');" - -RUN mkdir -p ~/.ssh -RUN ssh-keyscan -H github.com >> ~/.ssh/known_hosts - -RUN docker-php-ext-install intl json && \ - docker-php-ext-enable intl json - -# Install Node -RUN curl -sL https://deb.nodesource.com/setup_16.x | bash - -RUN apt-get install -y nodejs - -WORKDIR ${BUILD_ROOT_PATH} -COPY . ./ - - -FROM php:${PHP_TEST_VERSION}-cli as test - -ARG BUILD_ROOT_PATH - -RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" -RUN apt-get update -RUN apt-get install -y \ - # These are for extensions - zlib1g-dev \ - libicu-dev \ - g++ -RUN pecl install xdebug-2.6.1 -RUN docker-php-ext-install pcntl posix intl json - -WORKDIR ${BUILD_ROOT_PATH} -COPY --from=build ${BUILD_ROOT_PATH} ${BUILD_ROOT_PATH} - - -# Install PHP dev dependencies -FROM build as vendor-dev - -ARG BUILD_ROOT_PATH - -WORKDIR ${BUILD_ROOT_PATH} -COPY --from=build ${BUILD_ROOT_PATH} ${BUILD_ROOT_PATH} - -RUN composer config discard-changes true && composer install --no-dev --no-scripts - - -# WordPress for development -FROM wordpress:${WP_VERSION}-php${PHP_TEST_VERSION}-apache as dev - -ARG PROJECT_MOUNT_PATH -ARG BUILD_ROOT_PATH -ARG DOCROOT_PATH -ARG WP_DOMAIN - -COPY docker/wp-entrypoint.sh /usr/local/bin -COPY docker/wait-for-it.sh /usr/local/bin - -RUN chmod +x /usr/local/bin/wp-entrypoint.sh /usr/local/bin/wait-for-it.sh - -RUN curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar \ - && chmod +x wp-cli.phar \ - && mv wp-cli.phar /usr/local/bin/wp -RUN sed -i "s|#ServerName www.example.com|ServerName ${WP_DOMAIN}|" /etc/apache2/sites-available/*.conf -RUN sed -i "s|#ServerName www.example.com|ServerName ${WP_DOMAIN}|" /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf - - -RUN apt-get update -RUN apt-get install -y \ - zip \ - unzip \ - curl \ - # These are for extensions - zlib1g-dev \ - libicu-dev \ - g++ - -RUN docker-php-ext-install pcntl posix intl json - -RUN apt-get remove -y \ - # These are for extensions - zlib1g-dev \ - libicu-dev \ - g++ - -WORKDIR ${DOCROOT_PATH} -COPY --from=vendor-dev ${BUILD_ROOT_PATH} ${PROJECT_MOUNT_PATH} - -ENTRYPOINT ["wp-entrypoint.sh"] -CMD ["apache2-foreground"] diff --git a/docker/wait-for-it.sh b/docker/wait-for-it.sh deleted file mode 100644 index 5e8679e54..000000000 --- a/docker/wait-for-it.sh +++ /dev/null @@ -1,182 +0,0 @@ -#!/usr/bin/env bash -# Use this script to test if a given TCP host/port are available - -WAITFORIT_cmdname=${0##*/} - -echoerr() { if [[ $WAITFORIT_QUIET -ne 1 ]]; then echo "$@" 1>&2; fi } - -usage() -{ - cat << USAGE >&2 -Usage: - $WAITFORIT_cmdname host:port [-s] [-t timeout] [-- command args] - -h HOST | --host=HOST Host or IP under test - -p PORT | --port=PORT TCP port under test - Alternatively, you specify the host and port as host:port - -s | --strict Only execute subcommand if the test succeeds - -q | --quiet Don't output any status messages - -t TIMEOUT | --timeout=TIMEOUT - Timeout in seconds, zero for no timeout - -- COMMAND ARGS Execute command with args after the test finishes -USAGE - exit 1 -} - -wait_for() -{ - if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then - echoerr "$WAITFORIT_cmdname: waiting $WAITFORIT_TIMEOUT seconds for $WAITFORIT_HOST:$WAITFORIT_PORT" - else - echoerr "$WAITFORIT_cmdname: waiting for $WAITFORIT_HOST:$WAITFORIT_PORT without a timeout" - fi - WAITFORIT_start_ts=$(date +%s) - while : - do - if [[ $WAITFORIT_ISBUSY -eq 1 ]]; then - nc -z $WAITFORIT_HOST $WAITFORIT_PORT - WAITFORIT_result=$? - else - (echo > /dev/tcp/$WAITFORIT_HOST/$WAITFORIT_PORT) >/dev/null 2>&1 - WAITFORIT_result=$? - fi - if [[ $WAITFORIT_result -eq 0 ]]; then - WAITFORIT_end_ts=$(date +%s) - echoerr "$WAITFORIT_cmdname: $WAITFORIT_HOST:$WAITFORIT_PORT is available after $((WAITFORIT_end_ts - WAITFORIT_start_ts)) seconds" - break - fi - sleep 1 - done - return $WAITFORIT_result -} - -wait_for_wrapper() -{ - # In order to support SIGINT during timeout: http://unix.stackexchange.com/a/57692 - if [[ $WAITFORIT_QUIET -eq 1 ]]; then - timeout $WAITFORIT_BUSYTIMEFLAG $WAITFORIT_TIMEOUT $0 --quiet --child --host=$WAITFORIT_HOST --port=$WAITFORIT_PORT --timeout=$WAITFORIT_TIMEOUT & - else - timeout $WAITFORIT_BUSYTIMEFLAG $WAITFORIT_TIMEOUT $0 --child --host=$WAITFORIT_HOST --port=$WAITFORIT_PORT --timeout=$WAITFORIT_TIMEOUT & - fi - WAITFORIT_PID=$! - trap "kill -INT -$WAITFORIT_PID" INT - wait $WAITFORIT_PID - WAITFORIT_RESULT=$? - if [[ $WAITFORIT_RESULT -ne 0 ]]; then - echoerr "$WAITFORIT_cmdname: timeout occurred after waiting $WAITFORIT_TIMEOUT seconds for $WAITFORIT_HOST:$WAITFORIT_PORT" - fi - return $WAITFORIT_RESULT -} - -# process arguments -while [[ $# -gt 0 ]] -do - case "$1" in - *:* ) - WAITFORIT_hostport=(${1//:/ }) - WAITFORIT_HOST=${WAITFORIT_hostport[0]} - WAITFORIT_PORT=${WAITFORIT_hostport[1]} - shift 1 - ;; - --child) - WAITFORIT_CHILD=1 - shift 1 - ;; - -q | --quiet) - WAITFORIT_QUIET=1 - shift 1 - ;; - -s | --strict) - WAITFORIT_STRICT=1 - shift 1 - ;; - -h) - WAITFORIT_HOST="$2" - if [[ $WAITFORIT_HOST == "" ]]; then break; fi - shift 2 - ;; - --host=*) - WAITFORIT_HOST="${1#*=}" - shift 1 - ;; - -p) - WAITFORIT_PORT="$2" - if [[ $WAITFORIT_PORT == "" ]]; then break; fi - shift 2 - ;; - --port=*) - WAITFORIT_PORT="${1#*=}" - shift 1 - ;; - -t) - WAITFORIT_TIMEOUT="$2" - if [[ $WAITFORIT_TIMEOUT == "" ]]; then break; fi - shift 2 - ;; - --timeout=*) - WAITFORIT_TIMEOUT="${1#*=}" - shift 1 - ;; - --) - shift - WAITFORIT_CLI=("$@") - break - ;; - --help) - usage - ;; - *) - echoerr "Unknown argument: $1" - usage - ;; - esac -done - -if [[ "$WAITFORIT_HOST" == "" || "$WAITFORIT_PORT" == "" ]]; then - echoerr "Error: you need to provide a host and port to test." - usage -fi - -WAITFORIT_TIMEOUT=${WAITFORIT_TIMEOUT:-15} -WAITFORIT_STRICT=${WAITFORIT_STRICT:-0} -WAITFORIT_CHILD=${WAITFORIT_CHILD:-0} -WAITFORIT_QUIET=${WAITFORIT_QUIET:-0} - -# Check to see if timeout is from busybox? -WAITFORIT_TIMEOUT_PATH=$(type -p timeout) -WAITFORIT_TIMEOUT_PATH=$(realpath $WAITFORIT_TIMEOUT_PATH 2>/dev/null || readlink -f $WAITFORIT_TIMEOUT_PATH) - -WAITFORIT_BUSYTIMEFLAG="" -if [[ $WAITFORIT_TIMEOUT_PATH =~ "busybox" ]]; then - WAITFORIT_ISBUSY=1 - # Check if busybox timeout uses -t flag - # (recent Alpine versions don't support -t anymore) - if timeout &>/dev/stdout | grep -q -e '-t '; then - WAITFORIT_BUSYTIMEFLAG="-t" - fi -else - WAITFORIT_ISBUSY=0 -fi - -if [[ $WAITFORIT_CHILD -gt 0 ]]; then - wait_for - WAITFORIT_RESULT=$? - exit $WAITFORIT_RESULT -else - if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then - wait_for_wrapper - WAITFORIT_RESULT=$? - else - wait_for - WAITFORIT_RESULT=$? - fi -fi - -if [[ $WAITFORIT_CLI != "" ]]; then - if [[ $WAITFORIT_RESULT -ne 0 && $WAITFORIT_STRICT -eq 1 ]]; then - echoerr "$WAITFORIT_cmdname: strict mode, refusing to execute subprocess" - exit $WAITFORIT_RESULT - fi - exec "${WAITFORIT_CLI[@]}" -else - exit $WAITFORIT_RESULT -fi diff --git a/docker/wp-entrypoint.sh b/docker/wp-entrypoint.sh deleted file mode 100644 index 0b522cf07..000000000 --- a/docker/wp-entrypoint.sh +++ /dev/null @@ -1,45 +0,0 @@ -#!/bin/bash -set -e - -if wait-for-it.sh "${WORDPRESS_DB_HOST}" -t 60; then - docker-entrypoint.sh apache2 -v - - wp core multisite-install \ - --allow-root \ - --title="${WP_TITLE}" \ - --admin_user="${ADMIN_USER}" \ - --admin_password="${ADMIN_PASS}" \ - --url="${WP_DOMAIN}" \ - --admin_email="${ADMIN_EMAIL}" \ - --skip-email - - cat << 'EOF' > "${DOCROOT_PATH}/.htaccess" -RewriteEngine On -RewriteBase / -RewriteRule ^index\.php$ - [L] - -RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L] - -RewriteCond %{REQUEST_FILENAME} -f [OR] -RewriteCond %{REQUEST_FILENAME} -d -RewriteRule ^ - [L] -RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L] -RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L] -RewriteRule . index.php [L] -EOF - - wp site create \ - --allow-root \ - --slug="de" \ - || true # allow failure if already exists - - wp plugin is-installed akismet --allow-root && wp plugin uninstall akismet --allow-root --path="${DOCROOT_PATH}" - wp plugin is-installed hello --allow-root && wp plugin uninstall hello --allow-root --path="${DOCROOT_PATH}" - - wp plugin install woocommerce --version="${WC_VERSION}" --allow-root --path="${DOCROOT_PATH}" \ - && wp plugin activate woocommerce --network --allow-root --path="${DOCROOT_PATH}" - - wp plugin activate "${PLUGIN_NAME}" --network --allow-root --path="${DOCROOT_PATH}" -fi - -exec "$@" diff --git a/package.json b/package.json index d687a18f9..435121535 100644 --- a/package.json +++ b/package.json @@ -18,20 +18,6 @@ "build:modules": "yarn run build:modules:ppcp-button && yarn build:modules:ppcp-wc-gateway && yarn build:modules:ppcp-webhooks && yarn build:modules:ppcp-vaulting", "build:dev": "yarn run install:modules && yarn run build:modules", - "docker:build": "docker-compose build", - "docker:start": "docker-compose up -d wp_dev", - "docker:stop": "docker-compose down", - "docker:destroy": "docker-compose down -v", - "docker:logs": "docker-compose logs", - "docker:shell": "docker-compose run --rm wp_dev bash", - "docker:install": "docker-compose run --rm composer composer install && yarn run docker:build-js", - "docker:build-js": "docker-compose run --rm build yarn run build:dev", - "docker:composer-update": "docker-compose run --rm composer composer update && docker-compose run --rm composer composer update --lock", - "docker:test": "docker-compose run --rm test vendor/bin/phpunit", - "docker:lint": "docker-compose run --rm test sh -c 'vendor/bin/phpcs --parallel=8 -s && vendor/bin/psalm --show-info=false --threads=8 --diff'", - "docker:fix-lint": "docker-compose run --rm test vendor/bin/phpcbf", - "docker:build-package": "docker-compose run --rm build yarn run build", - "ddev:setup": "ddev start && ddev orchestrate", "ddev:start": "ddev start", "ddev:stop": "ddev stop", @@ -48,13 +34,12 @@ "ddev:xdebug-off": "ddev xdebug", "ddev:build-package": "ddev yarn build", - "prebuild": "rm -rf ./vendor && find . -name 'node_modules' -type d -maxdepth 3 -exec rm -rf {} +", "build": "composer install --no-dev && yarn run build:dev && yarn run archive", "prearchive": "rm -rf $npm_package_name.zip", "archive": "zip -r $npm_package_name.zip . -x **.git/\\* **node_modules/\\*", "postarchive": "yarn run archive:cleanup && rm -rf $npm_package_name && unzip $npm_package_name.zip -d $npm_package_name && rm $npm_package_name.zip && zip -r $npm_package_name.zip $npm_package_name && rm -rf $npm_package_name", - "archive:cleanup": "zip -d $npm_package_name.zip .env* docker/\\* .ddev/\\* docker-compose.yml .editorconfig tests/\\* .github/\\* .psalm/\\* wordpress_org_assets/\\* \\*.DS_Store README.md .gitattributes .gitignore .travis.yml composer.json composer.lock package.json package-lock.json patchwork.json yarn.lock phpunit.xml.dist .phpunit.result.cache phpcs.xml.dist modules/ppcp-button/.babelrc modules/ppcp-button/package.json modules/ppcp-button/webpack.config.js modules/ppcp-button/yarn.lock vendor/\\*/.idea/\\* vendor/\\*/.gitignore vendor/\\*/.gitattributes vendor/\\*/.travis.yml" + "archive:cleanup": "zip -d $npm_package_name.zip .env* .ddev/\\* .editorconfig tests/\\* .github/\\* .psalm/\\* wordpress_org_assets/\\* \\*.DS_Store README.md .gitattributes .gitignore .travis.yml composer.json composer.lock package.json package-lock.json patchwork.json yarn.lock phpunit.xml.dist .phpunit.result.cache phpcs.xml.dist modules/ppcp-button/.babelrc modules/ppcp-button/package.json modules/ppcp-button/webpack.config.js modules/ppcp-button/yarn.lock vendor/\\*/.idea/\\* vendor/\\*/.gitignore vendor/\\*/.gitattributes vendor/\\*/.travis.yml" }, "config": { "wp_org_slug": "woocommerce-paypal-payments"