import asyncio
import aiopollen
import click
import caspia
from caspia.node.cli import utils
[docs]async def print_hwid(node):
hwid = await node.system.read_hwid()
print(hwid.hex())
[docs]async def print_overview(node, can_id):
await node.load_configuration()
for component in node.components.values():
try:
await component.load_state()
except (caspia.node.errors.CaspiaError, aiopollen.errors.PollenError) as e:
msg = f'Failed to load state of component {component}: {e}'
click.secho(msg, fg='red', err=True)
buildinfo = await node.system.read_buildinfo()
click.secho(caspia.node.reprf_str(node))
click.secho(caspia.node.reprf_str(buildinfo))
@click.command()
@click.argument('can-id', type=utils.canid_input())
@click.option('--hwid', is_flag=True)
@click.pass_context
@utils.async_command
async def info(ctx, can_id, hwid):
"""Print info about a specific node."""
loop = asyncio.get_event_loop()
with aiopollen.Client(ctx.obj['local_can_id'], ctx.obj['bus'], loop) as client:
node = caspia.node.Node(client, can_id)
if hwid:
await print_hwid(node)
else:
await print_overview(node, can_id)