mango-explorer/bin/generate-keypair

52 lines
1.6 KiB
Python
Executable File

#!/usr/bin/env python3
import argparse
import os
import os.path
import sys
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
import mango # nopep8
parser = argparse.ArgumentParser(
description="generates a Solana keypair and writes it to an ID file"
)
mango.ContextBuilder.add_command_line_parameters(parser)
parser.add_argument(
"--filename",
type=str,
default="id.json",
help="filename for saving the JSON-formatted keypair (default: id.json)",
)
parser.add_argument(
"--overwrite",
action="store_true",
default=False,
help="overwrite the file if it exists",
)
args: argparse.Namespace = mango.parse_args(parser)
if os.path.isdir(args.filename):
mango.output(
f"""ERROR: Filename parameter {args.filename} is a directory, not a file.
This can happen when docker auto-creates -v parameters if they don't already exist. To work around this problem, the file {args.filename} must exist before the first time the docker container is run.
If you are running this command via docker, and this error is unexpected, run the following:
rmdir '{args.filename}'
touch '{args.filename}'
chmod 600 '{args.filename}'
Then run your generate-keypair command again."""
)
else:
wallet = mango.Wallet.create()
wallet.save(args.filename, args.overwrite)
mango.output(
f"""
Wrote new keypair to {args.filename}
==================================================================================
pubkey: {wallet.address}
=================================================================================="""
)