@artherachain/hardhat-fakenet
Version:
Hardhat plugin for managing an Arthera fakenet node
55 lines (46 loc) • 1.49 kB
text/typescript
import { TASK_RUN, TASK_TEST } from "hardhat/builtin-tasks/task-names";
import { extendConfig, task } from "hardhat/config";
import {
HardhatRuntimeEnvironment,
RunSuperFunction,
TaskArguments,
} from "hardhat/types";
import "./type-extensions";
import { ArtheraService } from "./arthera-service";
import {ArtheraNodeConfig} from "./types";
function getDefaultOptions(hre: HardhatRuntimeEnvironment): ArtheraNodeConfig {
const defaultExecutable = "arthera-node";
const defaultPort = 18545;
return {
executable: defaultExecutable,
port: defaultPort,
}
}
/**
* Merges arthera defaults with user's arthera config
* @param {HardhatRuntimeEnvironment} hre
* @return {any}
*/
function getOptions(hre: HardhatRuntimeEnvironment): any {
return { ...getDefaultOptions(hre), ...(hre.config as any).artheraNode };
}
task(TASK_TEST, async (_args, hre, runSuper) => {
return handlePluginTask(hre, runSuper);
});
task(TASK_RUN, async (_args, hre, runSuper) => {
return handlePluginTask(hre, runSuper);
});
async function handlePluginTask(
hre: HardhatRuntimeEnvironment,
runSuper: RunSuperFunction<TaskArguments>
) {
if (hre.network.name !== "arthera") {
return runSuper();
}
const options = getOptions(hre);
const artheraService = await ArtheraService.create(options);
await artheraService.startServer();
const ret = await runSuper();
await artheraService.stopServer();
return ret;
}