Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extract text from CLI to enable internationalisation #182

Merged
merged 62 commits into from
May 5, 2021
Merged
Show file tree
Hide file tree
Changes from 44 commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
1413081
Adds abilility to swap out text for internationalisation reasons
CarlBeek Feb 12, 2021
d828bb5
Remove auto function detector
CarlBeek Feb 12, 2021
6e3a0a3
Adds option auto function & file detection
CarlBeek Feb 12, 2021
3924b16
adds `existing_mnemonic`
CarlBeek Feb 12, 2021
5fceda2
Move remainder of messages into json files
CarlBeek Feb 22, 2021
b8c94a8
Fix typo
CarlBeek Feb 22, 2021
1f9626a
Moves `intl/utils.py` to `utils/intl.py`
CarlBeek Feb 22, 2021
4f10175
Add `msg_mnemonic_presentation` back
hwwhww Feb 23, 2021
b7f4188
Use load_text in test_new_mnemonic.py
hwwhww Feb 24, 2021
d38323e
@hwwhww's content nitpicks
CarlBeek Mar 8, 2021
2b222cd
imports 8 languages from crowdin
wackerow Mar 22, 2021
61e0c15
imports 2 languages from Crowdin
wackerow Mar 22, 2021
b288277
Enables intl language selection for `existing_mnemonic` options
CarlBeek Apr 1, 2021
907bb2e
enables `load_text()` to have a `lang` parameter
CarlBeek Apr 1, 2021
e439443
Convert remaining click.Options to JITOptions
CarlBeek Apr 1, 2021
621ee4f
load_test bug fixes
CarlBeek Apr 1, 2021
7b393bd
Adds missing `func` args to `load_text`
CarlBeek Apr 1, 2021
df09118
tests fix
CarlBeek Apr 6, 2021
a84baf3
Merge in dev
CarlBeek Apr 7, 2021
871b689
Merge pull request #191 from wackerow/translation-crowdin-import
CarlBeek Apr 7, 2021
c61f197
Fix intl JSON tags
CarlBeek Apr 7, 2021
a92890a
Adds schema tests to intl json
CarlBeek Apr 7, 2021
ad0b06b
Fix mnemonic defaults
CarlBeek Apr 8, 2021
a2f9a2a
Language selection revamp
CarlBeek Apr 8, 2021
7c99880
Fuzzy language matching + hella callbacks
CarlBeek Apr 8, 2021
17a8840
Adds intl files to build
CarlBeek Apr 8, 2021
63968ec
Adds mising files to macos build
CarlBeek Apr 8, 2021
d607b06
Adds translations files to pysinatller binary
CarlBeek Apr 9, 2021
7bbf7b3
Bump pyinstaller -> 4.2
CarlBeek Apr 9, 2021
6c2c708
Adds importlib-metadata for python < 3.8
CarlBeek Apr 9, 2021
25c093d
Adding before commiting helps
CarlBeek Apr 9, 2021
921b67d
adds zipp to build requirements
CarlBeek Apr 9, 2021
c5ecde0
Translation argument fixes
CarlBeek Apr 12, 2021
0542c1d
Adds indexing to language options
CarlBeek Apr 12, 2021
80f21e2
Merge branch 'dev' into translation
CarlBeek Apr 12, 2021
bcc64dd
Linting fixes
CarlBeek Apr 12, 2021
7471ed6
Update Binary-script testing to new verbage
CarlBeek Apr 12, 2021
6affab3
Adds intl tests
CarlBeek Apr 13, 2021
a7facf4
zh-CN content touchup
CarlBeek Apr 13, 2021
5bf8e54
Revert all CLI arguments to hard-coded English
CarlBeek Apr 13, 2021
9f09a2c
Merge branch 'translation' of github.com:ethereum/eth2.0-deposit-cli …
CarlBeek Apr 13, 2021
3a06e92
Adds revert to "en" if option does not exist for intl language
CarlBeek Apr 14, 2021
58a82d7
Excludes Tk & Tcl binaries from Linux & Win binaries
CarlBeek Apr 14, 2021
da97e6f
Extract new eth1 withdrawl params into JSON files
CarlBeek Apr 14, 2021
06d7920
Move eth1 withdrawal warnings into intl json files
CarlBeek Apr 19, 2021
e15806b
Update README with intl language options
CarlBeek Apr 19, 2021
b31f814
Move int-range checking from click to custom
CarlBeek Apr 19, 2021
68bb20d
Move choice checking from click to custom
CarlBeek Apr 19, 2021
ff34c4b
Intl password confirmations
CarlBeek Apr 23, 2021
06470b0
Small param typo
CarlBeek Apr 26, 2021
902c279
clarify en password confirmation prompts
CarlBeek Apr 26, 2021
b46e702
confirmation refactor
CarlBeek Apr 27, 2021
bd99461
intl start_index confirmation
CarlBeek Apr 27, 2021
126ebe2
intl start_index confirmation
CarlBeek Apr 27, 2021
64faf7e
Fix tests by adding --non_interactive flag.
CarlBeek Apr 30, 2021
261fdd9
adds confirm to start index for non-english languages
CarlBeek Apr 30, 2021
0b8d1c4
disallow 0 deposits (must be 1 or greater)
CarlBeek Apr 30, 2021
7962d4c
Mnemonic password warnign via repeated input
CarlBeek May 3, 2021
d07aea6
More lambdas for laziness!
CarlBeek May 4, 2021
6f388d8
Inform user why input validation failed
CarlBeek May 4, 2021
12a6615
Standardise argument headers
CarlBeek May 5, 2021
afad2b6
Fixes/removes incorrect help text about folders
CarlBeek May 5, 2021
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
7 changes: 5 additions & 2 deletions build_configs/linux/build.spec
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,14 @@ block_cipher = None

a = Analysis(['../../eth2deposit/deposit.py'],
binaries=[],
datas=[('../../eth2deposit/key_handling/key_derivation/word_lists/*.txt', './eth2deposit/key_handling/key_derivation/word_lists/')],
datas=[
('../../eth2deposit/key_handling/key_derivation/word_lists/*.txt', './eth2deposit/key_handling/key_derivation/word_lists/'),
('../../eth2deposit/intl', './eth2deposit/intl',)
],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
excludes=['FixTk', 'tcl', 'tk', '_tkinter', 'tkinter', 'Tkinter'],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
Expand Down
17 changes: 15 additions & 2 deletions build_configs/linux/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
-r ../../requirements.txt

# Build tools for binary distribution
PyInstaller==3.6 \
--hash=sha256:3730fa80d088f8bb7084d32480eb87cbb4ddb64123363763cf8f2a1378c1c4b7
pyinstaller==4.2 \
--hash=sha256:f5c0eeb2aa663cce9a5404292c0195011fa500a6501c873a466b2e8cad3c950c
setuptools==49.2.0 \
--hash=sha256:272c7f48f5cddc5af5901f4265274c421c7eede5c8bc454ac2903d3f8fc365e9 \
--hash=sha256:afe9e81fee0270d3f60d52608549cc8ec4c46dada8c95640c1a00160f577acf2
Expand Down Expand Up @@ -45,3 +45,16 @@ altgraph==0.17 \
macholib==1.14 \
--hash=sha256:0c436bc847e7b1d9bda0560351bf76d7caf930fb585a828d13608839ef42c432 \
--hash=sha256:c500f02867515e6c60a27875b408920d18332ddf96b4035ef03beddd782d4281
pyinstaller-hooks-contrib==2021.1 \
--hash=sha256:27558072021857d89524c42136feaa2ffe4f003f1bdf0278f9b24f6902c1759c \
--hash=sha256:892310e6363655838485ee748bf1c5e5cade7963686d9af8650ee218a3e0b031
importlib-metadata==3.10.0 \
--hash=sha256:c9db46394197244adf2f0b08ec5bc3cf16757e9590b02af1fca085c16c0d600a \
--hash=sha256:d2d46ef77ffc85cbf7dac7e81dd663fde71c45326131bea8033b9bad42268ebe
zipp==3.4.1 \
--hash=sha256:3607921face881ba3e026887d8150cca609d517579abe052ac81fc5aeffdbd76 \
--hash=sha256:51cb66cc54621609dd593d1787f286ee42a5c0adbb4b29abea5a63edc3e03098
typing-extensions==3.7.4.3 \
--hash=sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918 \
--hash=sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c \
--hash=sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f
9 changes: 6 additions & 3 deletions build_configs/macos/build.spec
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,15 @@ block_cipher = None


a = Analysis(['../../eth2deposit/deposit.py'],
binaries=[('/System/Library/Frameworks/Tk.framework/Tk', 'tk'), ('/System/Library/Frameworks/Tcl.framework/Tcl', 'tcl')],
datas=[('../../eth2deposit/key_handling/key_derivation/word_lists/*.txt', './eth2deposit/key_handling/key_derivation/word_lists/')],
binaries=None,
datas=[
('../../eth2deposit/key_handling/key_derivation/word_lists/*.txt', './eth2deposit/key_handling/key_derivation/word_lists/'),
('../../eth2deposit/intl', './eth2deposit/intl',)
],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
excludes=['FixTk', 'tcl', 'tk', '_tkinter', 'tkinter', 'Tkinter'],
CarlBeek marked this conversation as resolved.
Show resolved Hide resolved
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
Expand Down
17 changes: 15 additions & 2 deletions build_configs/macos/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
-r ../../requirements.txt

# Build tools for binary distribution
PyInstaller==3.6 \
--hash=sha256:3730fa80d088f8bb7084d32480eb87cbb4ddb64123363763cf8f2a1378c1c4b7
pyinstaller==4.2 \
--hash=sha256:f5c0eeb2aa663cce9a5404292c0195011fa500a6501c873a466b2e8cad3c950c
setuptools==49.2.0 \
--hash=sha256:272c7f48f5cddc5af5901f4265274c421c7eede5c8bc454ac2903d3f8fc365e9 \
--hash=sha256:afe9e81fee0270d3f60d52608549cc8ec4c46dada8c95640c1a00160f577acf2
Expand Down Expand Up @@ -45,3 +45,16 @@ altgraph==0.17 \
macholib==1.14 \
--hash=sha256:0c436bc847e7b1d9bda0560351bf76d7caf930fb585a828d13608839ef42c432 \
--hash=sha256:c500f02867515e6c60a27875b408920d18332ddf96b4035ef03beddd782d4281
pyinstaller-hooks-contrib==2021.1 \
--hash=sha256:27558072021857d89524c42136feaa2ffe4f003f1bdf0278f9b24f6902c1759c \
--hash=sha256:892310e6363655838485ee748bf1c5e5cade7963686d9af8650ee218a3e0b031
importlib-metadata==3.10.0 \
--hash=sha256:c9db46394197244adf2f0b08ec5bc3cf16757e9590b02af1fca085c16c0d600a \
--hash=sha256:d2d46ef77ffc85cbf7dac7e81dd663fde71c45326131bea8033b9bad42268ebe
zipp==3.4.1 \
--hash=sha256:3607921face881ba3e026887d8150cca609d517579abe052ac81fc5aeffdbd76 \
--hash=sha256:51cb66cc54621609dd593d1787f286ee42a5c0adbb4b29abea5a63edc3e03098
typing-extensions==3.7.4.3 \
--hash=sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918 \
--hash=sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c \
--hash=sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f
7 changes: 5 additions & 2 deletions build_configs/windows/build.spec
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,14 @@ block_cipher = None

a = Analysis(['..\\..\\eth2deposit\\deposit.py'],
binaries=[],
datas=[('..\\..\\eth2deposit\\key_handling\\key_derivation\\word_lists\\*.txt', '.\\eth2deposit\\key_handling\\key_derivation\\word_lists')],
datas=[
('..\\..\\eth2deposit\\key_handling\\key_derivation\\word_lists\\*.txt', '.\\eth2deposit\\key_handling\\key_derivation\\word_lists'),
('..\\..\\eth2deposit\\intl', '.\\eth2deposit\\intl'),
],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
excludes=['FixTk', 'tcl', 'tk', '_tkinter', 'tkinter', 'Tkinter'],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
Expand Down
17 changes: 15 additions & 2 deletions build_configs/windows/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
-r ../../requirements.txt

# Build tools for binary distribution
PyInstaller==3.6 \
--hash=sha256:3730fa80d088f8bb7084d32480eb87cbb4ddb64123363763cf8f2a1378c1c4b7
pyinstaller==4.2 \
--hash=sha256:f5c0eeb2aa663cce9a5404292c0195011fa500a6501c873a466b2e8cad3c950c
setuptools==49.2.0 \
--hash=sha256:272c7f48f5cddc5af5901f4265274c421c7eede5c8bc454ac2903d3f8fc365e9 \
--hash=sha256:afe9e81fee0270d3f60d52608549cc8ec4c46dada8c95640c1a00160f577acf2
Expand Down Expand Up @@ -65,3 +65,16 @@ pywin32==228 \
pywin32-ctypes==0.2.0 \
--hash=sha256:9dc2d991b3479cc2df15930958b674a48a227d5361d413827a4cfd0b5876fc98 \
--hash=sha256:24ffc3b341d457d48e8922352130cf2644024a4ff09762a2261fd34c36ee5942
pyinstaller-hooks-contrib==2021.1 \
--hash=sha256:27558072021857d89524c42136feaa2ffe4f003f1bdf0278f9b24f6902c1759c \
--hash=sha256:892310e6363655838485ee748bf1c5e5cade7963686d9af8650ee218a3e0b031
importlib-metadata==3.10.0 \
--hash=sha256:c9db46394197244adf2f0b08ec5bc3cf16757e9590b02af1fca085c16c0d600a \
--hash=sha256:d2d46ef77ffc85cbf7dac7e81dd663fde71c45326131bea8033b9bad42268ebe
zipp==3.4.1 \
--hash=sha256:3607921face881ba3e026887d8150cca609d517579abe052ac81fc5aeffdbd76 \
--hash=sha256:51cb66cc54621609dd593d1787f286ee42a5c0adbb4b29abea5a63edc3e03098
typing-extensions==3.7.4.3 \
--hash=sha256:7cb407020f00f7bfc3cb3e7881628838e69d8f3fcab2f64742a5e76b2f841918 \
--hash=sha256:99d4073b617d30288f569d3f13d2bd7548c3a7e4c8de87db09a9d29bb3a4a60c \
--hash=sha256:dafc7639cde7f1b6e1acc0f457842a83e722ccca8eef5270af2d74792619a89f
48 changes: 21 additions & 27 deletions eth2deposit/cli/existing_mnemonic.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
from eth2deposit.utils.constants import (
WORD_LISTS_PATH,
)
from eth2deposit.utils.click import jit_option
from eth2deposit.utils.intl import load_text
from .generate_keys import (
generate_keys,
generate_keys_arguments_decorator,
Expand All @@ -20,51 +22,43 @@ def validate_mnemonic(cts: click.Context, param: Any, mnemonic: str) -> str:
if verify_mnemonic(mnemonic, WORD_LISTS_PATH):
return mnemonic
else:
raise ValidationError('That is not a valid mnemonic, please check for typos.')
raise ValidationError(load_text(['err_invalid_mnemonic']))


@click.command(
help='Generate (or recover) keys from an existing mnemonic',
help=load_text(['arg_existing_mnemonic', 'help'], func='existing_mnemonic'),
)
@click.pass_context
@click.option(
'--mnemonic',
@jit_option(
callback=validate_mnemonic,
help=('The mnemonic that you used to generate your keys. (It is recommended not to use this argument, and wait for '
'the CLI to ask you for your mnemonic as otherwise it will appear in your shell history.)'),
prompt='Please enter your mnemonic separated by spaces (" ")',
help=lambda: load_text(['arg_mnemonic', 'help'], func='existing_mnemonic'),
param_decls='--mnemonic',
prompt=lambda: load_text(['arg_mnemonic', 'prompt'], func='existing_mnemonic'),
required=True,
type=str,
)
@click.password_option(
'--mnemonic-password',
@jit_option(
confirmation_prompt=True,
default='',
help=('This is almost certainly not the argument you are looking for: it is for mnemonic passwords, not keystore '
'passwords. Providing a password here when you didn\'t use one initially, can result in lost keys (and '
'therefore funds)! Also note that if you used this tool to generate your mnemonic intially, then you did not '
'use a mnemonic password. However, if you are certain you used a password to "increase" the security of your '
'mnemonic, this is where you enter it.'),
help=load_text(['arg_mnemonic_password', 'help'], func='existing_mnemonic'),
hidden=True,
param_decls='--mnemonic-password',
prompt=False,
)
@click.option(
'--validator_start_index',
@jit_option(
confirmation_prompt=True,
default=0,
help=('Enter the index (key number) you wish to start generating more keys from. '
'For example, if you\'ve generated 4 keys in the past, you\'d enter 4 here,'),
prompt=('Enter the index (key number) you wish to start generating more keys from. '
'For example, if you\'ve generated 4 keys in the past, you\'d enter 4 here,'),
help=lambda: load_text(['arg_validator_start_index', 'help'], func='existing_mnemonic'),
param_decls="--validator_start_index",
prompt=lambda: load_text(['arg_validator_start_index', 'prompt'], func='existing_mnemonic'),
type=click.IntRange(0, 2**32 - 1),
)
@generate_keys_arguments_decorator
@click.pass_context
def existing_mnemonic(ctx: click.Context, mnemonic: str, mnemonic_password: str, **kwargs: Any) -> None:
if mnemonic_password != '':
click.clear()
click.confirm(
('Are you absolutely certain that you used a mnemonic password? '
'(This is different from a keystore password!) '
'Using one when you are not supposed to can result in loss of funds!'),
abort=True)
click.confirm(load_text(['msg_mnemonic_password_confirm']), abort=True)

ctx.obj = {'mnemonic': mnemonic, 'mnemonic_password': mnemonic_password}
ctx.obj = {} if ctx.obj is None else ctx.obj # Create a new ctx.obj if it doesn't exist
ctx.obj.update({'mnemonic': mnemonic, 'mnemonic_password': mnemonic_password})
ctx.forward(generate_keys)
66 changes: 33 additions & 33 deletions eth2deposit/cli/generate_keys.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
DEFAULT_VALIDATOR_KEYS_FOLDER_NAME,
)
from eth2deposit.utils.ascii_art import RHINO_0
from eth2deposit.utils.click import jit_option
from eth2deposit.utils.intl import load_text
from eth2deposit.settings import (
ALL_CHAINS,
MAINNET,
Expand All @@ -39,23 +41,23 @@ def validate_password(cts: click.Context, param: Any, password: str) -> str:
try:
validate_password_strength(password)
except ValidationError as e:
click.echo(f'Error: {e} Please retype.')
click.echo(e)
else:
is_valid_password = True

while not is_valid_password:
password = get_password(text='Type the password that secures your validator keystore(s)')
password = get_password(load_text(['msg_password_prompt']))
try:
validate_password_strength(password)
except ValidationError as e:
click.echo(f'Error: {e} Please retype.')
click.echo(e)
else:
# Confirm password
password_confirmation = get_password(text='Repeat for confirmation')
password_confirmation = get_password(load_text(['msg_password_confirm']))
CarlBeek marked this conversation as resolved.
Show resolved Hide resolved
if password == password_confirmation:
is_valid_password = True
else:
click.echo('Error: the two entered values do not match. Please retype again.')
click.echo(load_text(['err_password_mismatch']))

return password

CarlBeek marked this conversation as resolved.
Show resolved Hide resolved
Expand All @@ -78,41 +80,39 @@ def generate_keys_arguments_decorator(function: Callable[..., Any]) -> Callable[
to obtain the necessary arguments for the generate_keys() subcommand.
'''
decorators = [
click.option(
'--num_validators',
prompt='Please choose how many validators you wish to run',
help='The number of validators keys you want to generate (you can always generate more later)',
jit_option(
help=lambda: load_text(['num_validators', 'help'], func='generate_keys_arguments_decorator'),
param_decls="--num_validators",
prompt=lambda: load_text(['num_validators', 'prompt'], func='generate_keys_arguments_decorator'),
required=True,
type=click.IntRange(0, 2**32 - 1),
),
click.option(
'--folder',
jit_option(
default=os.getcwd(),
help='The folder to place the generated keystores and deposit_data.json in',
help=lambda: load_text(['folder', 'help'], func='generate_keys_arguments_decorator'),
param_decls='--folder',
type=click.Path(exists=True, file_okay=False, dir_okay=True),
),
click.option(
'--chain',
jit_option(
default=MAINNET,
help='The version of eth2 you are targeting. use "mainnet" if you are depositing ETH',
prompt='Please choose the (mainnet or testnet) network/chain name',
help=lambda: load_text(['chain', 'help'], func='generate_keys_arguments_decorator'),
param_decls='--chain',
prompt=lambda: load_text(['chain', 'prompt'], func='generate_keys_arguments_decorator'),
type=click.Choice(ALL_CHAINS.keys(), case_sensitive=False),
),
click.password_option(
'--keystore_password',
jit_option(
callback=validate_password,
help=('The password that will secure your keystores. You will need to re-enter this to decrypt them when '
'you setup your eth2 validators. (It is reccomened not to use this argument, and wait for the CLI '
'to ask you for your mnemonic as otherwise it will appear in your shell history.)'),
prompt='Type the password that secures your validator keystore(s)',
confirmation_prompt=True,
help=lambda: load_text(['keystore_password', 'help'], func='generate_keys_arguments_decorator'),
hide_input=True,
param_decls='--keystore_password',
prompt=lambda: load_text(['keystore_password', 'prompt'], func='generate_keys_arguments_decorator'),
),
click.option(
'--eth1_withdrawal_address',
default=None,
jit_option(
callback=validate_eth1_withdrawal_address,
help=('If this field is set and valid, the given Eth1 address will be used to create the '
'withdrawal credentials. Otherwise, it will generate withdrawal credentials with the '
'mnemonic-derived withdrawal public key.'),
default=None,
help=lambda: load_text(['eth1_withdrawal_address', 'help'], func='generate_keys_arguments_decorator'),
param_decls='--eth1_withdrawal_address',
),
]
for decorator in reversed(decorators):
Expand All @@ -134,7 +134,7 @@ def generate_keys(ctx: click.Context, validator_start_index: int,
os.mkdir(folder)
click.clear()
click.echo(RHINO_0)
click.echo('Creating your keys.')
click.echo(load_text(['msg_key_creation']))
credentials = CredentialList.from_mnemonic(
mnemonic=mnemonic,
mnemonic_password=mnemonic_password,
Expand All @@ -147,8 +147,8 @@ def generate_keys(ctx: click.Context, validator_start_index: int,
keystore_filefolders = credentials.export_keystores(password=keystore_password, folder=folder)
deposits_file = credentials.export_deposit_data_json(folder=folder)
if not credentials.verify_keystores(keystore_filefolders=keystore_filefolders, password=keystore_password):
raise ValidationError("Failed to verify the keystores.")
raise ValidationError(load_text(['err_verify_keystores']))
if not verify_deposit_data_json(deposits_file, credentials.credentials):
raise ValidationError("Failed to verify the deposit data JSON files.")
click.echo('\nSuccess!\nYour keys can be found at: %s' % folder)
click.pause('\n\nPress any key.')
raise ValidationError(load_text(['err_verify_deposit']))
click.echo(load_text(['msg_creation_success']) + folder)
click.pause(load_text(['msg_pause']))
Loading