Intuitive navigation and interactive param collection for hardhat tasks
This plugin traverses all hardhat tasks found in the hardhat runtime environment and makes them interactive.
What is "interactive"? Interactive means that enquirer prompts will be used to collect missing required parameters. E.g. if the bytes
task is ran without its value
parameter, the following prompt will be presented:
? Enter value (The value to convert): ›
Things to know:
- Interactivity can be disabled with the global --non-interactive flag
- Optional parameters and flags are not collected
- There is a bug in hardhat where giving a default parameter to a non-optional parameter makes it optional. The solution used is to set it back to optional right after creation. See the create task in ethernaut-wallet.
- You can define custom prompts for parameters (see ethernaut-interact-ui)
- You can also define suggestions for parameters. Default values are suggested otherwise.
- The plugin also adds a pre-parser that allows tasks to be called without a scope. E.g.
ethernaut unit
is converted toethernaut util unit
Additionally, when no task is specified, the plugin displays enquirer autocomplete prompts to navigate all available tasks and scopes.
npm install ethernaut-ui
Import the plugin in your hardhat.config.js
:
require('ethernaut-ui')
Or if you are using TypeScript, in your hardhat.config.ts
:
import 'ethernaut-ui'
This plugin does not require any other plugins.
This plugin adds the following tasks:
- help Used to enter navigation when no tasks are passed
- navigate Navigates tasks and scopes with enquirer
This plugin adds the following fields to the hre:
hre.ethernaut.ui = {
nonInteractive: false
}
This plugin extends the HardhatUserConfig
's ProjectPathsUserConfig
object with the following fields:
config.ethernaut.ui = {
exclude: [
'some-task',
'some-scope/another-task',
'another-scope/*'
]
}
As long as the plugin is required in the project's hardhat config, nothing else is required.
Navigation will be automatically triggered when entering any scope or the root scope, and parameters will be collected whenever they are not provided.