From 2e8c52e9b1e1036129d39ba8d5a16f63e37691c8 Mon Sep 17 00:00:00 2001
From: dcarron <daniel.carron@idiap.ch>
Date: Tue, 7 May 2024 13:35:52 +0200
Subject: [PATCH] [cli] Fix info command

---
 src/mednet/scripts/info.py | 92 +++++++++++++++++++++++++++-----------
 1 file changed, 65 insertions(+), 27 deletions(-)

diff --git a/src/mednet/scripts/info.py b/src/mednet/scripts/info.py
index b8f3078e..5d4d3508 100644
--- a/src/mednet/scripts/info.py
+++ b/src/mednet/scripts/info.py
@@ -5,10 +5,52 @@
 import click
 from clapper.click import verbosity_option
 from clapper.logging import setup
+from clapper.rc import UserDefaults
 
 logger = setup(__name__.split(".")[0], format="%(levelname)s: %(message)s")
 
 
+def _echo(left: str, right: str, color: str = "white") -> None:
+    s = [
+        click.style(left, bold=True),
+        click.style(": ", bold=True),
+        click.style(right, fg=color),
+    ]
+    click.echo("".join(s))
+
+
+def database_configuration(
+    rc: UserDefaults, raw_databases: dict[str, dict[str, str]], lib_name: str
+):
+    """Display the database configuration for a particular library.
+
+    Parameters
+    ----------
+    rc
+        The user defaults read from the user .toml configuration file.
+    raw_databases
+        List of all supported (raw) databases.
+    lib_name
+        Name of the library to show configurations for.
+    """
+
+    if not rc.path.exists():
+        _echo(f"{lib_name} configuration", f"{str(rc.path)} [MISSING]", "white")
+    else:
+        _echo(f"{lib_name} configuration", str(rc.path), "white")
+
+    click.secho(f"configured {lib_name} databases:", bold=True)
+    for k, v in raw_databases.items():
+        if "datadir" not in v:
+            # this database does not have a "datadir"
+            continue
+
+        if v["datadir"] is not None:
+            _echo(f"  - {k} ({v['module']})", f"{v['datadir']}", "green")
+        else:
+            _echo(f"  - {k} ({v['module']})", "NOT installed", "red")
+
+
 @click.command(
     epilog="""Examples:
 
@@ -28,20 +70,21 @@ def info(
 
     import typing
 
-    from ..utils.rc import load_rc
-    from .database import _get_raw_databases
-    from .utils import execution_metadata
-
-    def _echo(left: str, right: str, color: str = "white") -> None:
-        s = [
-            click.style(left, bold=True),
-            click.style(": ", bold=True),
-            click.style(right, fg=color),
-        ]
-        click.echo("".join(s))
+    from mednet.libs.classification.scripts.database import (
+        _get_raw_databases as _get_raw_databases_classification,
+    )
+    from mednet.libs.classification.utils.rc import (
+        load_rc as load_rc_classification,
+    )
+    from mednet.libs.common.scripts.utils import execution_metadata
+    from mednet.libs.segmentation.scripts.database import (
+        _get_raw_databases as _get_raw_databases_segmentation,
+    )
+    from mednet.libs.segmentation.utils.rc import (
+        load_rc as load_rc_segmentation,
+    )
 
     m = execution_metadata()
-    c = load_rc()
 
     _echo("mednet version", typing.cast(str, m["package-version"]), "green")
     _echo("platform", typing.cast(str, m["platform"]), "yellow")
@@ -51,21 +94,16 @@ def info(
         "cyan",
     )
 
-    if not c.path.exists():
-        _echo("configuration", f"{str(c.path)} [MISSING]", "white")
-    else:
-        _echo("configuration", str(c.path), "white")
-    dbs = _get_raw_databases()
-    click.secho("configured databases:", bold=True)
-    for k, v in dbs.items():
-        if "datadir" not in v:
-            # this database does not have a "datadir"
-            continue
-
-        if v["datadir"] is not None:
-            _echo(f"  - {k} ({v['module']})", f"{v['datadir']}", "green")
-        else:
-            _echo(f"  - {k} ({v['module']})", "NOT installed", "red")
+    database_configuration(
+        load_rc_classification(),
+        _get_raw_databases_classification(),
+        "classification",
+    )
+    database_configuration(
+        load_rc_segmentation(),
+        _get_raw_databases_segmentation(),
+        "segmentation",
+    )
 
     click.secho("dependencies:", bold=True)
     python = typing.cast(dict[str, str], m["python"])
-- 
GitLab