diff options
Diffstat (limited to 'tools/local-env/scripts/docker.js')
-rw-r--r-- | tools/local-env/scripts/docker.js | 33 |
1 files changed, 24 insertions, 9 deletions
diff --git a/tools/local-env/scripts/docker.js b/tools/local-env/scripts/docker.js index c1dc2b27e1..e39b42a812 100644 --- a/tools/local-env/scripts/docker.js +++ b/tools/local-env/scripts/docker.js @@ -1,21 +1,36 @@ -const dotenv = require( 'dotenv' ); +/* jshint node:true */ + +const dotenv = require( 'dotenv' ); const dotenvExpand = require( 'dotenv-expand' ); -const { execSync } = require( 'child_process' ); +const { spawnSync } = require( 'child_process' ); const local_env_utils = require( './utils' ); dotenvExpand.expand( dotenv.config() ); const composeFiles = local_env_utils.get_compose_files(); -if (process.argv.includes('--coverage-html')) { +if ( process.argv.includes( '--coverage-html' ) ) { process.env.LOCAL_PHP_XDEBUG = 'true'; process.env.LOCAL_PHP_XDEBUG_MODE = 'coverage'; } -// This try-catch prevents the superfluous Node.js debugging information from being shown if the command fails. -try { - // Execute any Docker compose command passed to this script. - execSync( 'docker compose ' + composeFiles + ' ' + process.argv.slice( 2 ).join( ' ' ), { stdio: 'inherit' } ); -} catch ( error ) { - process.exit( 1 ); +// Add --no-TTY (-T) arg after exec and run commands when STDIN is not a TTY. +const dockerCommand = process.argv.slice( 2 ); +if ( [ 'exec', 'run' ].includes( dockerCommand[0] ) && ! process.stdin.isTTY ) { + dockerCommand.splice( 1, 0, '--no-TTY' ); } + +// Execute any Docker compose command passed to this script. +const returns = spawnSync( + 'docker', + [ + 'compose', + ...composeFiles + .map( ( composeFile ) => [ '-f', composeFile ] ) + .flat(), + ...dockerCommand, + ], + { stdio: 'inherit' } +); + +process.exit( returns.status ); |