From 074e2b2b74a2b2311b9775348caeab68e068793c Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Mon, 13 Jun 2022 17:30:21 +0000 Subject: [PATCH] daemon.py: new method: get_exec_version_str() --- mmgen/daemon.py | 16 ++++++++++++++++ test/include/coin_daemon_control.py | 6 +++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/mmgen/daemon.py b/mmgen/daemon.py index 4e4acbcd..7c28f82e 100755 --- a/mmgen/daemon.py +++ b/mmgen/daemon.py @@ -284,6 +284,22 @@ class CoinDaemon(Daemon): yield CoinProtocol.Base.create_network_id(coin,network) return list(gen()) + @classmethod + def get_exec_version_str(cls): + try: + cp = run([cls.exec_fn,'--version'],stdout=PIPE,stderr=PIPE,check=True) + except: + try: + cp = run([cls.exec_fn,'version'],stdout=PIPE,stderr=PIPE,check=True) + except: + die(2,f'Unable to execute {cls.exec_fn}') + + if cp.returncode: + die(2,f'Unable to execute {cls.exec_fn}') + else: + res = cp.stdout.decode().splitlines() + return ( res[0] if len(res) == 1 else [s for s in res if 'ersion' in s][0] ).strip() + def __new__(cls, network_id = None, proto = None, diff --git a/test/include/coin_daemon_control.py b/test/include/coin_daemon_control.py index 58106754..84ebb42e 100755 --- a/test/include/coin_daemon_control.py +++ b/test/include/coin_daemon_control.py @@ -23,6 +23,7 @@ opts_data = { -q, --quiet Produce quieter output -u, --usermode Run the daemon in user (non test-suite) mode -v, --verbose Produce more verbose output +-V, --print-version Print version strings from exec’ed daemons (not RPC) -W, --no-wait Don't wait for daemons to change state before exiting """, 'notes': """ @@ -50,7 +51,10 @@ def run(network_id=None,proto=None,daemon_id=None): daemon_id = daemon_id ) d.debug = d.debug or opt.debug d.wait = not opt.no_wait - if opt.get_state: + + if opt.print_version: + msg('{:16} {}'.format( d.exec_fn+':', d.get_exec_version_str() )) + elif opt.get_state: print(d.state_msg()) elif opt.testing: for cmd in d.start_cmds if action == 'start' else [d.stop_cmd]: