From 288db70dcc8a6fa80dca3f62c2ba073f138d35af Mon Sep 17 00:00:00 2001 From: the-masthead <116779271+the-masthead@users.noreply.github.com> Date: Tue, 1 Nov 2022 00:35:34 -0700 Subject: [PATCH] Unpack flags before passing --- src/commands/node/list.ts | 5 +++-- src/commands/project/content.ts | 7 ++++--- src/commands/project/create.ts | 7 ++++--- src/helpers.ts | 16 ++++++++-------- 4 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/commands/node/list.ts b/src/commands/node/list.ts index ceb5dea..b9cc682 100644 --- a/src/commands/node/list.ts +++ b/src/commands/node/list.ts @@ -1,6 +1,7 @@ import { Flags } from "@oclif/core"; import { BlockchainCommand } from "../../base"; import { getContract, getProvider, normalizeHex } from "../../helpers"; +import { supportedNetworks } from "../../networks"; export default class NodeList extends BlockchainCommand { static description = "Lists content nodes on the Armada Network."; @@ -15,8 +16,8 @@ export default class NodeList extends BlockchainCommand { public async run(): Promise { const { flags } = await this.parse(NodeList); - const provider = await getProvider(flags); - const nodes = await getContract(flags, "nodes", provider); + const provider = await getProvider(flags.network as supportedNetworks); + const nodes = await getContract(flags.network as supportedNetworks, "nodes", provider); const operator = normalizeHex(flags.operator); const data = await nodes.getNodes(operator, flags.topology, flags.skip, flags.size); console.log(data); diff --git a/src/commands/project/content.ts b/src/commands/project/content.ts index 6fa61f3..d77ae6c 100644 --- a/src/commands/project/content.ts +++ b/src/commands/project/content.ts @@ -1,5 +1,6 @@ import { TransactionCommand } from "../../base"; import { decodeEvent, getContract, getSigner, normalizeHex } from "../../helpers"; +import { supportedNetworks } from "../../networks"; export default class ProjectContent extends TransactionCommand { static summary = "Publishes the provided content bundle on the network."; @@ -13,9 +14,9 @@ export default class ProjectContent extends TransactionCommand { ]; public async run(): Promise { - const { args } = await this.parse(ProjectContent); - const signer = await getSigner(args); - const projects = await getContract(args, "projects", signer); + const { args, flags } = await this.parse(ProjectContent); + const signer = await getSigner(flags.network as supportedNetworks, flags.ledger); + const projects = await getContract(flags.network as supportedNetworks, "projects", signer); const projectId = normalizeHex(args.ID); const bundleSha = normalizeHex(args.SHA); const tx = await projects.setProjectContent(projectId, args.URL, bundleSha); diff --git a/src/commands/project/create.ts b/src/commands/project/create.ts index 816d8d3..dc2db34 100644 --- a/src/commands/project/create.ts +++ b/src/commands/project/create.ts @@ -1,5 +1,6 @@ import { TransactionCommand } from "../../base"; import { decodeEvent, getContract, getSigner, normalizeHex } from "../../helpers"; +import { supportedNetworks } from "../../networks"; export default class ProjectCreate extends TransactionCommand { static summary = "Registers a new project on the Armada Network."; @@ -13,14 +14,14 @@ export default class ProjectCreate extends TransactionCommand { ]; public async run(): Promise { - const { args } = await this.parse(ProjectCreate); + const { args, flags } = await this.parse(ProjectCreate); if ((args.URL != "") !== (args.SHA != "")) { console.error("Error: URL and SHA must be specified together"); process.exit(1); } - const signer = await getSigner(args); - const projects = await getContract(args, "projects", signer); + const signer = await getSigner(flags.network as supportedNetworks, flags.ledger); + const projects = await getContract(flags.network as supportedNetworks, "projects", signer); const address = await signer.getAddress(); const bundleSha = normalizeHex(args.SHA); const tx = await projects.createProject([address, args.NAME, args.EMAIL, args.URL, bundleSha]); diff --git a/src/helpers.ts b/src/helpers.ts index daf1bd7..c36e9f0 100644 --- a/src/helpers.ts +++ b/src/helpers.ts @@ -1,4 +1,4 @@ -import type { TransactionReceipt } from "@ethersproject/abstract-provider"; +import type { Provider, TransactionReceipt } from "@ethersproject/abstract-provider"; import { Contract, ethers, Signer } from "ethers"; import { Result } from "ethers/lib/utils"; import inquirer from "inquirer"; @@ -15,18 +15,18 @@ export function normalizeHex(s: string | undefined): string { } } -export async function getProvider(argv: { [name: string]: unknown }) { - const url = getNetworkRpcUrl(argv.network as supportedNetworks); +export async function getProvider(network: supportedNetworks): Promise { + const url = getNetworkRpcUrl(network); const provider = new ethers.providers.JsonRpcProvider(url); return provider; } -export async function getSigner(argv: { [name: string]: unknown }): Promise { - const url = getNetworkRpcUrl(argv.network as supportedNetworks); +export async function getSigner(network: supportedNetworks, ledger: boolean): Promise { + const url = getNetworkRpcUrl(network); const provider = new ethers.providers.JsonRpcProvider(url); let signer: Signer; - if (argv.ledger) { + if (ledger) { console.log("Make sure the Ledger wallet is unlocked and the Ethereum application is open"); signer = new LedgerSigner(provider); const address = await signer.getAddress(); @@ -68,11 +68,11 @@ export async function getSigner(argv: { [name: string]: unknown }): Promise { - const abi = getArmadaAbi(argv.network as supportedNetworks, name); + const abi = getArmadaAbi(network, name); if (signerOrProvider instanceof Signer) { const signer = signerOrProvider; const contract = new Contract(abi.address, abi.abi, signer.provider);