usawa

Signed, immutable accounting.
Log | Files | Refs | Submodules | LICENSE

commit ae2de3d2ec019bec40794bc97eb043595add0dbb
parent 2a13a0d006f55c6c216b6f0c3175af47b6b46238
Author: Carlosokumu <carlosokumu254@gmail.com>
Date:   Mon, 16 Mar 2026 10:13:06 +0300

enable config dir override

Diffstat:
Mdummy/usawa/config.py | 36++----------------------------------
Mdummy/usawa/gui/__init__.py | 34++++++++++++++++++++++++++--------
2 files changed, 28 insertions(+), 42 deletions(-)

diff --git a/dummy/usawa/config.py b/dummy/usawa/config.py @@ -1,45 +1,13 @@ import os import confini -from xdg.BaseDirectory import save_data_path import logging __datadir = os.path.join(os.path.dirname(os.path.realpath(__file__)), "data") logger = logging.getLogger(__name__) -def load(): - cfg = confini.Config(__datadir, env_prefix="USAWA") +def load_config(config_dir=None): + cfg = confini.Config(__datadir, env_prefix="USAWA", override_dirs=config_dir or []) cfg.censor("WALLET_KEY_PASSPHRASE") cfg.process() - - if "VALKEY_HOST" in cfg.store: - valkey_host = cfg.get("VALKEY_HOST") - else: - valkey_host = save_data_path("usawa") - cfg.add(valkey_host, "VALKEY_HOST") - - if "VALKEY_PORT" in cfg.store: - valkey_port = cfg.get("VALKEY_PORT") - else: - valkey_port = save_data_path("usawa") - cfg.add(valkey_port, "VALKEY_PORT") - - if "WALLET_KEY_PASSPHRASE" in cfg.store: - passphrase = cfg.get("WALLET_KEY_PASSPHRASE") - else: - passphrase = save_data_path("usawa") - cfg.add(passphrase, "WALLET_KEY_PASSPHRASE") - - if "SERVER_SOCKET_FILE_PATH" in cfg.store: - socket_file_path = cfg.get("SERVER_SOCKET_FILE_PATH") - else: - socket_file_path = save_data_path("usawa") - cfg.add(socket_file_path, "SERVER_SOCKET_FILE_PATH") - - if "FS_RESOLVER_STORE_PATH" in cfg.store: - fs_resolver_store_path = cfg.get("FS_RESOLVER_STORE_PATH") - else: - fs_resolver_store_path = save_data_path("usawa") - cfg.add(fs_resolver_store_path, "FS_RESOLVER_STORE_PATH") - return cfg diff --git a/dummy/usawa/gui/__init__.py b/dummy/usawa/gui/__init__.py @@ -8,7 +8,7 @@ gi.require_version("Gtk", "4.0") gi.require_version("Adw", "1") from gi.repository import Gtk, Adw, Gio from .main_window import UsawaMainWindow -from usawa.config import load as load_config +from usawa.config import load_config logg = logging.getLogger("gui.app") @@ -35,14 +35,32 @@ class Usawa(Adw.Application): def do_command_line(self, cli): args = cli.get_arguments() - if len(args) > 1: - if args[1] == "setup-wallet": - wallet_dir = args[2] if len(args) > 2 else None - setup_wallet(wallet_dir=wallet_dir) - return 0 - self.ledger_file = args[1] + config_dir = None + filtered_args = [] + i = 1 + while i < len(args): + if args[i] == "-c": + if i + 1 < len(args): + config_dir = args[i + 1] + i += 2 + else: + logg.error("-c flag requires a directory argument") + return 1 + else: + filtered_args.append(args[i]) + i += 1 - self.cfg = load_config() + if len(filtered_args) == 0: + logg.error("missing ledger file argument") + return 1 + + if filtered_args[0] == "setup-wallet": + wallet_dir = filtered_args[1] if len(filtered_args) > 1 else None + setup_wallet(wallet_dir=wallet_dir) + return 0 + + self.ledger_file = filtered_args[0] + self.cfg = load_config(config_dir=config_dir) for k in self.cfg.all(): logg.debug("config {} => {}".format(k, self.cfg.get(k))) self.activate()