From dd204788e3f0ab7b2b3e86ecb9403a6e74836e0d Mon Sep 17 00:00:00 2001 From: SpookyDervish Date: Mon, 19 Jan 2026 06:46:33 +1100 Subject: [PATCH] list command done --- src/list.py | 34 ++++++++++++++++++++++++++++++++++ src/main.py | 3 +++ 2 files changed, 37 insertions(+) create mode 100644 src/list.py diff --git a/src/list.py b/src/list.py new file mode 100644 index 0000000..9f401f9 --- /dev/null +++ b/src/list.py @@ -0,0 +1,34 @@ +import os +import configparser +from rich import print +from rich.table import Table + + +def list_cmd(args): + ground_libs_folder = os.getenv("GROUND_LIBS") or "/usr/lib/ground/" + folders = os.listdir(ground_libs_folder) + + table = Table("Name", "Version", "Description", title="Installed") + config_parser = configparser.ConfigParser() + + for folder in folders: + full_path = os.path.join(ground_libs_folder, folder) + + # skip anything that isnt a folder + if not os.path.isdir(full_path): + continue + + # read the mineral.ini file to figure out the version and description + ini_path = os.path.join(full_path, "mineral.ini") + if not os.path.isfile(ini_path): + continue + + config_parser.read(ini_path) + + table.add_row( + f"[b]{folder}", + f"[blue]{config_parser.get('package', 'version')}", + config_parser.get("package", "description"), + ) + + print(table) \ No newline at end of file diff --git a/src/main.py b/src/main.py index 94d95e8..b5990a3 100644 --- a/src/main.py +++ b/src/main.py @@ -4,6 +4,7 @@ import os, sys from install import install from publish import publish from remove import remove +from list import list_cmd def parse_arguments(): @@ -63,6 +64,8 @@ def parse_arguments(): publish(args) elif args.command == "remove": remove(args) + elif args.command == "list": + list_cmd(args) def main(): parse_arguments()