[sdk/kde-builder] kde_builder_lib: refactor: Store explicit cmdline selectors in ModuleResolver

Andrew Shark <[email protected]>
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
Git commit 0ff5d413be800abe943f02eb0fbf70d19c8fed57 by Andrew Shark.
Committed on 19/07/2026 at 17:19.
Pushed by ashark into branch 'master'.

refactor: Store explicit cmdline selectors in ModuleResolver

M  +3    -12   kde_builder_lib/application.py
M  +15   -0    kde_builder_lib/module_resolver.py

https://invent.kde.org/sdk/kde-builder/-/commit/0ff5d413be800abe943f02eb0fbf70d19c8fed57

diff --git a/kde_builder_lib/application.py b/kde_builder_lib/application.py
index 4c4d02a1..3da12519 100644
--- a/kde_builder_lib/application.py
+++ b/kde_builder_lib/application.py
@@ -249,6 +249,7 @@ class Application:
         module_resolver.handle_initial_projects()
         module_resolver.ignored_selectors = ignored_selectors
         module_resolver.expand_all_groups()
+        module_resolver.set_explicit_cmdline_selectors(cmdline_selectors)
 
         self.module_resolver = module_resolver
 
@@ -289,16 +290,6 @@ class Application:
         branch_group = ctx.get_option("branch-group")
         self._warn_if_branch_group_does_not_exists(branch_group)
 
-        explicit_kdeproject_selectors: list[str] = []
-        explicit_thirdparty_selectors: list[str] = []
-        proj_db = self.context.projects_db.repositories
-        for el in cmdline_selectors:
-            leaf = el.split("/")[-1]
-            if leaf in proj_db:
-                explicit_kdeproject_selectors.append(leaf)
-            else:
-                explicit_thirdparty_selectors.append(leaf)
-
         filtered_modules: list[Module] = []
         for module in modules:
             if module.module_set and module.module_set.name in ["qt6-set"]:
@@ -318,7 +309,7 @@ class Application:
                     printpath = repopath
                     printpath = "y[" + printpath.replace("/", "]/y[") + "]"
                     message = f" y[*] Removing {printpath} due to branch-group"
-                    if module.name in explicit_kdeproject_selectors:
+                    if module.name in module_resolver.explicit_kdeproject_selectors:
                         logger_app.warning(message)
                     else:
                         logger_app.debug(message)
@@ -354,7 +345,7 @@ class Application:
             if module.name not in ignored_selectors and module_set_name not in ignored_selectors:
                 filtered_modules.append(module)
             else:
-                if module.name in [*explicit_kdeproject_selectors, *explicit_thirdparty_selectors]:
+                if module.name in [*module_resolver.explicit_kdeproject_selectors, *module_resolver.explicit_thirdparty_selectors]:
                     logger_app.warning(f" y[*] Project y[{module.name}] was explicitly selected in command line, but removed due to being ignored.")
                 else:
                     logger_app.debug(f"Project y[{module.name}] was removed due to being ignored.")
diff --git a/kde_builder_lib/module_resolver.py b/kde_builder_lib/module_resolver.py
index 04fd8af8..ab9a575a 100644
--- a/kde_builder_lib/module_resolver.py
+++ b/kde_builder_lib/module_resolver.py
@@ -62,6 +62,10 @@ class ModuleResolver:
         self.defined_groups: dict[str, ModuleSet] = {}
         """Holds ModuleSet objects, created because of declared in "group <>" nodes in config."""
 
+        self.explicit_kdeproject_selectors: list[str] = []
+        self.explicit_group_selectors: list[str] = []
+        self.explicit_thirdparty_selectors: list[str] = []
+
     def set_deferred_options(self, deferred_options: list[dict[str, str | dict]]) -> None:
         """
         Set options to apply later if a module set resolves to a named module, used for "override" nodes.
@@ -230,6 +234,17 @@ class ModuleResolver:
 
             self.defined_projects.update({project_result.name: project_result for project_result in project_results})
 
+    def set_explicit_cmdline_selectors(self, cmdline_selectors: list[str]) -> None:
+        proj_db = self.context.projects_db.repositories
+        for el in cmdline_selectors:
+            leaf = el.split("/")[-1]
+            if leaf in proj_db:
+                self.explicit_kdeproject_selectors.append(leaf)
+            elif leaf in self.defined_groups:
+                self.explicit_group_selectors.append(leaf)
+            else:
+                self.explicit_thirdparty_selectors.append(leaf)
+
     def resolve_selectors_into_modules(self, selectors: list[str]) -> list[Module]:
         """
         Resolve the given list of module selectors into :class:`Module` objects.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.