mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-08-31 06:52:50 +08:00
Merge pull request #634 from woocommerce/ddev
Use DDEV instead of custom Docker setup
This commit is contained in:
commit
f78dfac648
20 changed files with 496 additions and 30 deletions
28
.ddev/bin/share
Executable file
28
.ddev/bin/share
Executable file
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
PROJECT_HOST=$(ddev wp option get home | tr -d '\r' | awk -F'^http[s]?://' '{print $2}')
|
||||
ddev share >/dev/null &
|
||||
NGROK_PID=$!
|
||||
ngrok-url(){
|
||||
curl -s localhost:4040/api/tunnels | jq -r .tunnels[0].public_url | awk -F'^http[s]?://' '{print $2}'
|
||||
}
|
||||
wp-replace(){
|
||||
echo "Replacing ${1} with ${2}"
|
||||
ddev wp search-replace "${1}" "${2}" --all-tables --precise --recurse-objects
|
||||
}
|
||||
kill-ngrok(){
|
||||
echo "Killing ngrok process ${NGROK_PID}"
|
||||
pkill "${NGROK_PID}"
|
||||
wp-replace "${NGROK_HOST}" "${PROJECT_HOST}"
|
||||
}
|
||||
echo "ngrok started with PID ${NGROK_PID}"
|
||||
|
||||
echo "Waiting a few seconds for the service to come up"
|
||||
sleep 3
|
||||
NGROK_HOST=$(ngrok-url)
|
||||
wp-replace "${PROJECT_HOST}" "${NGROK_HOST}"
|
||||
|
||||
echo "Your site is now reachable at https://${NGROK_HOST}"
|
||||
echo "ctrl-c to stop sharing and revert database changes"
|
||||
trap kill-ngrok INT
|
||||
wait -f "${NGROK_PID}"
|
42
.ddev/commands/web/orchestrate
Executable file
42
.ddev/commands/web/orchestrate
Executable file
|
@ -0,0 +1,42 @@
|
|||
#!/bin/bash
|
||||
set -x
|
||||
## Description: Set up the development environment
|
||||
## Usage: orchestrate
|
||||
## Example: "ddev orchestrate"
|
||||
|
||||
mkdir -p "${DDEV_DOCROOT}"
|
||||
pushd "${DDEV_DOCROOT}"
|
||||
PLUGIN_FOLDER="${DDEV_DOCROOT}/wp-content/plugins/${PLUGIN_NAME:-$DDEV_PROJECT}"
|
||||
VALID_ARGS=$(getopt -o fp: --long force,plugin: -- "$@")
|
||||
if [[ $? -ne 0 ]]; then
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
eval set -- "$VALID_ARGS"
|
||||
while [ : ]; do
|
||||
case "$1" in
|
||||
-f | --force)
|
||||
echo "Removing WordPress installation"
|
||||
shift
|
||||
export RECREATE_ENV=1;
|
||||
popd
|
||||
find "${DDEV_DOCROOT}" -mindepth 1 ! -regex "^${PLUGIN_FOLDER}\(/.*\)?" -delete
|
||||
pushd "${DDEV_DOCROOT}"
|
||||
;;
|
||||
-p | --plugin)
|
||||
echo "Processing 'plugin' option. Input argument is '$2'"
|
||||
shift 2
|
||||
;;
|
||||
--) shift;
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Execute all fragments from orchestrate.d
|
||||
if [ -d "${0}.d" ]; then
|
||||
for FN in ${0}.d/*.sh ; do
|
||||
echo $FN
|
||||
source "${FN}"
|
||||
done
|
||||
fi
|
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash
|
||||
|
||||
if ! wp core download; then
|
||||
echo 'WordPress is already installed.'
|
||||
exit
|
||||
fi
|
6
.ddev/commands/web/orchestrate.d/01_gitignore.sh
Normal file
6
.ddev/commands/web/orchestrate.d/01_gitignore.sh
Normal file
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash
|
||||
|
||||
cat << 'EOF' > ".gitignore"
|
||||
# ignores everything in the docroot (docroot in config.yaml), this path may not be included in the standard .ddev/.gitignore.
|
||||
*
|
||||
EOF
|
22
.ddev/commands/web/orchestrate.d/05_wp_config.sh
Normal file
22
.ddev/commands/web/orchestrate.d/05_wp_config.sh
Normal file
|
@ -0,0 +1,22 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Create wp-config.php
|
||||
# the PHP snippet avoids some notices during CLI calls
|
||||
# https://make.wordpress.org/cli/handbook/guides/common-issues/#php-notice-undefined-index-on-_server-superglobal
|
||||
printf '
|
||||
if ( defined( "WP_CLI" ) && WP_CLI && ! isset( $_SERVER["HTTP_HOST"] ) ) {
|
||||
$_SERVER["HTTP_HOST"] = "%s";
|
||||
}
|
||||
' "${DDEV_HOSTNAME}" | wp config create \
|
||||
--dbname=db \
|
||||
--dbuser=db \
|
||||
--dbpass=db \
|
||||
--dbhost=db \
|
||||
--force \
|
||||
--extra-php
|
||||
|
||||
wp config set WP_DEBUG true --raw
|
||||
wp config set WP_DEBUG_DISPLAY true --raw
|
||||
wp config set WP_DEBUG_LOG true --raw
|
||||
wp config set WP_SITEURL '(isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] ? "https://" : "http://") . $_SERVER["HTTP_HOST"]' --raw
|
||||
wp config set WP_HOME '(isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] ? "https://" : "http://") . $_SERVER["HTTP_HOST"]' --raw
|
32
.ddev/commands/web/orchestrate.d/10_wp_install.sh
Normal file
32
.ddev/commands/web/orchestrate.d/10_wp_install.sh
Normal file
|
@ -0,0 +1,32 @@
|
|||
#!/bin/bash
|
||||
|
||||
if [ ! -z "${RECREATE_ENV}" ]; then
|
||||
echo "Deleting database before creating a new one"
|
||||
wp db clean --yes
|
||||
fi
|
||||
|
||||
if [ "${WP_MULTISITE}" = "true" ]; then
|
||||
wp core multisite-install \
|
||||
--title="${WP_TITLE}" \
|
||||
--admin_user="${ADMIN_USER}" \
|
||||
--admin_password="${ADMIN_PASS}" \
|
||||
--url="${DDEV_PRIMARY_URL}" \
|
||||
--admin_email="${ADMIN_EMAIL}" \
|
||||
--skip-email
|
||||
|
||||
readarray -d , -t slugs <<< "${WP_MULTISITE_SLUGS},"; unset "slugs[-1]";
|
||||
for slug in "${slugs[@]}"; do
|
||||
if [ ! -z "${slug}" ]; then
|
||||
wp site create --slug="${slug}"
|
||||
fi
|
||||
done
|
||||
|
||||
else
|
||||
wp core install \
|
||||
--title="${WP_TITLE}" \
|
||||
--admin_user="${ADMIN_USER}" \
|
||||
--admin_password="${ADMIN_PASS}" \
|
||||
--url="${DDEV_PRIMARY_URL}" \
|
||||
--admin_email="${ADMIN_EMAIL}" \
|
||||
--skip-email
|
||||
fi
|
16
.ddev/commands/web/orchestrate.d/11_htaccess.sh
Normal file
16
.ddev/commands/web/orchestrate.d/11_htaccess.sh
Normal file
|
@ -0,0 +1,16 @@
|
|||
#!/bin/bash
|
||||
|
||||
cat << 'EOF' >> ".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
|
|
@ -0,0 +1,4 @@
|
|||
#!/bin/bash
|
||||
|
||||
wp plugin is-installed akismet && wp plugin uninstall akismet
|
||||
wp plugin is-installed hello && wp plugin uninstall hello
|
|
@ -0,0 +1,6 @@
|
|||
#!/bin/bash
|
||||
|
||||
popd
|
||||
|
||||
composer install
|
||||
yarn run build:dev
|
10
.ddev/commands/web/orchestrate.d/40_setup_and_activate.sh
Normal file
10
.ddev/commands/web/orchestrate.d/40_setup_and_activate.sh
Normal file
|
@ -0,0 +1,10 @@
|
|||
#!/bin/bash
|
||||
|
||||
pushd "${DDEV_DOCROOT}"
|
||||
|
||||
flags=""
|
||||
if [ "${WP_MULTISITE}" = "true" ]; then
|
||||
flags+=" --network"
|
||||
fi
|
||||
|
||||
wp plugin activate "${PLUGIN_NAME:-$DDEV_PROJECT}" $flags
|
9
.ddev/commands/web/orchestrate.d/50_woocommerce.sh
Normal file
9
.ddev/commands/web/orchestrate.d/50_woocommerce.sh
Normal file
|
@ -0,0 +1,9 @@
|
|||
#!/bin/bash
|
||||
|
||||
flags=""
|
||||
if [ "${WP_MULTISITE}" = "true" ]; then
|
||||
flags+=" --network"
|
||||
fi
|
||||
|
||||
wp plugin install woocommerce --version="${WC_VERSION}"
|
||||
wp plugin activate woocommerce $flags
|
4
.ddev/commands/web/orchestrate.d/60_flush_rewrites.sh
Normal file
4
.ddev/commands/web/orchestrate.d/60_flush_rewrites.sh
Normal file
|
@ -0,0 +1,4 @@
|
|||
#!/bin/bash
|
||||
|
||||
wp rewrite structure '/%postname%'
|
||||
wp rewrite flush
|
3
.ddev/commands/web/orchestrate.d/70_themes.sh
Normal file
3
.ddev/commands/web/orchestrate.d/70_themes.sh
Normal file
|
@ -0,0 +1,3 @@
|
|||
#!/bin/bash
|
||||
|
||||
wp theme install storefront --activate
|
7
.ddev/commands/web/wp
Executable file
7
.ddev/commands/web/wp
Executable file
|
@ -0,0 +1,7 @@
|
|||
#!/bin/bash
|
||||
## Description: Run WordPress CLI inside the web container. DDEV core only provides this for the "wordpress" project type for some reason
|
||||
## Usage: wp [flags] [args]
|
||||
## Example: "ddev wp core version" or "ddev wp plugin install user-switching --activate"
|
||||
## ProjectTypes: php
|
||||
|
||||
wp "$@" --path=.ddev/wordpress
|
206
.ddev/config.yaml
Normal file
206
.ddev/config.yaml
Normal file
|
@ -0,0 +1,206 @@
|
|||
name: woocommerce-paypal-payments
|
||||
type: php
|
||||
docroot: .ddev/wordpress
|
||||
php_version: "7.1"
|
||||
webserver_type: apache-fpm
|
||||
router_http_port: "80"
|
||||
router_https_port: "443"
|
||||
xdebug_enabled: false
|
||||
additional_hostnames: ['wc-pp']
|
||||
additional_fqdns: []
|
||||
mariadb_version: "10.3"
|
||||
mysql_version: ""
|
||||
nfs_mount_enabled: false
|
||||
mutagen_enabled: false
|
||||
use_dns_when_possible: true
|
||||
composer_version: "1"
|
||||
web_environment:
|
||||
- WP_VERSION=5.9.3
|
||||
- WP_LOCALE=en_US
|
||||
- WP_TITLE=WooCommerce PayPal Payments
|
||||
- WP_MULTISITE=true
|
||||
- WP_MULTISITE_SLUGS=de,es
|
||||
- ADMIN_USER=admin
|
||||
- ADMIN_PASS=admin
|
||||
- ADMIN_EMAIL=admin@example.com
|
||||
- WC_VERSION=6.1.0
|
||||
|
||||
# Key features of ddev's config.yaml:
|
||||
|
||||
# name: <projectname> # Name of the project, automatically provides
|
||||
# http://projectname.ddev.site and https://projectname.ddev.site
|
||||
|
||||
# type: <projecttype> # drupal6/7/8, backdrop, typo3, wordpress, php
|
||||
|
||||
# docroot: <relative_path> # Relative path to the directory containing index.php.
|
||||
|
||||
# php_version: "7.4" # PHP version to use, "5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0", "8.1"
|
||||
|
||||
# You can explicitly specify the webimage, dbimage, dbaimage lines but this
|
||||
# is not recommended, as the images are often closely tied to ddev's' behavior,
|
||||
# so this can break upgrades.
|
||||
|
||||
# webimage: <docker_image> # nginx/php docker image.
|
||||
# dbimage: <docker_image> # mariadb docker image.
|
||||
# dbaimage: <docker_image>
|
||||
|
||||
# mariadb_version and mysql_version
|
||||
# ddev can use many versions of mariadb and mysql
|
||||
# However these directives are mutually exclusive
|
||||
# mariadb_version: 10.2
|
||||
# mysql_version: 8.0
|
||||
|
||||
# router_http_port: <port> # Port to be used for http (defaults to port 80)
|
||||
# router_https_port: <port> # Port for https (defaults to 443)
|
||||
|
||||
# xdebug_enabled: false # Set to true to enable xdebug and "ddev start" or "ddev restart"
|
||||
# Note that for most people the commands
|
||||
# "ddev xdebug" to enable xdebug and "ddev xdebug off" to disable it work better,
|
||||
# as leaving xdebug enabled all the time is a big performance hit.
|
||||
|
||||
# xhprof_enabled: false # Set to true to enable xhprof and "ddev start" or "ddev restart"
|
||||
# Note that for most people the commands
|
||||
# "ddev xhprof" to enable xhprof and "ddev xhprof off" to disable it work better,
|
||||
# as leaving xhprof enabled all the time is a big performance hit.
|
||||
|
||||
# webserver_type: nginx-fpm # or apache-fpm
|
||||
|
||||
# timezone: Europe/Berlin
|
||||
# This is the timezone used in the containers and by PHP;
|
||||
# it can be set to any valid timezone,
|
||||
# see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
|
||||
# For example Europe/Dublin or MST7MDT
|
||||
|
||||
# composer_version: "2"
|
||||
# if composer_version:"2" it will use the most recent composer v2
|
||||
# It can also be set to "1", to get most recent composer v1
|
||||
# or "" for the default v2 created at release time.
|
||||
# It can be set to any existing specific composer version.
|
||||
# After first project 'ddev start' this will not be updated until it changes
|
||||
|
||||
# additional_hostnames:
|
||||
# - somename
|
||||
# - someothername
|
||||
# would provide http and https URLs for "somename.ddev.site"
|
||||
# and "someothername.ddev.site".
|
||||
|
||||
# additional_fqdns:
|
||||
# - example.com
|
||||
# - sub1.example.com
|
||||
# would provide http and https URLs for "example.com" and "sub1.example.com"
|
||||
# Please take care with this because it can cause great confusion.
|
||||
|
||||
# upload_dir: custom/upload/dir
|
||||
# would set the destination path for ddev import-files to <docroot>/custom/upload/dir
|
||||
|
||||
# working_dir:
|
||||
# web: /var/www/html
|
||||
# db: /home
|
||||
# would set the default working directory for the web and db services.
|
||||
# These values specify the destination directory for ddev ssh and the
|
||||
# directory in which commands passed into ddev exec are run.
|
||||
|
||||
# omit_containers: [db, dba, ddev-ssh-agent]
|
||||
# Currently only these containers are supported. Some containers can also be
|
||||
# omitted globally in the ~/.ddev/global_config.yaml. Note that if you omit
|
||||
# the "db" container, several standard features of ddev that access the
|
||||
# database container will be unusable. In the global configuration it is also
|
||||
# possible to omit ddev-router, but not here.
|
||||
|
||||
# nfs_mount_enabled: false
|
||||
# Great performance improvement but requires host configuration first.
|
||||
# See https://ddev.readthedocs.io/en/stable/users/performance/#using-nfs-to-mount-the-project-into-the-container
|
||||
|
||||
# mutagen_enabled: false
|
||||
# Experimental performance improvement using mutagen asynchronous updates.
|
||||
# See https://ddev.readthedocs.io/en/latest/users/performance/#using-mutagen
|
||||
|
||||
# fail_on_hook_fail: False
|
||||
# Decide whether 'ddev start' should be interrupted by a failing hook
|
||||
|
||||
# host_https_port: "59002"
|
||||
# The host port binding for https can be explicitly specified. It is
|
||||
# dynamic unless otherwise specified.
|
||||
# This is not used by most people, most people use the *router* instead
|
||||
# of the localhost port.
|
||||
|
||||
# host_webserver_port: "59001"
|
||||
# The host port binding for the ddev-webserver can be explicitly specified. It is
|
||||
# dynamic unless otherwise specified.
|
||||
# This is not used by most people, most people use the *router* instead
|
||||
# of the localhost port.
|
||||
|
||||
# host_db_port: "59002"
|
||||
# The host port binding for the ddev-dbserver can be explicitly specified. It is dynamic
|
||||
# unless explicitly specified.
|
||||
|
||||
# phpmyadmin_port: "8036"
|
||||
# phpmyadmin_https_port: "8037"
|
||||
# The PHPMyAdmin ports can be changed from the default 8036 and 8037
|
||||
|
||||
# host_phpmyadmin_port: "8036"
|
||||
# The phpmyadmin (dba) port is not normally bound on the host at all, instead being routed
|
||||
# through ddev-router, but it can be specified and bound.
|
||||
|
||||
# mailhog_port: "8025"
|
||||
# mailhog_https_port: "8026"
|
||||
# The MailHog ports can be changed from the default 8025 and 8026
|
||||
|
||||
# host_mailhog_port: "8025"
|
||||
# The mailhog port is not normally bound on the host at all, instead being routed
|
||||
# through ddev-router, but it can be bound directly to localhost if specified here.
|
||||
|
||||
# webimage_extra_packages: [php7.4-tidy, php-bcmath]
|
||||
# Extra Debian packages that are needed in the webimage can be added here
|
||||
|
||||
# dbimage_extra_packages: [telnet,netcat]
|
||||
# Extra Debian packages that are needed in the dbimage can be added here
|
||||
|
||||
# use_dns_when_possible: true
|
||||
# If the host has internet access and the domain configured can
|
||||
# successfully be looked up, DNS will be used for hostname resolution
|
||||
# instead of editing /etc/hosts
|
||||
# Defaults to true
|
||||
|
||||
# project_tld: ddev.site
|
||||
# The top-level domain used for project URLs
|
||||
# The default "ddev.site" allows DNS lookup via a wildcard
|
||||
# If you prefer you can change this to "ddev.local" to preserve
|
||||
# pre-v1.9 behavior.
|
||||
|
||||
# ngrok_args: --subdomain mysite --auth username:pass
|
||||
# Provide extra flags to the "ngrok http" command, see
|
||||
# https://ngrok.com/docs#http or run "ngrok http -h"
|
||||
|
||||
# disable_settings_management: false
|
||||
# If true, ddev will not create CMS-specific settings files like
|
||||
# Drupal's settings.php/settings.ddev.php or TYPO3's AdditionalConfiguration.php
|
||||
# In this case the user must provide all such settings.
|
||||
|
||||
# You can inject environment variables into the web container with:
|
||||
# web_environment:
|
||||
# - SOMEENV=somevalue
|
||||
# - SOMEOTHERENV=someothervalue
|
||||
|
||||
# no_project_mount: false
|
||||
# (Experimental) If true, ddev will not mount the project into the web container;
|
||||
# the user is responsible for mounting it manually or via a script.
|
||||
# This is to enable experimentation with alternate file mounting strategies.
|
||||
# For advanced users only!
|
||||
|
||||
# bind_all_interfaces: false
|
||||
# If true, host ports will be bound on all network interfaces,
|
||||
# not just the localhost interface. This means that ports
|
||||
# will be available on the local network if the host firewall
|
||||
# allows it.
|
||||
|
||||
# Many ddev commands can be extended to run tasks before or after the
|
||||
# ddev command is executed, for example "post-start", "post-import-db",
|
||||
# "pre-composer", "post-composer"
|
||||
# See https://ddev.readthedocs.io/en/stable/users/extending-commands/ for more
|
||||
# information on the commands that can be extended and the tasks you can define
|
||||
# for them. Example:
|
||||
#hooks:
|
||||
# Un-comment to emit the WP CLI version after ddev start.
|
||||
# post-start:
|
||||
# - exec: wp cli version
|
5
.ddev/docker-compose.wp-plugin.yaml
Normal file
5
.ddev/docker-compose.wp-plugin.yaml
Normal file
|
@ -0,0 +1,5 @@
|
|||
version: '3.6'
|
||||
services:
|
||||
web:
|
||||
volumes:
|
||||
- ../:/var/www/html/.ddev/wordpress/wp-content/plugins/${DDEV_PROJECT}:ro
|
39
.ddev/homeadditions/.bashrc
Normal file
39
.ddev/homeadditions/.bashrc
Normal file
|
@ -0,0 +1,39 @@
|
|||
source /usr/lib/git-core/git-sh-prompt
|
||||
|
||||
# ignore duplicate commands, ignore commands starting with a space
|
||||
# keep the last 5000 entries
|
||||
export HISTCONTROL=erasedups
|
||||
export HISTSIZE=5000
|
||||
|
||||
# Add global and "project root level" composer executables to the PATH
|
||||
export PATH="$HOME/.composer/vendor/bin:$PATH"
|
||||
export PATH="/var/www/html/vendor/bin:$PATH"
|
||||
|
||||
# append to the history instead of overwriting (good for multiple connections)
|
||||
shopt -s histappend
|
||||
|
||||
export PS1="\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$\[$(tput sgr0)\] "
|
||||
|
||||
export PHP_IDE_CONFIG='serverName=woocommerce-paypal-payments.ddev.site'
|
||||
#export XDEBUG_CONFIG="mode=debug client_host=127.0.0.1 client_port=9003 start_with_request=yes"
|
||||
|
||||
alias ls='ls --group-directories-first'
|
||||
alias cp='cp -aiv'
|
||||
alias grep='grep --color=always'
|
||||
alias tgz='tar -pczf'
|
||||
|
||||
profile(){
|
||||
XDEBUG_MODE=profile "$1"
|
||||
}
|
||||
|
||||
# all files in homeadditions/bashrc.d/*.sh will be
|
||||
# interpreted as shell script so you can use these to
|
||||
# customize your bash
|
||||
if [ -d "${HOME}/bashrc.d" ]; then
|
||||
for FN in ${HOME}/bashrc.d/*.sh ; do
|
||||
source "${FN}"
|
||||
done
|
||||
fi
|
||||
|
||||
cd "${DDEV_DOCROOT}"
|
||||
|
1
.gitattributes
vendored
1
.gitattributes
vendored
|
@ -1,6 +1,7 @@
|
|||
/.github/ export-ignore
|
||||
/.psalm/ export-ignore
|
||||
/docker/ export-ignore
|
||||
/.ddev/ export-ignore
|
||||
/tests/ export-ignore
|
||||
/.idea/ export-ignore
|
||||
.env export-ignore
|
||||
|
|
62
README.md
62
README.md
|
@ -38,38 +38,41 @@ follow these steps:
|
|||
```
|
||||
$ yarn run build
|
||||
```
|
||||
or if using the Docker setup:
|
||||
or if using the DDEV setup:
|
||||
|
||||
```
|
||||
$ yarn run docker:build-package
|
||||
$ yarn run ddev:build-package
|
||||
```
|
||||
|
||||
## Setup
|
||||
|
||||
You can install WooCommerce PayPal Payments locally using the dev environment of your preference, or you can use the Docker environment which includes WP, WC and all developments tools.
|
||||
You can install WooCommerce PayPal Payments locally using the dev environment of your preference, or you can use the DDEV setup provided in this repository which includes WP, WC and all developments tools.
|
||||
|
||||
To set up the Docker environment, follow these steps:
|
||||
To set up the DDEV environment, follow these steps:
|
||||
|
||||
0. Install Docker and Docker Compose.
|
||||
1. `$ cp .env.example .env` and edit the configuration in the `.env` file if needed.
|
||||
2. `$ yarn run docker:build` (or copy the commands from [package.json](/package.json) if you do not have `yarn`).
|
||||
3. `$ yarn run docker:install`
|
||||
4. `$ yarn run docker:start`
|
||||
5. Add `127.0.0.1 wc-pp.myhost` to your `hosts` file and open http://wc-pp.myhost (the default value of `WP_DOMAIN` in `.env`).
|
||||
0. Install Docker and [DDEV](https://ddev.readthedocs.io/en/stable/).
|
||||
1. Edit the configuration in the [`.ddev/config.yml`](.ddev/config.yaml) file if needed.
|
||||
2. `$ ddev start`
|
||||
3. `$ ddev orchestrate` to install WP/WC.
|
||||
4. Open https://wc-pp.ddev.site
|
||||
|
||||
### Running tests in the Docker environment
|
||||
Use `$ ddev orchestrate -f` for reinstalattion (will destroy all site data).
|
||||
You may also need `$ ddev restart` to apply the config changes.
|
||||
|
||||
### Running tests and other tasks in the DDEV environment
|
||||
|
||||
Tests and code style:
|
||||
- `$ yarn run docker:test`
|
||||
- `$ yarn run docker:lint`
|
||||
|
||||
After some changes in `.env` (such as PHP, WP versions) you may need to rebuild the Docker image:
|
||||
|
||||
1. `$ yarn run docker:destroy` (all data will be lost)
|
||||
2. `$ yarn run docker:build`
|
||||
- `$ yarn ddev:test`
|
||||
- `$ yarn ddev:lint`
|
||||
- `$ yarn ddev:fix-lint` - PHPCBF to fix basic code style issued
|
||||
|
||||
See [package.json](/package.json) for other useful commands.
|
||||
|
||||
For debugging, see [the DDEV docs](https://ddev.readthedocs.io/en/stable/users/step-debugging/).
|
||||
Enable xdebug via `$ ddev xdebug`, and press `Start Listening for PHP Debug Connections` in PHPStorm.
|
||||
After creating the server in the PHPStorm dialog, you need to set the local project path for the server plugin path.
|
||||
It should look [like this](https://i.imgur.com/ofsF1Mc.png).
|
||||
|
||||
## Test account setup
|
||||
|
||||
You will need a PayPal sandbox merchant and customer accounts to configure the plugin and make test purchases with it.
|
||||
|
@ -82,20 +85,21 @@ For testing webhooks locally, follow these steps to set up ngrok:
|
|||
|
||||
0. Install [ngrok](https://ngrok.com/).
|
||||
|
||||
1. Run
|
||||
```
|
||||
ngrok http -host-header=rewrite wc-pp.myhost
|
||||
```
|
||||
1.
|
||||
- If using DDEV, run our wrapper Bash script which will start `ddev share` and replace the URLs in the WP database:
|
||||
```
|
||||
$ .ddev/bin/share
|
||||
```
|
||||
|
||||
2. In your environment variables (accessible to the web server), add `NGROK_HOST` with the host that you got from `ngrok`, like `abcd1234.ngrok.io`.
|
||||
|
||||
- For the Docker environment: set `NGROK_HOST` in the `.env` file and restart the web server. (`yarn run docker:stop && yarn run docker:start`)
|
||||
|
||||
3. Complete onboarding or resubscribe webhooks on the Webhooks Status page.
|
||||
|
||||
Currently, ngrok is used only for the webhook listening URL.
|
||||
- For other environments, run
|
||||
```
|
||||
$ ngrok http -host-header=rewrite wc-pp.myhost
|
||||
```
|
||||
and in your environment variables (accessible to the web server) add `NGROK_HOST` with the host that you got from `ngrok`, like `abcd1234.ngrok.io`. ngrok will be used only for the webhook listening URL.
|
||||
The URLs displayed on the WordPress pages, used in redirects, etc. will still remain local.
|
||||
|
||||
2. Complete onboarding or resubscribe webhooks on the Webhooks Status page.
|
||||
|
||||
## License
|
||||
|
||||
[GPL-2.0 License](LICENSE)
|
||||
|
|
18
package.json
18
package.json
|
@ -32,13 +32,29 @@
|
|||
"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",
|
||||
"ddev:reset": "ddev orchestrate -f",
|
||||
"ddev:install": "ddev composer install && yarn run ddev:build-js",
|
||||
"ddev:build-js": "ddev yarn build:dev",
|
||||
"ddev:composer-update": "ddev composer update && ddev composer update --lock",
|
||||
"ddev:test": "ddev exec phpunit",
|
||||
"ddev:lint": "yarn ddev:phpcs && yarn ddev:psalm",
|
||||
"ddev:phpcs": "ddev exec phpcs --parallel=8 -s",
|
||||
"ddev:psalm": "ddev exec psalm --show-info=false --threads=8 --diff",
|
||||
"ddev:fix-lint": "ddev exec phpcbf",
|
||||
"ddev:xdebug-on": "ddev xdebug",
|
||||
"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/\\* 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* 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"
|
||||
},
|
||||
"config": {
|
||||
"wp_org_slug": "woocommerce-paypal-payments"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue