Skip to content

Commit 5e8d778

Browse files
committed
Support .env for custom vars
1 parent 409396b commit 5e8d778

File tree

1 file changed

+54
-27
lines changed
  • projects/js-packages/jetpack-cli/bin

1 file changed

+54
-27
lines changed

projects/js-packages/jetpack-cli/bin/jp.js

+54-27
Original file line numberDiff line numberDiff line change
@@ -240,37 +240,64 @@ const main = async () => {
240240
// Get project name (from docker.js)
241241
const projectName = args.includes( '--type=e2e' ) ? 'jetpack_e2e' : 'jetpack_dev';
242242

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-
254243
// Build environment variables (from docker.js)
255244
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
272246
};
273247

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+
274301
// Build the list of compose files to use
275302
const composeFiles = [
276303
'-f',

0 commit comments

Comments
 (0)