Heh - just use "set_variable_values" from cfengine_stdlib.cf!  Or see how it
is done there - it's rather clever (I wish I thought of it :-)

-Dan

> Forum: Cfengine Help
> Subject: Looking for suggestions on ordering
> Author: Authority
> Link to topic: https://cfengine.com/forum/read.php?3,17628,17628#msg-17628
> 
> Normal ordering for edit_line bundles puts insert_lines before replace_patter
> ns.  For my current problem, I'm trying to reverse them.
> 
> Given a simple syntax like this:
> 
> option = value
> 
> I would like to check that the option exists and simply replace the current v
> alue with the new value and if the option doesn't exist, add the line.  This 
> is problematic though because the syntax of my files are flexible regarding w
> hite space but insert_lines is not.  If my insert_lines promiser does not hav
> e any whitespace around the equals sign but the file does, or if the option i
> s indented, even though the option and value are as they should be, Cfengine 
> will insert a new line.  Replace_patterns is powerful enough to handle and pr
> eserve whitespace but I'm having trouble stopping the insert_line from happen
> ing after replace_patterns has already done its work.  I only want the insert
> _line to happen if the replace_pattern couldn't find and replace the value.
> 
> I've found that a replace_patterns promise that doesn't match anything (and t
> hus doesn't replace anything) is still marked as kept, which I can kind of un
> derstand (nothing to do is just as good as already being done), but it makes 
> it very hard to determine if replace_patterns took any action.
> 
> I've tried setting a class at the start of the bundle that blocked the insert
> _lines promises and was cancelled by replace_patterns, but that class was rea
> ctivated when the bundle was re-evaluated so my inserts never happened.
> 
> I'm not going to argue that the normal ordering be changed as I think for mos
> t cases, it is optimal already, but I'm wondering if a new promise result cla
> ss attribute (for use in class bodies) might be worthwhile, something along t
> he lines of match_found, that would activate classes if the regex in the curr
> ent promise succeeded.
> 
> Has anyone else dealt with such ordering issues?  Any suggestions/tricks on h
> ow to do this?
> 
> _______________________________________________
> Help-cfengine mailing list
> Help-cfengine@cfengine.org
> https://cfengine.org/mailman/listinfo/help-cfengine
_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to