Skip to content

Commit 2f11284

Browse files
Endogenclaude
andcommitted
feat(cli): add dashboard configuration flags
Pass --enable-dashboard, --dashboard-host, and --dashboard-port through network create/join and node init to xian-abci's render_cometbft_config. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent ef3c7dd commit 2f11284

2 files changed

Lines changed: 54 additions & 0 deletions

File tree

src/xian_cli/cli.py

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,17 @@ def _handle_network_create(args: argparse.Namespace) -> int:
314314
blocks_to_keep=(
315315
args.blocks_to_keep if validator["is_bootstrap"] else 100000
316316
),
317+
dashboard_enabled=(
318+
args.enable_dashboard if validator["is_bootstrap"] else False
319+
),
320+
dashboard_host=(
321+
args.dashboard_host
322+
if validator["is_bootstrap"]
323+
else "127.0.0.1"
324+
),
325+
dashboard_port=(
326+
args.dashboard_port if validator["is_bootstrap"] else 8080
327+
),
317328
)
318329
write_json(profile_path, profile.to_dict(), force=args.force)
319330
validator_result["profile_path"] = str(profile_path)
@@ -421,6 +432,9 @@ def _handle_network_join(args: argparse.Namespace) -> int:
421432
home=str(args.home) if args.home is not None else None,
422433
pruning_enabled=args.enable_pruning,
423434
blocks_to_keep=args.blocks_to_keep,
435+
dashboard_enabled=args.enable_dashboard,
436+
dashboard_host=args.dashboard_host,
437+
dashboard_port=args.dashboard_port,
424438
)
425439
target = args.output or base_dir / "nodes" / f"{args.name}.json"
426440
if not target.is_absolute():
@@ -813,6 +827,9 @@ def _initialize_node_from_args(args: argparse.Namespace) -> dict:
813827
service_node=bool(profile.get("service_node")),
814828
enable_pruning=bool(profile.get("pruning_enabled")),
815829
blocks_to_keep=int(profile.get("blocks_to_keep", 100000)),
830+
dashboard_enabled=bool(profile.get("dashboard_enabled")),
831+
dashboard_host=str(profile.get("dashboard_host", "127.0.0.1")),
832+
dashboard_port=int(profile.get("dashboard_port", 8080)),
816833
)
817834

818835
result = node_setup.materialize_cometbft_home(
@@ -1300,6 +1317,23 @@ def build_parser() -> argparse.ArgumentParser:
13001317
default=100000,
13011318
help="number of blocks to retain when pruning is enabled",
13021319
)
1320+
create_parser.add_argument(
1321+
"--enable-dashboard",
1322+
action="store_true",
1323+
help="enable the node dashboard and chain explorer web UI",
1324+
)
1325+
create_parser.add_argument(
1326+
"--dashboard-host",
1327+
type=str,
1328+
default="127.0.0.1",
1329+
help="dashboard listen address (default: 127.0.0.1)",
1330+
)
1331+
create_parser.add_argument(
1332+
"--dashboard-port",
1333+
type=int,
1334+
default=8080,
1335+
help="dashboard listen port (default: 8080)",
1336+
)
13031337
create_parser.add_argument(
13041338
"--output",
13051339
type=Path,
@@ -1431,6 +1465,23 @@ def build_parser() -> argparse.ArgumentParser:
14311465
default=100000,
14321466
help="number of blocks to retain when pruning is enabled",
14331467
)
1468+
join_parser.add_argument(
1469+
"--enable-dashboard",
1470+
action="store_true",
1471+
help="enable the node dashboard and chain explorer web UI",
1472+
)
1473+
join_parser.add_argument(
1474+
"--dashboard-host",
1475+
type=str,
1476+
default="127.0.0.1",
1477+
help="dashboard listen address (default: 127.0.0.1)",
1478+
)
1479+
join_parser.add_argument(
1480+
"--dashboard-port",
1481+
type=int,
1482+
default=8080,
1483+
help="dashboard listen port (default: 8080)",
1484+
)
14341485
join_parser.add_argument(
14351486
"--output",
14361487
type=Path,

src/xian_cli/models.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ class NodeProfile:
3434
home: str | None = None
3535
pruning_enabled: bool = False
3636
blocks_to_keep: int = 100000
37+
dashboard_enabled: bool = False
38+
dashboard_host: str = "127.0.0.1"
39+
dashboard_port: int = 8080
3740

3841
def to_dict(self) -> dict:
3942
return asdict(self)

0 commit comments

Comments
 (0)