Skip to content

Commit

Permalink
Generate keys in tmp directory
Browse files Browse the repository at this point in the history
Signed-off-by: cyc60 <avsysoev60@gmail.com>
  • Loading branch information
cyc60 committed Jul 30, 2024
1 parent e539619 commit 04b1224
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 25 deletions.
64 changes: 39 additions & 25 deletions src/commands/create_keys.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,34 +62,48 @@ def create_keys(
per_keystore_password: bool,
pool_size: int | None,
) -> None:
config = VaultConfig(vault, Path(data_dir))
config.load(mnemonic)
vault_config = VaultConfig(vault, Path(data_dir))
vault_config.load(mnemonic)

deposit_data_file = config.vault_dir / 'deposit_data.json'
keystores_dir = config.vault_dir / 'keystores'
deposit_data_file = vault_config.vault_dir / 'deposit_data.json'
keystores_dir = vault_config.vault_dir / 'keystores'
password_file = keystores_dir / 'password.txt'

credentials = CredentialManager.generate_credentials(
network=config.network,
vault=vault,
mnemonic=mnemonic,
count=count,
start_index=config.mnemonic_next_index,
pool_size=pool_size,
)
deposit_data = _export_deposit_data_json(
credentials=credentials, filename=str(deposit_data_file), pool_size=pool_size
)

_export_keystores(
credentials=credentials,
keystores_dir=keystores_dir,
password_file=password_file,
per_keystore_password=per_keystore_password,
pool_size=pool_size,
)

config.increment_mnemonic_index(count)
# first generate files in tmp directory
vault_config.create_tmp_dir()
deposit_data_tmp_file = vault_config.vault_tmp_dir / 'deposit_data.json'
keystores_tmp_dir = vault_config.vault_tmp_dir / 'keystores'

try:
credentials = CredentialManager.generate_credentials(
network=vault_config.network,
vault=vault,
mnemonic=mnemonic,
count=count,
start_index=vault_config.mnemonic_next_index,
pool_size=pool_size,
)
deposit_data = _export_deposit_data_json(
credentials=credentials, filename=str(deposit_data_tmp_file), pool_size=pool_size
)

_export_keystores(
credentials=credentials,
keystores_dir=keystores_tmp_dir,
password_file=password_file,
per_keystore_password=per_keystore_password,
pool_size=pool_size,
)

vault_config.increment_mnemonic_index(count)

# move files from tmp dir
deposit_data_tmp_file.replace(deposit_data_file)
for src_file in keystores_tmp_dir.glob('*.json'):
src_file.rename(keystores_dir.joinpath(src_file.name))

finally:
vault_config.remove_tmp_dir()

click.echo(
f'Done. Generated {greenify(count)} keys for {greenify(vault)} vault.\n'
Expand Down
11 changes: 11 additions & 0 deletions src/common/vault_config.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import json
import re
import shutil
from pathlib import Path

import click
Expand Down Expand Up @@ -28,6 +29,16 @@ def __init__(
def exists(self) -> bool:
return self.config_path.is_file()

@property
def vault_tmp_dir(self) -> Path:
return self.vault_dir / '.tmp'

def create_tmp_dir(self) -> None:
self.vault_tmp_dir.mkdir(parents=True, exist_ok=True)

def remove_tmp_dir(self) -> None:
shutil.rmtree(self.vault_tmp_dir)

def load(self, mnemonic: str | None = None) -> None:
if self.config_path.is_file():
with self.config_path.open('r') as f:
Expand Down

0 comments on commit 04b1224

Please sign in to comment.