[augeas-devel] Wildcarded key/value pairs and nested blocks (dovecot lens development)
Serge Smetana
serge.smetana at gmail.com
Tue Mar 5 18:28:17 UTC 2013
Hello,
I'm trying to create lens for Dovecot config.
I'm already have working lens here:
https://github.com/smetana/augeas/commit/0cbd6b88e0f1bf2e281fa3ea16803abbf8b3d770
But it is too "tight" because of the fixed list of keywords for the entries.
Dovecot supports blocks and nested blocks like
service auth {
unix_listener auth-userdb {
...
}
}
and if I create wildcarded lens for simple entry
let entry = [ indent . key Rx.word. eq . (store value)? . eol ]
I am unable to create lens for the block
let block_names = ("protocol" | "service" | "plugin" | "namespace" | "map" )
let block =
[ indent . key block_names . block_args? . block_open . eol
. (entry | empty | comment)*
. indent . block_close . eol ]
I end up with exception: overlapping lenses in tree union.put
Example matched by both: { "protocol" }
Is there any way to define possible keys as something like a
subsctraction (Rx.word - block_names)
meaning "match anything but not /protocol|service|map/"?
Thank you!
Great job!
Serge
More information about the augeas-devel
mailing list