nim-codex/codex/contracts/deployment.nim

27 lines
763 B
Nim

import std/json
import std/os
import pkg/ethers
import pkg/questionable
type Deployment* = object
json: JsonNode
const defaultFile = "vendor" / "codex-contracts-eth" / "deployment-localhost.json"
## Reads deployment information from a json file. It expects a file that has
## been exported with Hardhat deploy.
## See also:
## https://github.com/wighawag/hardhat-deploy/tree/master#6-hardhat-export
proc deployment*(file = defaultFile): Deployment =
Deployment(json: parseFile(file))
proc address*(deployment: Deployment, Contract: typedesc): ?Address =
if deployment.json == nil:
return none Address
try:
let address = deployment.json["contracts"][$Contract]["address"].getStr()
Address.init(address)
except KeyError:
none Address