UNPKG

@nomiclabs/buidler

Version:

Buidler is an extensible developer tool that helps smart contract developers increase productivity by reliably bringing together the tools they want.

57 lines (44 loc) 1.63 kB
import debug from "debug"; import { BuidlerRuntimeEnvironment } from "../../types"; import { BuidlerContext } from "../context"; import { loadConfigAndTasks } from "../core/config/config-loading"; import { BuidlerError } from "../core/errors"; import { ERRORS } from "../core/errors-list"; import { BUIDLER_PARAM_DEFINITIONS } from "../core/params/buidler-params"; import { getEnvBuidlerArguments } from "../core/params/env-variables"; import { Environment } from "../core/runtime-environment"; let ctx: BuidlerContext; let env: BuidlerRuntimeEnvironment; if (BuidlerContext.isCreated()) { ctx = BuidlerContext.getBuidlerContext(); // The most probable reason for this to happen is that this file was imported // from the config file if (ctx.environment === undefined) { throw new BuidlerError(ERRORS.GENERAL.LIB_IMPORTED_FROM_THE_CONFIG); } env = ctx.environment; } else { ctx = BuidlerContext.createBuidlerContext(); const buidlerArguments = getEnvBuidlerArguments( BUIDLER_PARAM_DEFINITIONS, process.env ); if (buidlerArguments.verbose) { debug.enable("buidler*"); } const config = loadConfigAndTasks(buidlerArguments); // TODO: This is here for backwards compatibility. // There are very few projects using this. if (buidlerArguments.network === undefined) { buidlerArguments.network = config.defaultNetwork; } env = new Environment( config, buidlerArguments, ctx.tasksDSL.getTaskDefinitions(), ctx.extendersManager.getExtenders(), ctx.experimentalBuidlerEVMMessageTraceHooks ); ctx.setBuidlerRuntimeEnvironment(env); } export = env;