[augeas-devel] First tests with aug mv
David Lutterkort
dlutter at redhat.com
Tue Jul 29 23:06:52 UTC 2008
On Wed, 2008-07-30 at 00:14 +0200, Raphaël Pinson wrote:
>
>
> On Tue, Jul 29, 2008 at 9:02 PM, David Lutterkort <dlutter at redhat.com>
> wrote:
> New nodes are always added at the end (the same is true for
> 'set')
>
> That's useful indeed. I think it would be even more useful if
> aug_insert returned the path of the newly inserted node. Let's say
> there's already a .field before the one I'm inserting. Then this would
> be useful:
>
> $to_move = "/files/commenttest/field[1]";
> $c_field = aug_ins(".field", "after", $to_move);
> => $c_field = "/files/commenttest/.field[2]"
> aug_mv($to_move, $c_field);
Yes, that would indeed be useful; unfortunately, that's not supported by
the API right now, and would require adding a new call.
> Is there a way to refer to the first child of a node in the public API
> by the way? Or does it have to be done in the program using the API?
>
> Say there is a parameter I need to put as the first child or a
> 'record' node for it to work, how do I write the aug_insert command?
That can't be done right now, either; it would require more of XPath to
be implemented by Augeas - it would be good if you could say
'/files/etc/hosts/*[2]' to get the second child of '/files/etc/hosts'.
> Yeah, in its current form, Augeas only allows exactly one
> primitive that
> sets the label for a tree node (either key, label or seq)
> What's missing
> is forming tree labels from multiple such lenses so that you
> can say
>
> [ del /#[ \t]*/ "#" . label "." . key /[a-z]+/ . ... ]
>
> to prepend a '.' to the key parsed from the file. Initially, I
> marked
> that as an error, simply to be on the safe side. I now think
> it should
> be made possible, but it would require a fair amount of
> surgery in the
> internals (mostly lens.c, get.c, and put.c)
>
>
> I guess it's not an easy change at all.
It's a little more involved than aug_mv ;)
David
More information about the augeas-devel
mailing list