diff options
author | Karen Arutyunov <karen@codesynthesis.com> | 2024-10-23 20:58:32 +0200 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2024-10-24 09:51:31 +0200 |
commit | bc94f77ea57edfd3e5ba0d2505f451ce56bfd422 (patch) | |
tree | dc0ab0a87096614e33a648643e35d64996727e29 /mod/mod-build-task.cxx | |
parent | 85065024eb4ca2ec1dac4dc7cb1fc8ff8fb238c8 (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.cxx | 35 |
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. // |