@@ -240,37 +240,64 @@ const main = async () => {
240
240
// Get project name (from docker.js)
241
241
const projectName = args . includes ( '--type=e2e' ) ? 'jetpack_e2e' : 'jetpack_dev' ;
242
242
243
- // Load versions from .github/versions.sh
244
- const versionsPath = resolve ( monorepoRoot , '.github/versions.sh' ) ;
245
- const versions = fs . readFileSync ( versionsPath , 'utf8' ) ;
246
- const versionVars = { } ;
247
- versions . split ( '\n' ) . forEach ( line => {
248
- const match = line . match ( / ^ ( [ A - Z _ ] + ) = ( .+ ) $ / ) ;
249
- if ( match ) {
250
- versionVars [ match [ 1 ] ] = match [ 2 ] . replace ( / [ ' " ] / g, '' ) ;
251
- }
252
- } ) ;
253
-
254
243
// Build environment variables (from docker.js)
255
244
const envVars = {
256
- ...process . env ,
257
- // Load from default.env
258
- ...( fs . existsSync ( resolve ( monorepoRoot , 'tools/docker/default.env' ) )
259
- ? dotenv . parse ( fs . readFileSync ( resolve ( monorepoRoot , 'tools/docker/default.env' ) ) )
260
- : { } ) ,
261
- // Load from .env if it exists
262
- ...( fs . existsSync ( resolve ( monorepoRoot , 'tools/docker/.env' ) )
263
- ? dotenv . parse ( fs . readFileSync ( resolve ( monorepoRoot , 'tools/docker/.env' ) ) )
264
- : { } ) ,
265
- HOST_CWD : monorepoRoot ,
266
- PHP_VERSION : versionVars . PHP_VERSION ,
267
- COMPOSER_VERSION : versionVars . COMPOSER_VERSION ,
268
- NODE_VERSION : versionVars . NODE_VERSION ,
269
- PNPM_VERSION : versionVars . PNPM_VERSION ,
270
- COMPOSE_PROJECT_NAME : projectName ,
271
- PORT_WORDPRESS : args . includes ( '--type=e2e' ) ? '8889' : '80' ,
245
+ ...process . env , // Start with process.env
272
246
} ;
273
247
248
+ // Add default env vars if they exist
249
+ if ( fs . existsSync ( resolve ( monorepoRoot , 'tools/docker/default.env' ) ) ) {
250
+ Object . assign (
251
+ envVars ,
252
+ dotenv . parse ( fs . readFileSync ( resolve ( monorepoRoot , 'tools/docker/default.env' ) ) )
253
+ ) ;
254
+ }
255
+
256
+ // Add user overrides from .env if they exist
257
+ if ( fs . existsSync ( resolve ( monorepoRoot , 'tools/docker/.env' ) ) ) {
258
+ Object . assign (
259
+ envVars ,
260
+ dotenv . parse ( fs . readFileSync ( resolve ( monorepoRoot , 'tools/docker/.env' ) ) )
261
+ ) ;
262
+ }
263
+
264
+ // Only set these specific vars if they're not already set in .env
265
+ if ( ! envVars . COMPOSE_PROJECT_NAME ) {
266
+ envVars . COMPOSE_PROJECT_NAME = projectName ;
267
+ }
268
+ if ( ! envVars . PORT_WORDPRESS ) {
269
+ envVars . PORT_WORDPRESS = args . includes ( '--type=e2e' ) ? '8889' : '80' ;
270
+ }
271
+
272
+ // Load versions from .github/versions.sh if not already set
273
+ if (
274
+ ! (
275
+ envVars . PHP_VERSION &&
276
+ envVars . COMPOSER_VERSION &&
277
+ envVars . NODE_VERSION &&
278
+ envVars . PNPM_VERSION
279
+ )
280
+ ) {
281
+ const versionsPath = resolve ( monorepoRoot , '.github/versions.sh' ) ;
282
+ const versions = fs . readFileSync ( versionsPath , 'utf8' ) ;
283
+ const versionVars = { } ;
284
+ versions . split ( '\n' ) . forEach ( line => {
285
+ const match = line . match ( / ^ ( [ A - Z _ ] + ) = ( .+ ) $ / ) ;
286
+ if ( match ) {
287
+ versionVars [ match [ 1 ] ] = match [ 2 ] . replace ( / [ ' " ] / g, '' ) ;
288
+ }
289
+ } ) ;
290
+
291
+ // Only set version vars if they're not already set
292
+ if ( ! envVars . PHP_VERSION ) envVars . PHP_VERSION = versionVars . PHP_VERSION ;
293
+ if ( ! envVars . COMPOSER_VERSION ) envVars . COMPOSER_VERSION = versionVars . COMPOSER_VERSION ;
294
+ if ( ! envVars . NODE_VERSION ) envVars . NODE_VERSION = versionVars . NODE_VERSION ;
295
+ if ( ! envVars . PNPM_VERSION ) envVars . PNPM_VERSION = versionVars . PNPM_VERSION ;
296
+ }
297
+
298
+ // Always set HOST_CWD as it's required for Docker context
299
+ envVars . HOST_CWD = monorepoRoot ;
300
+
274
301
// Build the list of compose files to use
275
302
const composeFiles = [
276
303
'-f' ,
0 commit comments