-
Notifications
You must be signed in to change notification settings - Fork 1.5k
/
Copy pathhardhat.config.ts
145 lines (133 loc) · 3.4 KB
/
hardhat.config.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
import { HardhatPluginError } from "@ignored/hardhat-vnext/plugins";
import {
task,
HardhatUserConfig,
emptyTask,
overrideTask,
configVariable,
globalOption,
} from "@ignored/hardhat-vnext/config";
const exampleEmptyTask = emptyTask("empty", "An example empty task").build();
const exampleEmptySubtask = task(["empty", "task"])
.setDescription("An example empty subtask task")
.setAction(async (_, _hre) => {
console.log("empty task");
})
.build();
const exampleTaskOverride = task("example2")
.setAction(async (_, _hre) => {
console.log("from an override");
})
.setDescription("An example task")
.addVariadicArgument({
name: "testFiles",
description: "An optional list of files to test",
defaultValue: [],
})
.addFlag({
name: "noCompile",
description: "Don't compile before running this task",
})
.addFlag({
name: "parallel",
description: "Run tests in parallel",
})
.addFlag({
name: "bail",
description: "Stop running tests after the first test failure",
})
.addOption({
name: "grep",
description: "Only run tests matching the given string or regexp",
defaultValue: "",
})
.build();
const testTask = task("test", "Runs mocha tests")
.addVariadicArgument({
name: "testFiles",
description: "An optional list of files to test",
// defaultValue: [],
})
.addFlag({
name: "noCompile",
description: "Don't compile before running this task",
})
.addFlag({
name: "parallel",
description: "Run tests in parallel",
})
.addFlag({
name: "bail",
description: "Stop running tests after the first test failure",
})
.addOption({
name: "grep",
description: "Only run tests matching the given string or regexp",
defaultValue: "",
})
.setAction(import.meta.resolve("./tasks/non-existing.ts"))
.build();
const testTaskOverride = overrideTask("test")
.addFlag({
name: "newFlag",
description: "A new flag",
})
.setAction((_taskArguments, _hre, _runSuper) => {})
.build();
const testSolidityTask = task(["test", "solidity"], "Runs Solidity tests")
.setAction(async () => {
console.log("Running Solidity tests");
})
.build();
const greeting = task("hello", "Prints a greeting")
.addOption({
name: "greeting",
description: "The greeting to print",
defaultValue: "Hello, World!",
})
.setAction(async ({ greeting }, _) => {
console.log(greeting);
})
.build();
const pluginExample = {
id: "community-plugin",
tasks: [
task("plugin-hello", "Prints a greeting from community-plugin")
.addOption({
name: "greeting",
description: "The greeting to print",
defaultValue: "Hello, World from community-plugin!",
})
.setAction(async ({ greeting }, _) => {
console.log(greeting);
if (greeting === "") {
throw new HardhatPluginError(
"community-plugin",
"Greeting cannot be empty",
);
}
})
.build(),
],
globalOptions: [
globalOption({
name: "myGlobalOption",
description: "A global option",
defaultValue: "default",
}),
],
};
const config: HardhatUserConfig = {
tasks: [
exampleTaskOverride,
testTask,
testTaskOverride,
testSolidityTask,
exampleEmptyTask,
exampleEmptySubtask,
greeting,
],
plugins: [pluginExample],
privateKey: configVariable("privateKey"),
};
export default config;