aboutsummaryrefslogtreecommitdiff
path: root/mod/mod-build-task.cxx
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2024-10-23 20:58:32 +0200
committerKaren Arutyunov <karen@codesynthesis.com>2024-10-24 09:51:31 +0200
commitbc94f77ea57edfd3e5ba0d2505f451ce56bfd422 (patch)
treedc0ab0a87096614e33a648643e35d64996727e29 /mod/mod-build-task.cxx
parent85065024eb4ca2ec1dac4dc7cb1fc8ff8fb238c8 (diff)
Add suppport for build-task tenant_service_type parameter
Diffstat (limited to 'mod/mod-build-task.cxx')
-rw-r--r--mod/mod-build-task.cxx35
1 files changed, 35 insertions, 0 deletions
diff --git a/mod/mod-build-task.cxx b/mod/mod-build-task.cxx
index 917017b..2ae1237 100644
--- a/mod/mod-build-task.cxx
+++ b/mod/mod-build-task.cxx
@@ -203,6 +203,41 @@ package_query (bool custom_bot,
query::build_repository::id.canonical_name.in_range (rp.begin (),
rp.end ());
+ // Filter by the types of services associated with the tenants, where the
+ // empty type denotes tenants without associated service.
+ //
+ if (params.tenant_service_type_specified ())
+ {
+ cstrings ts;
+ bool et (false);
+
+ for (const string& t: params.tenant_service_type ())
+ {
+ if (!t.empty ())
+ ts.push_back (t.c_str ());
+ else
+ et = true;
+ }
+
+ if (!ts.empty () && et)
+ {
+ q = q &&
+ (query::build_tenant::service.type.in_range (ts.begin (), ts.end ()) ||
+ query::build_tenant::service.type.is_null ());
+ }
+ else if (!ts.empty ())
+ {
+ q = q && query::build_tenant::service.type.in_range (ts.begin (),
+ ts.end ());
+ }
+ else
+ {
+ assert (et);
+
+ q = q && query::build_tenant::service.type.is_null ();
+ }
+ }
+
// If the interactive mode is false or true, then filter out the respective
// packages.
//