diff options
author | Karen Arutyunov <karen@codesynthesis.com> | 2022-06-30 15:29:21 +0300 |
---|---|---|
committer | Karen Arutyunov <karen@codesynthesis.com> | 2022-07-01 13:15:17 +0300 |
commit | d97faa864483c4141613f785f371b8fdb42876c7 (patch) | |
tree | 16ec5521af26404498e9889e21b795519d9b0723 | |
parent | b8f351516e4c8cabe808c13e3e47e35ccddc4571 (diff) |
Add support for disabling package build notification emails per toolchain name
-rw-r--r-- | etc/brep-module.conf | 10 | ||||
-rw-r--r-- | mod/mod-build-result.cxx | 11 | ||||
-rw-r--r-- | mod/module.cli | 14 |
3 files changed, 35 insertions, 0 deletions
diff --git a/etc/brep-module.conf b/etc/brep-module.conf index 9acef26..22d82de 100644 --- a/etc/brep-module.conf +++ b/etc/brep-module.conf @@ -215,6 +215,16 @@ menu About=?about # build-result-request-max-size 10485760 +# Enable or disable package build notification emails in the <name>=<bool> +# form. If true is specified for a toolchain name, then emails are sent +# according to the build-*email package manifest values when the package is +# built with this toolchain. If false is specified, then no emails are sent +# for this toolchain name. By default build notification emails are enabled. +# Repeat this option to enable/disable emails for multiple toolchains. +# +# build-toolchain-email <toolchain-name>=true|false + + # The build database connection configuration. By default, brep will try to # connect to the local instance of PostgreSQL with the operating system-default # mechanism (Unix-domain socket, etc) and use operating system (login) user diff --git a/mod/mod-build-result.cxx b/mod/mod-build-result.cxx index 1445a1d..a55b41f 100644 --- a/mod/mod-build-result.cxx +++ b/mod/mod-build-result.cxx @@ -525,6 +525,17 @@ handle (request& rq, response&) if (bld == nullptr) return true; + // Bail out if sending build notification emails is disabled for this + // toolchain. + // + { + const map<string, bool>& tes (options_->build_toolchain_email ()); + + auto i (tes.find (bld->id.toolchain_name)); + if (i != tes.end () && !i->second) + return true; + } + string subj ((unforced ? "build " : "rebuild ") + to_string (*bld->status) + ": " + bld->package_name.string () + '/' + diff --git a/mod/module.cli b/mod/module.cli index c2dce5b..bd61873 100644 --- a/mod/module.cli +++ b/mod/module.cli @@ -1,6 +1,7 @@ // file : mod/options.cli -*- C++ -*- // license : MIT; see accompanying LICENSE file +include <map>; include <regex>; include <libbpkg/manifest.hxx>; // repository_location @@ -463,6 +464,19 @@ namespace brep face of recoverable failures (deadlock, loss of connection, etc). The default is 10M." } + + std::map<string, bool> build-toolchain-email + { + "<name>=<bool>", + "Enable or disable package build notification emails. If \cb{true} is + specified for a toolchain name, then emails are sent according to the + \cb{build-*email} package manifest values when the package is built + with this toolchain. If \cb{false} is specified, then no emails are + sent for this toolchain name. By default build notification emails + are enabled. Repeat this option to enable/disable emails for multiple + toolchains. See \l{bpkg#manifest-package Package Manifest} for + details on \cb{build-*email} values." + } }; class build_log: build, build_db, handler |