Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 40 additions & 11 deletions manage.py
Original file line number Diff line number Diff line change
@@ -1,23 +1,52 @@
import boa
import os
import sys
import click
import boa
from eth_account import Account

from scripts.deploy import deploy_commands
from scripts.tests import test_commands
from settings.config import settings


@click.group("commands")
def commands(): ...
@click.group(name="commands", help="Deployment & test command suite.")
def cli() -> None:
"""Top-level CLI group."""
pass


if __name__ == "__main__":
if settings.DEBUG:
boa.fork(settings.WEB3_PROVIDER_URL, block_identifier="latest")
def _init_network() -> None:
"""Initialize Boa network environment based on settings."""
provider = getattr(settings, "WEB3_PROVIDER_URL", None)
if not provider:
click.echo("ERROR: WEB3_PROVIDER_URL is not set.", err=True)
sys.exit(1)

if getattr(settings, "DEBUG", False):
# Fork latest state for safe local testing
boa.fork(provider, block_identifier="latest")
else:
boa.set_network_env(settings.WEB3_PROVIDER_URL)
boa.env.add_account(Account.from_key(settings.DEPLOYER_EOA_PRIVATE_KEY))
boa.set_network_env(provider)
# Prefer settings value; fall back to env var if needed
priv_key = getattr(settings, "DEPLOYER_EOA_PRIVATE_KEY", "") or os.getenv("DEPLOYER_EOA_PRIVATE_KEY", "")
if not priv_key:
click.echo(
"WARNING: DEPLOYER_EOA_PRIVATE_KEY is empty. Continuing without a deployer account.",
err=True,
)
return
boa.env.add_account(Account.from_key(priv_key))

commands.add_command(deploy_commands)
commands.add_command(test_commands)
commands()

# Register sub-commands
cli.add_command(deploy_commands)
cli.add_command(test_commands)


if __name__ == "__main__":
try:
_init_network()
cli()
except Exception as exc:
click.echo(f"ERROR: {exc}", err=True)
sys.exit(1)