Last active
October 25, 2023 13:08
-
-
Save gdekefir/913cc8e3d8e4f6d5ba40556daa85dab9 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { ethers } from 'hardhat'; | |
import fs from 'fs'; | |
import path from 'path'; | |
async function main() { | |
const envArgs = process.env.SCRIPT_ARGS | |
? process.env.SCRIPT_ARGS.split(' ') | |
: []; | |
const [contractName, ...args] = envArgs; | |
const contractsDir = path.join(__dirname, '..', 'contracts'); | |
const contractExists = fs.existsSync( | |
path.join(contractsDir, `${contractName}.sol`) | |
); | |
if (!contractExists) { | |
console.error('There is no contract by that name'); | |
process.exit(1); | |
} | |
const processedArgs = args.map((arg) => | |
!isNaN(Number(arg)) && !arg.includes('"') | |
? Number(arg) | |
: arg.replace(/"/g, '') | |
); | |
const ContractFactory = await ethers.getContractFactory(contractName); | |
const contract = await ContractFactory.deploy(...processedArgs); | |
await contract.waitForDeployment(); | |
const address = await contract.getAddress(); | |
console.log(`Contract "${contractName}" deployed at address: ${address}`); | |
} | |
main().catch((error) => { | |
console.error(error); | |
process.exit(1); | |
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import { HardhatUserConfig, task } from 'hardhat/config'; | |
import '@nomicfoundation/hardhat-toolbox'; | |
import { HardhatRuntimeEnvironment } from 'hardhat/types'; | |
import { execSync } from 'child_process'; | |
task('deploy-universal', 'Runs a deploy script file with hardhat run') | |
.addOptionalParam('netname', 'The network to run on', 'hardhat') | |
.addPositionalParam('contractName', 'The name of the contract to deploy') | |
.addOptionalVariadicPositionalParam( | |
'args', | |
'Additional arguments to pass to the script' | |
) | |
.setAction(async (taskArgs, hre: HardhatRuntimeEnvironment) => { | |
const allArgs = [taskArgs.contractName].concat(taskArgs.args || []); | |
const argsString = allArgs.join(' '); | |
const command = `SCRIPT_ARGS="${argsString}" npx hardhat run scripts/deployUniversal.ts --network ${taskArgs.netname}`; | |
execSync(command, { stdio: 'inherit' }); | |
}); | |
const config: HardhatUserConfig = { | |
solidity: '0.8.19', | |
}; | |
export default config; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
npx hardhat deploy-universal --netname localhost MyContract arg1 arg2 arg3