@wordpress/env 4.1.2 → 4.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 4.1.3 (2021-11-07)
6
+
7
+ ### Bug Fix
8
+
9
+ - Fix Xdebug installation code to ensure it would fail gracefully
10
+
5
11
  ## 4.0.3 (2021-04-29)
6
12
 
7
13
  ### Bug Fix
package/README.md CHANGED
@@ -509,6 +509,8 @@ This is useful for plugin development when upstream Core changes need to be test
509
509
 
510
510
  This is useful for working on plugins and WordPress Core at the same time.
511
511
 
512
+ If you are running a _build_ of `wordpress-develop`, point `core` to the `build` directory.
513
+
512
514
  ```json
513
515
  {
514
516
  "core": "../wordpress-develop/build",
@@ -516,6 +518,15 @@ This is useful for working on plugins and WordPress Core at the same time.
516
518
  }
517
519
  ```
518
520
 
521
+ If you are running `wordpress-develop` in a dev mode (e.g. the watch command `dev` or the dev build `build:dev`), then point `core` to the `src` directory.
522
+
523
+ ```json
524
+ {
525
+ "core": "../wordpress-develop/src",
526
+ "plugins": [ "." ]
527
+ }
528
+ ```
529
+
519
530
  #### A complete testing environment
520
531
 
521
532
  This is useful for integration testing: that is, testing how old versions of WordPress and different combinations of plugins and themes impact each other.
@@ -98,6 +98,41 @@ module.exports = async function initConfig( {
98
98
  return config;
99
99
  };
100
100
 
101
+ /**
102
+ * Checks the configured PHP version
103
+ * against the minimum version supported by Xdebug
104
+ *
105
+ * @param {WPConfig} config
106
+ * @return {boolean} Whether the PHP version is supported by Xdebug
107
+ */
108
+ function checkXdebugPhpCompatibility( config ) {
109
+ // By default, an undefined phpVersion uses the version on the docker image,
110
+ // which is supported by Xdebug 3.
111
+ const phpCompatibility = true;
112
+
113
+ // If PHP version is defined
114
+ // ensure it meets the Xdebug minimum compatibility requirment
115
+ if ( config.env.development.phpVersion ) {
116
+ const versionTokens = config.env.development.phpVersion.split( '.' );
117
+ const majorVer = parseInt( versionTokens[ 0 ] );
118
+ const minorVer = parseInt( versionTokens[ 1 ] );
119
+
120
+ if ( isNaN( majorVer ) || isNaN( minorVer ) ) {
121
+ throw new Error(
122
+ 'Something went wrong when parsing the PHP version.'
123
+ );
124
+ }
125
+
126
+ // Xdebug 3 supports 7.2 and higher
127
+ // Ensure user has specified a compatible PHP version
128
+ if ( majorVer < 7 || ( majorVer === 7 && minorVer < 2 ) ) {
129
+ throw new Error( 'Cannot use XDebug 3 on PHP < 7.2.' );
130
+ }
131
+ }
132
+
133
+ return phpCompatibility;
134
+ }
135
+
101
136
  /**
102
137
  * Generates the Dockerfile used by wp-env's development instance.
103
138
  *
@@ -107,20 +142,14 @@ module.exports = async function initConfig( {
107
142
  * @return {string} The dockerfile contents.
108
143
  */
109
144
  function dockerFileContents( image, config ) {
110
- let shouldInstallXdebug = true;
111
- // By default, an undefined phpVersion uses the version on the docker image,
112
- // which is supported by Xdebug 3.
113
- if ( config.env.development.phpVersion ) {
114
- const versionTokens = config.env.development.phpVersion.split( '.' );
115
- const majorVersion = parseInt( versionTokens[ 0 ] );
116
- const minorVersion = parseInt( versionTokens[ 1 ] );
117
- if ( isNaN( majorVersion ) || isNaN( minorVersion ) ) {
118
- throw new Error( 'Something went wrong parsing the php version.' );
119
- }
145
+ // Don't install XDebug unless it is explicitly required
146
+ let shouldInstallXdebug = false;
147
+
148
+ if ( config.xdebug !== 'off' ) {
149
+ const usingCompatiblePhp = checkXdebugPhpCompatibility( config );
120
150
 
121
- // Disable Xdebug for PHP < 7.2. Xdebug 3 supports 7.2 and higher.
122
- if ( majorVersion < 7 || ( majorVersion === 7 && minorVersion < 2 ) ) {
123
- shouldInstallXdebug = false;
151
+ if ( usingCompatiblePhp ) {
152
+ shouldInstallXdebug = true;
124
153
  }
125
154
  }
126
155
 
@@ -140,7 +169,8 @@ function installXdebug( enableXdebug ) {
140
169
 
141
170
  return `
142
171
  # Install Xdebug:
143
- RUN pecl install xdebug && docker-php-ext-enable xdebug
172
+ RUN if [ -z "$(pecl list | grep xdebug)" ] ; then pecl install xdebug ; fi
173
+ RUN docker-php-ext-enable xdebug
144
174
  RUN echo 'xdebug.start_with_request=yes' >> /usr/local/etc/php/php.ini
145
175
  RUN echo 'xdebug.mode=${ enableXdebug }' >> /usr/local/etc/php/php.ini
146
176
  RUN echo '${ clientDetectSettings }' >> /usr/local/etc/php/php.ini
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/env",
3
- "version": "4.1.2",
3
+ "version": "4.1.3",
4
4
  "description": "A zero-config, self contained local WordPress environment for development and testing.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -51,5 +51,5 @@
51
51
  "scripts": {
52
52
  "test": "echo \"Error: run tests from root\" && exit 1"
53
53
  },
54
- "gitHead": "8f7f052bc04e3f4eb50f479ced14be1489b9fa79"
54
+ "gitHead": "393c2b5533837fd637e998d23f0124c081a10df0"
55
55
  }