Skip to content

Commit b086c52

Browse files
authored
feat: json output for get_node_info (#10771)
Need this to (easily) update the network joiner script.
1 parent c8e7763 commit b086c52

File tree

2 files changed

+59
-23
lines changed

2 files changed

+59
-23
lines changed
+57-22
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,69 @@
11
import { type AztecNode, type PXE, createAztecNodeClient, createCompatibleClient } from '@aztec/aztec.js';
22
import { type LogFn, type Logger } from '@aztec/foundation/log';
33

4-
export async function getNodeInfo(rpcUrl: string, pxeRequest: boolean, debugLogger: Logger, log: LogFn) {
4+
export async function getNodeInfo(
5+
rpcUrl: string,
6+
pxeRequest: boolean,
7+
debugLogger: Logger,
8+
json: boolean,
9+
log: LogFn,
10+
logJson: (output: any) => void,
11+
) {
512
let client: AztecNode | PXE;
613
if (pxeRequest) {
714
client = await createCompatibleClient(rpcUrl, debugLogger);
815
} else {
916
client = createAztecNodeClient(rpcUrl);
1017
}
1118
const info = await client.getNodeInfo();
12-
log(`Node Version: ${info.nodeVersion}`);
13-
log(`Chain Id: ${info.l1ChainId}`);
14-
log(`Protocol Version: ${info.protocolVersion}`);
15-
log(`Node ENR: ${info.enr}`);
16-
log(`L1 Contract Addresses:`);
17-
log(` Rollup Address: ${info.l1ContractAddresses.rollupAddress.toString()}`);
18-
log(` Registry Address: ${info.l1ContractAddresses.registryAddress.toString()}`);
19-
log(` L1 -> L2 Inbox Address: ${info.l1ContractAddresses.inboxAddress.toString()}`);
20-
log(` L2 -> L1 Outbox Address: ${info.l1ContractAddresses.outboxAddress.toString()}`);
21-
log(` Fee Juice Address: ${info.l1ContractAddresses.feeJuiceAddress.toString()}`);
22-
log(` Staking Asset Address: ${info.l1ContractAddresses.stakingAssetAddress.toString()}`);
23-
log(` Fee Juice Portal Address: ${info.l1ContractAddresses.feeJuicePortalAddress.toString()}`);
24-
log(` CoinIssuer Address: ${info.l1ContractAddresses.coinIssuerAddress.toString()}`);
25-
log(` RewardDistributor Address: ${info.l1ContractAddresses.rewardDistributorAddress.toString()}`);
26-
log(` GovernanceProposer Address: ${info.l1ContractAddresses.governanceProposerAddress.toString()}`);
27-
log(` Governance Address: ${info.l1ContractAddresses.governanceAddress.toString()}`);
19+
if (json) {
20+
logJson({
21+
nodeVersion: info.nodeVersion,
22+
l1ChainId: info.l1ChainId,
23+
protocolVersion: info.protocolVersion,
24+
enr: info.enr,
25+
l1ContractAddresses: {
26+
rollup: info.l1ContractAddresses.rollupAddress.toString(),
27+
registry: info.l1ContractAddresses.registryAddress.toString(),
28+
inbox: info.l1ContractAddresses.inboxAddress.toString(),
29+
outbox: info.l1ContractAddresses.outboxAddress.toString(),
30+
feeJuice: info.l1ContractAddresses.feeJuiceAddress.toString(),
31+
stakingAsset: info.l1ContractAddresses.stakingAssetAddress.toString(),
32+
feeJuicePortal: info.l1ContractAddresses.feeJuicePortalAddress.toString(),
33+
coinIssuer: info.l1ContractAddresses.coinIssuerAddress.toString(),
34+
rewardDistributor: info.l1ContractAddresses.rewardDistributorAddress.toString(),
35+
governanceProposer: info.l1ContractAddresses.governanceProposerAddress.toString(),
36+
governance: info.l1ContractAddresses.governanceAddress.toString(),
37+
},
38+
protocolContractAddresses: {
39+
classRegisterer: info.protocolContractAddresses.classRegisterer.toString(),
40+
feeJuice: info.protocolContractAddresses.feeJuice.toString(),
41+
instanceDeployer: info.protocolContractAddresses.instanceDeployer.toString(),
42+
multiCallEntrypoint: info.protocolContractAddresses.multiCallEntrypoint.toString(),
43+
},
44+
});
45+
} else {
46+
log(`Node Version: ${info.nodeVersion}`);
47+
log(`Chain Id: ${info.l1ChainId}`);
48+
log(`Protocol Version: ${info.protocolVersion}`);
49+
log(`Node ENR: ${info.enr}`);
50+
log(`L1 Contract Addresses:`);
51+
log(` Rollup Address: ${info.l1ContractAddresses.rollupAddress.toString()}`);
52+
log(` Registry Address: ${info.l1ContractAddresses.registryAddress.toString()}`);
53+
log(` L1 -> L2 Inbox Address: ${info.l1ContractAddresses.inboxAddress.toString()}`);
54+
log(` L2 -> L1 Outbox Address: ${info.l1ContractAddresses.outboxAddress.toString()}`);
55+
log(` Fee Juice Address: ${info.l1ContractAddresses.feeJuiceAddress.toString()}`);
56+
log(` Staking Asset Address: ${info.l1ContractAddresses.stakingAssetAddress.toString()}`);
57+
log(` Fee Juice Portal Address: ${info.l1ContractAddresses.feeJuicePortalAddress.toString()}`);
58+
log(` CoinIssuer Address: ${info.l1ContractAddresses.coinIssuerAddress.toString()}`);
59+
log(` RewardDistributor Address: ${info.l1ContractAddresses.rewardDistributorAddress.toString()}`);
60+
log(` GovernanceProposer Address: ${info.l1ContractAddresses.governanceProposerAddress.toString()}`);
61+
log(` Governance Address: ${info.l1ContractAddresses.governanceAddress.toString()}`);
2862

29-
log(`L2 Contract Addresses:`);
30-
log(` Class Registerer: ${info.protocolContractAddresses.classRegisterer.toString()}`);
31-
log(` Fee Juice: ${info.protocolContractAddresses.feeJuice.toString()}`);
32-
log(` Instance Deployer: ${info.protocolContractAddresses.instanceDeployer.toString()}`);
33-
log(` MultiCall: ${info.protocolContractAddresses.multiCallEntrypoint.toString()}`);
63+
log(`L2 Contract Addresses:`);
64+
log(` Class Registerer: ${info.protocolContractAddresses.classRegisterer.toString()}`);
65+
log(` Fee Juice: ${info.protocolContractAddresses.feeJuice.toString()}`);
66+
log(` Instance Deployer: ${info.protocolContractAddresses.instanceDeployer.toString()}`);
67+
log(` MultiCall: ${info.protocolContractAddresses.multiCallEntrypoint.toString()}`);
68+
}
3469
}

yarn-project/cli/src/cmds/pxe/index.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
144144
.command('get-node-info')
145145
.description('Gets the information of an Aztec node from a PXE or directly from an Aztec node.')
146146
.option('--node-url <string>', 'URL of the node.')
147+
.option('--json', 'Emit output as json')
147148
.addOption(makePxeOption(false))
148149
.action(async options => {
149150
const { getNodeInfo } = await import('./get_node_info.js');
@@ -153,7 +154,7 @@ export function injectCommands(program: Command, log: LogFn, debugLogger: Logger
153154
} else {
154155
url = options.rpcUrl;
155156
}
156-
await getNodeInfo(url, !options.nodeUrl, debugLogger, log);
157+
await getNodeInfo(url, !options.nodeUrl, debugLogger, options.json, log, logJson(log));
157158
});
158159

159160
program

0 commit comments

Comments
 (0)