From 5d4686bcd5600c3071e91bd53338bcb12cd44a54 Mon Sep 17 00:00:00 2001 From: eldritch horrors Date: Fri, 9 Aug 2024 02:07:18 +0200 Subject: 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 --- src/libutil/config-impl.hh | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/libutil/config-impl.hh') 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::appendOrSet(T newValue, bool append) template void BaseSetting::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, -- cgit v1.2.3