@@ -314,6 +314,51 @@ const buildMockContract = async (contractName: string) => {
314314 }
315315}
316316
317+ const buildMockDeploymentScriptOrTest = async ( contractName : string , type : string ) => {
318+ if ( require && require . main ) {
319+ const packageRootPath = path . join ( path . dirname ( require . main . filename ) , '../../../hardhat-awesome-cli/src/mockContracts' )
320+ if ( fs . existsSync ( packageRootPath ) ) {
321+ if ( fs . existsSync ( 'contracts' ) ) {
322+ if ( MockContractsList ) {
323+ let deploymentScriptOrTestPath : string = ''
324+ const contractToMock : IMockContractsList [ ] = MockContractsList . filter ( ( contract ) => contract . name === contractName )
325+ if ( contractToMock && type === 'deployment' ) {
326+ if ( fs . existsSync ( 'hardhat.config.js' ) ) {
327+ if ( contractToMock [ 0 ] . deploymentScriptJs !== undefined ) deploymentScriptOrTestPath = contractToMock [ 0 ] . deploymentScriptJs
328+ } else if ( fs . existsSync ( 'hardhat.config.ts' ) ) {
329+ if ( contractToMock [ 0 ] . deploymentScriptTs !== undefined ) deploymentScriptOrTestPath = contractToMock [ 0 ] . deploymentScriptTs
330+ else if ( contractToMock [ 0 ] . deploymentScriptJs !== undefined ) deploymentScriptOrTestPath = contractToMock [ 0 ] . deploymentScriptJs
331+ }
332+ }
333+ if ( contractToMock && type === 'test' ) {
334+ if ( fs . existsSync ( 'hardhat.config.js' ) ) {
335+ if ( contractToMock [ 0 ] . testScriptJs !== undefined ) deploymentScriptOrTestPath = contractToMock [ 0 ] . testScriptJs
336+ } else if ( fs . existsSync ( 'hardhat.config.ts' ) ) {
337+ if ( contractToMock [ 0 ] . testScriptTs !== undefined ) deploymentScriptOrTestPath = contractToMock [ 0 ] . testScriptTs
338+ else if ( contractToMock [ 0 ] . testScriptJs !== undefined ) deploymentScriptOrTestPath = contractToMock [ 0 ] . testScriptJs
339+ }
340+ }
341+ if ( contractToMock && deploymentScriptOrTestPath ) {
342+ if ( fs . existsSync ( deploymentScriptOrTestPath ) ) {
343+ console . log ( '\x1b[33m%s\x1b[0m' , 'The ' + type + ' scripts already exists' )
344+ } else {
345+ if ( fs . existsSync ( deploymentScriptOrTestPath ) ) {
346+ console . log ( '\x1b[33m%s\x1b[0m' , "Can't locate the " + type + ' script' )
347+ } else {
348+ console . log ( '\x1b[32m%s\x1b[0m' , 'Creating ' + type + ' for ' , contractName , ' in scripts/' )
349+ const rawdata : any = fs . readFileSync ( packageRootPath + '/' + deploymentScriptOrTestPath )
350+ const scriptsTestRawdataModify = rawdata . toString ( ) . slice ( 2 ) . replace ( / \* \/ / g, '' ) . trim ( )
351+ await sleep ( 500 )
352+ fs . writeFileSync ( deploymentScriptOrTestPath , `${ scriptsTestRawdataModify } ` )
353+ }
354+ }
355+ }
356+ }
357+ } else console . log ( '\x1b[33m%s\x1b[0m' , 'Error creating ' + type + ' script' )
358+ }
359+ }
360+ }
361+
317362const buildExcludedFile = async ( ) => {
318363 let fileSetting : any = [ ]
319364 if ( fs . existsSync ( fileHardhatAwesomeCLI ) ) {
@@ -1147,7 +1192,7 @@ const servePackageUninstaller = async () => {
11471192 }
11481193 } )
11491194 } )
1150- await sleep ( 1000 )
1195+ await sleep ( 1000 )
11511196}
11521197
11531198const serveMockContractCreatorSelector = async ( ) => {
@@ -1162,10 +1207,28 @@ const serveMockContractCreatorSelector = async () => {
11621207 name : 'mockContract' ,
11631208 message : 'Select a mock contract' ,
11641209 choices : mockContractsList
1210+ } ,
1211+ {
1212+ type : 'list' ,
1213+ name : 'mockDeploymentScript' ,
1214+ message : 'Create a deployment script for this mock contract' ,
1215+ choices : [ 'yes' , 'no' ]
1216+ } ,
1217+ {
1218+ type : 'list' ,
1219+ name : 'mockTestScript' ,
1220+ message : 'Create a test script for this mock contract' ,
1221+ choices : [ 'yes' , 'no' ]
11651222 }
11661223 ] )
1167- . then ( async ( mockContractSelected : { mockContract : string } ) => {
1224+ . then ( async ( mockContractSelected : { mockContract : string ; mockDeploymentScript : string ; mockTestScript : string } ) => {
11681225 await buildMockContract ( mockContractSelected . mockContract )
1226+ if ( mockContractSelected . mockDeploymentScript === 'yes' ) {
1227+ await buildMockDeploymentScriptOrTest ( mockContractSelected . mockContract , 'deployment' )
1228+ }
1229+ if ( mockContractSelected . mockTestScript === 'yes' ) {
1230+ await buildMockDeploymentScriptOrTest ( mockContractSelected . mockContract , 'test' )
1231+ }
11691232 } )
11701233 }
11711234}
0 commit comments