harsta
Version:
Harsta is a contract development tool based on Hardhat, designed to streamline the development, testing, and referencing of contracts, addresses, ABIs, and contract instances.
49 lines (38 loc) • 1.31 kB
text/typescript
import { confirm } from '@clack/prompts'
import consola from 'consola'
import { verifier } from '../imports'
import { network } from '../environment'
import { exists } from './exists'
import { deploy, deployUpgrade } from './deploy'
import { getDeployed } from './storage'
export interface Options {
contracts?: string[]
verify?: boolean
}
export async function deployMultiple(deployments: any[], options: Options = {}) {
if (!deployments.length) {
consola.warn('Lack of deployable contracts in the harsta.config, please fill in the deployments field')
return
}
consola.log('')
for (const deployment of deployments) {
if (!options.contracts && exists(deployment.name))
continue
if (exists(deployment.name)) {
const message = `${deployment.name} been deployed, are sure to overwrite the deployment?`
if (!await confirm({ message }))
continue
}
const address = deployment.kind
? await deployUpgrade(deployment.name)
: await deploy(deployment.name)
consola.log('')
if (!options.verify || network.name === 'hardhat')
continue
const deployed = await getDeployed(deployment.name)
await verifier.verify(address, {
arguments: (!deployed?.kind && deployed.args) || undefined,
force: true,
})
}
}