aboutsummaryrefslogtreecommitdiff
path: root/src/libutil/config-impl.hh
diff options
context:
space:
mode:
authoreldritch horrors <pennae@lix.systems>2024-08-09 02:07:18 +0200
committereldritch horrors <pennae@lix.systems>2024-08-09 11:33:09 +0000
commit5d4686bcd5600c3071e91bd53338bcb12cd44a54 (patch)
tree18c64877753f2bf676d4f5cbefab5efaab32372e /src/libutil/config-impl.hh
parentbaa4fda34032373f2e4d5fdb5565132522c24983 (diff)
libutil: allow marking settings as deprecated
this is a bit of a hack, but it's apparently the cleanest way of doing this in the absence of any kind of priority/provenance information for values of some given setting. we'll need this to deprecate build-hook. Change-Id: I03644a9c3f17681c052ecdc610b4f1301266ab9e
Diffstat (limited to 'src/libutil/config-impl.hh')
-rw-r--r--src/libutil/config-impl.hh10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/libutil/config-impl.hh b/src/libutil/config-impl.hh
index 756175f95..8e3a1e408 100644
--- a/src/libutil/config-impl.hh
+++ b/src/libutil/config-impl.hh
@@ -66,9 +66,13 @@ void BaseSetting<T>::appendOrSet(T newValue, bool append)
template<typename T>
void BaseSetting<T>::set(const std::string & str, bool append)
{
- if (experimentalFeatureSettings.isEnabled(experimentalFeature))
- appendOrSet(parse(str), append);
- else {
+ if (experimentalFeatureSettings.isEnabled(experimentalFeature)) {
+ auto parsed = parse(str);
+ if (deprecated && (append || parsed != value)) {
+ warn("deprecated setting '%s' found (set to '%s')", name, str);
+ }
+ appendOrSet(std::move(parsed), append);
+ } else {
assert(experimentalFeature);
warn("Ignoring setting '%s' because experimental feature '%s' is not enabled",
name,