commit ae2de3d2ec019bec40794bc97eb043595add0dbb
parent 2a13a0d006f55c6c216b6f0c3175af47b6b46238
Author: Carlosokumu <carlosokumu254@gmail.com>
Date: Mon, 16 Mar 2026 10:13:06 +0300
enable config dir override
Diffstat:
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()