aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2022-06-30 15:29:21 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2022-07-01 13:15:17 +0300
commitd97faa864483c4141613f785f371b8fdb42876c7 (patch)
tree16ec5521af26404498e9889e21b795519d9b0723
parentb8f351516e4c8cabe808c13e3e47e35ccddc4571 (diff)
Add support for disabling package build notification emails per toolchain name
-rw-r--r--etc/brep-module.conf10
-rw-r--r--mod/mod-build-result.cxx11
-rw-r--r--mod/module.cli14
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