diff options
Diffstat (limited to 'tools/local-env/scripts/install.js')
-rw-r--r-- | tools/local-env/scripts/install.js | 34 |
1 files changed, 23 insertions, 11 deletions
diff --git a/tools/local-env/scripts/install.js b/tools/local-env/scripts/install.js index 3bbc30d4d8..19a0f46e08 100644 --- a/tools/local-env/scripts/install.js +++ b/tools/local-env/scripts/install.js @@ -1,8 +1,10 @@ +/* jshint node:true */ + const dotenv = require( 'dotenv' ); const dotenvExpand = require( 'dotenv-expand' ); const wait_on = require( 'wait-on' ); const { execSync } = require( 'child_process' ); -const { renameSync, readFileSync, writeFileSync } = require( 'fs' ); +const { readFileSync, writeFileSync } = require( 'fs' ); const local_env_utils = require( './utils' ); dotenvExpand.expand( dotenv.config() ); @@ -11,7 +13,10 @@ dotenvExpand.expand( dotenv.config() ); local_env_utils.determine_auth_option(); // Create wp-config.php. -wp_cli( 'config create --dbname=wordpress_develop --dbuser=root --dbpass=password --dbhost=mysql --force' ); +wp_cli( `config create --dbname=wordpress_develop --dbuser=root --dbpass=password --dbhost=mysql --force --config-file="wp-config.php"` ); + +// Since WP-CLI runs as root, the wp-config.php created above will be read-only. This needs to be writable for the sake of E2E tests. +execSync( 'node ./tools/local-env/scripts/docker.js exec cli chmod 666 wp-config.php' ); // Add the debug settings to wp-config.php. // Windows requires this to be done as an additional step, rather than using the --extra-php option in the previous step. @@ -22,26 +27,35 @@ wp_cli( `config set SCRIPT_DEBUG ${process.env.LOCAL_SCRIPT_DEBUG} --raw --type= wp_cli( `config set WP_ENVIRONMENT_TYPE ${process.env.LOCAL_WP_ENVIRONMENT_TYPE} --type=constant` ); wp_cli( `config set WP_DEVELOPMENT_MODE ${process.env.LOCAL_WP_DEVELOPMENT_MODE} --type=constant` ); -// Move wp-config.php to the base directory, so it doesn't get mixed up in the src or build directories. -renameSync( `${process.env.LOCAL_DIR}/wp-config.php`, 'wp-config.php' ); - // Read in wp-tests-config-sample.php, edit it to work with our config, then write it to wp-tests-config.php. const testConfig = readFileSync( 'wp-tests-config-sample.php', 'utf8' ) .replace( 'youremptytestdbnamehere', 'wordpress_develop_tests' ) .replace( 'yourusernamehere', 'root' ) .replace( 'yourpasswordhere', 'password' ) .replace( 'localhost', 'mysql' ) - .replace( "'WP_TESTS_DOMAIN', 'example.org'", `'WP_TESTS_DOMAIN', '${process.env.LOCAL_WP_TESTS_DOMAIN}'` ) - .concat( "\ndefine( 'FS_METHOD', 'direct' );\n" ); + .replace( `'WP_TESTS_DOMAIN', 'example.org'`, `'WP_TESTS_DOMAIN', '${process.env.LOCAL_WP_TESTS_DOMAIN}'` ) + .concat( `\ndefine( 'FS_METHOD', 'direct' );\n` ); writeFileSync( 'wp-tests-config.php', testConfig ); // Once the site is available, install WordPress! -wait_on( { resources: [ `tcp:localhost:${process.env.LOCAL_PORT}`] } ) +wait_on( { + resources: [ `tcp:localhost:${process.env.LOCAL_PORT}`], + timeout: 3000, +} ) + .catch( err => { + console.error( `Error: It appears the development environment has not been started. Message: ${ err.message }` ); + console.error( `Did you forget to do 'npm run env:start'?` ); + process.exit( 1 ); + } ) .then( () => { wp_cli( 'db reset --yes' ); const installCommand = process.env.LOCAL_MULTISITE === 'true' ? 'multisite-install' : 'install'; wp_cli( `core ${ installCommand } --title="WordPress Develop" --admin_user=admin --admin_password=password --admin_email=test@example.com --skip-email --url=http://localhost:${process.env.LOCAL_PORT}` ); + } ) + .catch( err => { + console.error( `Error: Unable to reset DB and install WordPress. Message: ${ err.message }` ); + process.exit( 1 ); } ); /** @@ -50,7 +64,5 @@ wait_on( { resources: [ `tcp:localhost:${process.env.LOCAL_PORT}`] } ) * @param {string} cmd The WP-CLI command to run. */ function wp_cli( cmd ) { - const composeFiles = local_env_utils.get_compose_files(); - - execSync( `docker compose ${composeFiles} run --quiet-pull --rm cli ${cmd} --path=/var/www/${process.env.LOCAL_DIR}`, { stdio: 'inherit' } ); + execSync( `npm --silent run env:cli -- ${cmd} --path=/var/www/${process.env.LOCAL_DIR}`, { stdio: 'inherit' } ); } |