From 96b00c0174c941db751ea54f31247be9cc1b5336 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tetsuaki=20Hamano=20/=20=E6=B5=9C=E9=87=8E=20=E5=93=B2?= =?UTF-8?q?=E6=98=8E?= Date: Tue, 5 Jul 2022 11:51:35 +0000 Subject: [PATCH 1/4] Create Block: Added prompt to continue when minimum system requirements not met --- .../lib/check-system-requirements.js | 34 ++++++++++++++++--- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/packages/create-block/lib/check-system-requirements.js b/packages/create-block/lib/check-system-requirements.js index fbdbc5e643d6e9..99e542d6c4e8bc 100644 --- a/packages/create-block/lib/check-system-requirements.js +++ b/packages/create-block/lib/check-system-requirements.js @@ -1,6 +1,7 @@ /** * External dependencies */ +const inquirer = require( 'inquirer' ); const checkSync = require( 'check-node-version' ); const { forEach } = require( 'lodash' ); const { promisify } = require( 'util' ); @@ -14,20 +15,45 @@ const check = promisify( checkSync ); async function checkSystemRequirements( engines ) { const result = await check( engines ); + if ( ! result.isSatisfied ) { log.error( 'Minimum system requirements not met!' ); log.info( '' ); + forEach( result.versions, ( { isSatisfied, wanted }, name ) => { if ( ! isSatisfied ) { log.error( `Error: Wanted ${ name } version ${ wanted.raw } (${ wanted.range })` ); - log.info( - check.PROGRAMS[ name ].getInstallInstructions( wanted.raw ) - ); } } ); - process.exit( 1 ); + + log.info( '' ); + + const { yesContinue } = await inquirer.prompt( [ + { + type: 'confirm', + name: 'yesContinue', + message: 'Are you sure you want to continue anyway?', + default: false, + }, + ] ); + + if ( ! yesContinue ) { + log.error( 'Cancelled.' ); + log.info( '' ); + + forEach( result.versions, ( { isSatisfied, wanted }, name ) => { + if ( ! isSatisfied ) { + log.info( + check.PROGRAMS[ name ].getInstallInstructions( + wanted.raw + ) + ); + } + } ); + process.exit( 1 ); + } } } From 099b30cda9449825e6835bba2003c3d809084e2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tetsuaki=20Hamano=20/=20=E6=B5=9C=E9=87=8E=20=E5=93=B2?= =?UTF-8?q?=E6=98=8E?= Date: Tue, 5 Jul 2022 11:53:58 +0000 Subject: [PATCH 2/4] Update changelog --- packages/create-block/CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/create-block/CHANGELOG.md b/packages/create-block/CHANGELOG.md index 3e7684a704f4de..fa2f51384c7549 100644 --- a/packages/create-block/CHANGELOG.md +++ b/packages/create-block/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +- Added prompt to continue when minimum system requirements not met ([#42151](https://github.com/WordPress/gutenberg/pull/42151)). + ## 3.3.0 (2022-06-01) ### Enhancement From 618e1c3cf22f003c6687f30e61f5162bf7621fc5 Mon Sep 17 00:00:00 2001 From: Aki Hamano <54422211+t-hamano@users.noreply.github.com> Date: Wed, 6 Jul 2022 18:24:02 +0900 Subject: [PATCH 3/4] Update changelog MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Greg Ziółkowski --- packages/create-block/CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/create-block/CHANGELOG.md b/packages/create-block/CHANGELOG.md index fa2f51384c7549..274c5ed53f8ee5 100644 --- a/packages/create-block/CHANGELOG.md +++ b/packages/create-block/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +### Enhancement + - Added prompt to continue when minimum system requirements not met ([#42151](https://github.com/WordPress/gutenberg/pull/42151)). ## 3.3.0 (2022-06-01) From 967e6ba3149e771a38d4403f002bc5e538af4ae7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tetsuaki=20Hamano=20/=20=E6=B5=9C=E9=87=8E=20=E5=93=B2?= =?UTF-8?q?=E6=98=8E?= Date: Wed, 6 Jul 2022 09:36:46 +0000 Subject: [PATCH 4/4] Use a diffarent API that causes an error from check-node-version --- packages/create-block/lib/check-system-requirements.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/create-block/lib/check-system-requirements.js b/packages/create-block/lib/check-system-requirements.js index 99e542d6c4e8bc..02a18d684af826 100644 --- a/packages/create-block/lib/check-system-requirements.js +++ b/packages/create-block/lib/check-system-requirements.js @@ -3,6 +3,7 @@ */ const inquirer = require( 'inquirer' ); const checkSync = require( 'check-node-version' ); +const tools = require( 'check-node-version/tools' ); const { forEach } = require( 'lodash' ); const { promisify } = require( 'util' ); @@ -46,9 +47,7 @@ async function checkSystemRequirements( engines ) { forEach( result.versions, ( { isSatisfied, wanted }, name ) => { if ( ! isSatisfied ) { log.info( - check.PROGRAMS[ name ].getInstallInstructions( - wanted.raw - ) + tools[ name ].getInstallInstructions( wanted.raw ) ); } } );