add overwrite confirmation
This commit is contained in:
parent
59f1f3a6b5
commit
2698cb36ff
|
@ -2,6 +2,5 @@
|
||||||
* Internal dependencies
|
* Internal dependencies
|
||||||
*/
|
*/
|
||||||
const allSpecs = require( './specs' );
|
const allSpecs = require( './specs' );
|
||||||
const fs = require( 'fs' );
|
|
||||||
|
|
||||||
module.exports = allSpecs;
|
module.exports = allSpecs;
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
*/
|
*/
|
||||||
const fs = require( 'fs' );
|
const fs = require( 'fs' );
|
||||||
const sprintf = require( 'sprintf-js' ).sprintf;
|
const sprintf = require( 'sprintf-js' ).sprintf;
|
||||||
|
const readlineSync = require( 'readline-sync' );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Internal dependencies.
|
* Internal dependencies.
|
||||||
|
@ -18,6 +19,18 @@ const {
|
||||||
const args = process.argv.slice( 2 );
|
const args = process.argv.slice( 2 );
|
||||||
const [ command, packageName ] = args;
|
const [ command, packageName ] = args;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Prompt the console for confirmation.
|
||||||
|
*
|
||||||
|
* @param {string} prompt Prompt for the user.
|
||||||
|
* @param {string} choices valid responses.
|
||||||
|
* @return {string}
|
||||||
|
*/
|
||||||
|
const confirm = ( prompt, choices ) => {
|
||||||
|
const answer = readlineSync.keyIn( prompt, choices );
|
||||||
|
return answer;
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Install the test scripts and sample default.json configuration
|
* Install the test scripts and sample default.json configuration
|
||||||
*/
|
*/
|
||||||
|
@ -49,11 +62,11 @@ if ( command == 'install' ) {
|
||||||
console.log( `Created sample test container initialization script to 'tests/e2e/${defaultInitName}'.` );
|
console.log( `Created sample test container initialization script to 'tests/e2e/${defaultInitName}'.` );
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write test files
|
|
||||||
if ( ! testSpecs ) {
|
if ( ! testSpecs ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Write test files
|
||||||
const testsSpecFile = resolvePackagePath( testSpecs, pkg );
|
const testsSpecFile = resolvePackagePath( testSpecs, pkg );
|
||||||
const specs = fs.readFileSync( testsSpecFile );
|
const specs = fs.readFileSync( testsSpecFile );
|
||||||
const tests = JSON.parse( specs );
|
const tests = JSON.parse( specs );
|
||||||
|
@ -82,6 +95,8 @@ if ( command == 'install' ) {
|
||||||
const eol = "\n";
|
const eol = "\n";
|
||||||
const autoGenerate = sprintf( '/* This file was auto-generated by the command `npx wc-e2e install %s. */', packageName );
|
const autoGenerate = sprintf( '/* This file was auto-generated by the command `npx wc-e2e install %s. */', packageName );
|
||||||
let importLineFormat;
|
let importLineFormat;
|
||||||
|
let overwriteFiles;
|
||||||
|
let confirmPrompt;
|
||||||
if ( testFormat.toLowerCase() == 'cjs' ) {
|
if ( testFormat.toLowerCase() == 'cjs' ) {
|
||||||
importLineFormat = sprintf( "const {%%s} = require( '%s' );", pkg );
|
importLineFormat = sprintf( "const {%%s} = require( '%s' );", pkg );
|
||||||
} else {
|
} else {
|
||||||
|
@ -100,6 +115,11 @@ if ( command == 'install' ) {
|
||||||
|
|
||||||
// Loop through folders and files to write test scripts.
|
// Loop through folders and files to write test scripts.
|
||||||
for ( let f = 0; f < active.length; f++ ) {
|
for ( let f = 0; f < active.length; f++ ) {
|
||||||
|
if ( overwriteFiles == 'q' ) {
|
||||||
|
overwriteFiles = '';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
const testFolder = active[ f ];
|
const testFolder = active[ f ];
|
||||||
const { testFiles } = testFolder;
|
const { testFiles } = testFolder;
|
||||||
|
|
||||||
|
@ -125,10 +145,21 @@ if ( command == 'install' ) {
|
||||||
const testFileName = `${specFolder}/${testFile.name}.${testExtension}`;
|
const testFileName = `${specFolder}/${testFile.name}.${testExtension}`;
|
||||||
const testFilePath = resolveLocalE2ePath( testFileName );
|
const testFilePath = resolveLocalE2ePath( testFileName );
|
||||||
|
|
||||||
// @todo Add check to see if file exists
|
// Check to see if file exists.
|
||||||
// fs.existsSync
|
if ( fs.existsSync( testFilePath ) ) {
|
||||||
// @todo Confirm overwrite
|
if ( overwriteFiles != 'a' ) {
|
||||||
// readline
|
confirmPrompt = `${testFileName} already exists. Overwrite? [Y]es/[n]o/[a]ll/[q]uit: `;
|
||||||
|
overwriteFiles = confirm( confirmPrompt, 'anqy' );
|
||||||
|
overwriteFiles = overwriteFiles.toLowerCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( overwriteFiles == 'q' ) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if ( overwriteFiles != 'a' && overwriteFiles != 'y' ) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
console.log( 'Writing tests/e2e/' + testFileName );
|
console.log( 'Writing tests/e2e/' + testFileName );
|
||||||
let buffer = [ autoGenerate ];
|
let buffer = [ autoGenerate ];
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
"jest-each": "25.5.0",
|
"jest-each": "25.5.0",
|
||||||
"jest-puppeteer": "^4.4.0",
|
"jest-puppeteer": "^4.4.0",
|
||||||
"node-stream-zip": "^1.13.6",
|
"node-stream-zip": "^1.13.6",
|
||||||
|
"readline-sync": "^1.4.10",
|
||||||
"request": "^2.88.2",
|
"request": "^2.88.2",
|
||||||
"sprintf-js": "^1.1.2"
|
"sprintf-js": "^1.1.2"
|
||||||
},
|
},
|
||||||
|
|
|
@ -129,6 +129,7 @@ importers:
|
||||||
jest-puppeteer: ^4.4.0
|
jest-puppeteer: ^4.4.0
|
||||||
ndb: ^1.1.5
|
ndb: ^1.1.5
|
||||||
node-stream-zip: ^1.13.6
|
node-stream-zip: ^1.13.6
|
||||||
|
readline-sync: ^1.4.10
|
||||||
request: ^2.88.2
|
request: ^2.88.2
|
||||||
semver: ^7.3.2
|
semver: ^7.3.2
|
||||||
sprintf-js: ^1.1.2
|
sprintf-js: ^1.1.2
|
||||||
|
@ -145,6 +146,7 @@ importers:
|
||||||
jest-each: 25.5.0
|
jest-each: 25.5.0
|
||||||
jest-puppeteer: 4.4.0
|
jest-puppeteer: 4.4.0
|
||||||
node-stream-zip: 1.15.0
|
node-stream-zip: 1.15.0
|
||||||
|
readline-sync: 1.4.10
|
||||||
request: 2.88.2
|
request: 2.88.2
|
||||||
sprintf-js: 1.1.2
|
sprintf-js: 1.1.2
|
||||||
devDependencies:
|
devDependencies:
|
||||||
|
@ -18063,6 +18065,11 @@ packages:
|
||||||
dependencies:
|
dependencies:
|
||||||
picomatch: 2.3.0
|
picomatch: 2.3.0
|
||||||
|
|
||||||
|
/readline-sync/1.4.10:
|
||||||
|
resolution: {integrity: sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==}
|
||||||
|
engines: {node: '>= 0.8.0'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/realpath-native/1.1.0:
|
/realpath-native/1.1.0:
|
||||||
resolution: {integrity: sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==}
|
resolution: {integrity: sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
|
|
Loading…
Reference in New Issue