Skip to content

Commit

Permalink
update(engine): clarify override error messages
Browse files Browse the repository at this point in the history
Signed-off-by: Luca Guerra <luca@guerra.sh>
  • Loading branch information
LucaGuerra committed Dec 20, 2023
1 parent 4889091 commit 7c988b2
Showing 1 changed file with 8 additions and 5 deletions.
13 changes: 8 additions & 5 deletions userspace/engine/rule_loader_reader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -441,10 +441,11 @@ static void read_item(
std::set<std::string> override_append, override_replace;
std::set<std::string> overridable {"items"};
decode_overrides(item, overridable, overridable, override_append, override_replace, ctx);
bool has_overrides = !override_append.empty() || !override_replace.empty();

if(append == true && !override_replace.empty())
if(append == true && has_overrides)
{
THROW(true, "Cannot specify a replace override when 'append: true' is set", ctx);
THROW(true, "Keys 'override' and 'append: true' cannot be used together.", ctx);
}

// Since a list only has items, if we have chosen to append them we can append the entire object
Expand Down Expand Up @@ -482,10 +483,11 @@ static void read_item(
std::set<std::string> override_append, override_replace;
std::set<std::string> overridable {"condition"};
decode_overrides(item, overridable, overridable, override_append, override_replace, ctx);
bool has_overrides = !override_append.empty() || !override_replace.empty();

if(append == true && !override_replace.empty())
if(append == true && has_overrides)
{
THROW(true, "Cannot specify a replace override when 'append: true' is set", ctx);
THROW(true, "Keys 'override' and 'append: true' cannot be used together.", ctx);
}

// Since a macro only has a condition, if we have chosen to append to it we can append the entire object
Expand Down Expand Up @@ -523,7 +525,8 @@ static void read_item(
bool has_overrides_replace = !override_replace.empty();
bool has_overrides = has_overrides_append || has_overrides_replace;

THROW((has_append_flag && has_overrides), "Keys 'override' and 'append' cannot be used together.", ctx);
THROW((has_append_flag && has_overrides),
"Keys 'override' and 'append: true' cannot be used together. Add an append entry (e.g. 'condition: append') under override instead.", ctx);

if(has_overrides)
{
Expand Down

0 comments on commit 7c988b2

Please sign in to comment.