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.
48 lines (42 loc) • 1.56 kB
text/typescript
import { loadConfigAndTasks as _loadConfigAndTasks } from 'hardhat/internal/core/config/config-loading'
import type { HardhatArguments } from 'hardhat/types'
import { getEnvHardhatArguments } from 'hardhat/internal/core/params/env-variables'
import { HARDHAT_PARAM_DEFINITIONS } from 'hardhat/internal/core/params/hardhat-params'
import path from 'pathe'
import { HardhatContext } from 'hardhat/internal/context'
import type { ProviderForkingConfig } from '../network'
import { packRoot } from '../../constants'
export interface LoadConfigAndTasksOptions {
showEmptyConfigWarning?: boolean
showSolidityConfigWarnings?: boolean
forking?: ProviderForkingConfig
}
export function loadConfigAndTasks(
hardhatArguments?: Partial<HardhatArguments>,
options: LoadConfigAndTasksOptions = { },
) {
const { resolvedConfig, userConfig } = _loadConfigAndTasks(hardhatArguments, options)
if (options.forking && !resolvedConfig.networks.hardhat.forking) {
resolvedConfig.networks.hardhat.forking = {
blockNumber: options.forking.forkBlockNumber,
url: options.forking.fork!,
enabled: true,
}
}
return {
resolved: resolvedConfig,
user: userConfig,
}
}
export function loadEnvArguments(network?: string) {
return {
...getEnvHardhatArguments(HARDHAT_PARAM_DEFINITIONS, process.env),
config: path.resolve(packRoot, 'hardhat.config.js'),
network,
}
}
export function loadEnvContext() {
return HardhatContext.isCreated()
? HardhatContext.getHardhatContext()
: HardhatContext.createHardhatContext()
}