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.

110 lines (92 loc) 3.08 kB
import { ActionType, ConfigExtender, ConfigurableTaskDefinition, EnvironmentExtender, ExperimentalBuidlerEVMMessageTraceHook, TaskArguments, } from "../../../types"; import { BuidlerContext } from "../../context"; import * as argumentTypes from "../params/argumentTypes"; import { usePlugin as usePluginImplementation } from "../plugins"; export function task<ArgsT extends TaskArguments>( name: string, description?: string, action?: ActionType<ArgsT> ): ConfigurableTaskDefinition; export function task<ArgsT extends TaskArguments>( name: string, action: ActionType<ArgsT> ): ConfigurableTaskDefinition; export function task<ArgsT extends TaskArguments>( name: string, descriptionOrAction?: string | ActionType<ArgsT>, action?: ActionType<ArgsT> ): ConfigurableTaskDefinition { const ctx = BuidlerContext.getBuidlerContext(); const dsl = ctx.tasksDSL; if (descriptionOrAction === undefined) { return dsl.task(name); } if (typeof descriptionOrAction !== "string") { return dsl.task(name, descriptionOrAction); } return dsl.task(name, descriptionOrAction, action); } export function internalTask<ArgsT extends TaskArguments>( name: string, description?: string, action?: ActionType<ArgsT> ): ConfigurableTaskDefinition; export function internalTask<ArgsT extends TaskArguments>( name: string, action: ActionType<ArgsT> ): ConfigurableTaskDefinition; export function internalTask<ArgsT extends TaskArguments>( name: string, descriptionOrAction?: string | ActionType<ArgsT>, action?: ActionType<ArgsT> ): ConfigurableTaskDefinition { const ctx = BuidlerContext.getBuidlerContext(); const dsl = ctx.tasksDSL; if (descriptionOrAction === undefined) { return dsl.internalTask(name); } if (typeof descriptionOrAction !== "string") { return dsl.internalTask(name, descriptionOrAction); } return dsl.internalTask(name, descriptionOrAction, action); } export const types = argumentTypes; /** * Register an environment extender what will be run after the * Buidler Runtime Environment is initialized. * * @param extender A function that receives the Buidler Runtime * Environment. */ export function extendEnvironment(extender: EnvironmentExtender) { const ctx = BuidlerContext.getBuidlerContext(); const extenderManager = ctx.extendersManager; extenderManager.add(extender); } export function extendConfig(extender: ConfigExtender) { const ctx = BuidlerContext.getBuidlerContext(); ctx.configExtenders.push(extender); } // NOTE: This is experimental and will be removed. Please contact our team // if you are planning to use it. export function experimentalAddBuidlerEVMMessageTraceHook( hook: ExperimentalBuidlerEVMMessageTraceHook ) { const ctx = BuidlerContext.getBuidlerContext(); ctx.experimentalBuidlerEVMMessageTraceHooks.push(hook); } /** * Loads a Buidler plugin * @param pluginName The plugin name. */ export function usePlugin(pluginName: string) { const ctx = BuidlerContext.getBuidlerContext(); usePluginImplementation(ctx, pluginName); }