52 lines
1.6 KiB
Python
Executable File
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}
|
|
=================================================================================="""
|
|
)
|