[augeas-devel] ANNOUNCE: Augeas 0.7.0

David Lutterkort lutter at redhat.com
Fri Jan 15 04:28:43 UTC 2010


I am pleased to announce the release of Augeas 0.7.0.

There are several fairly big changes in this release. The most important
of them is support for context-free lenses - this makes it possible to
process some pretty hairy file formats that were out of reach for Augeas
before, including json and (soon) the Apache config[1] This means that
Augeas now contains a full context-free parser (an Earley parser[2] for
grammar geeks)

Syntactically, the change is small. The Augeas language now has a new
keyword 'let rec' that lets you define 'recursive' lenses:

        let rec lns = [ key "a" . lns ] | store "x"
        
This lens will produce an arbitrarily deep tree, with one level for each
'a' in the input string and the value 'x' in the leaf node.

The second big change is that Augeas can now use case-insensitive
regular expressions - append an 'i' to mark a regular expression literal
case-insensitive. The regular expression /Foo/i matches "foo", "FOO",
"fOo" etc.

A third change is that augtool got a serious facelift. You can now use
path expressions with embedded spaces without the need to quote them,
e.g.
        augtool> match /files/etc/hosts/*[ ipaddr = '127.0.0.1' ]
The help system in augtool is now much more understandable, too.

Detailed news:

  - Support for context-free lenses via the 'let rec' keyword. The syntax
    is experimental, though the feature is here to stay. See
    lenses/json.aug for an example of what's possible with that.
  - Support for case-insensitive regular expressions. Simply append 'i' to
    a regexp literal to make it case-insensitive, e.g. /hello/i will match
    all variations of hello, regardless of case.
  - Major revamp of augtool. In particular, path expressions don't need to
    be quoted anymore. The online help has been greatly improved.
  - Check during load/save that each file is only matched by one transform
    under /augeas/load. If there are multiple transforms for a file, the
    file is skipped.
  - New error codes AUG_ENOLENS and AUG_EMXFM
  - Do not choke on non-existing lens during save
  - Change the metadata for files under /augeas/files slightly: the node
    /augeas/files/$PATH/lens now has the name of the lens used to load the
    file; the source location of that lens has moved to
    /augeas/files/$PATH/lens/info
  - New public functions fa_nocase, fa_is_nocase, and fa_expand_nocase in
    libfa
  - Various smaller bug fixes, performance improvements and improved error
    messages
  - Lens changes/additions
    * Cobblersettings: new lens and test (Bryan Kearney)
    * Iptables: allow quoted strings as arguments; handle both negation
      syntaxes
    * Json: lens and tests for generic Json files
    * Lokkit: allow '-' in arguments
    * Samba: accept entry keys with ':' (Partha Aji)
    * Shellvars: allow arrays that span multiple lines
    * Xinetd (name): fix bad '-' in character class

Tarball:          http://augeas.net/download/augeas-0.7.0.tar.gz
GPG signature[1]: http://augeas.net/download/augeas-0.7.0.tar.gz.sig

RPM's for Fedora and EPEL are making their way through the build systems
and will be available shortly from the usual repos.

David

[1] I did not include the httpd lens I posted previously in this release
- there's too many rough edges in it, and I figured that including it in
its current state will do more harm than good.

[2] The parser is an implementation of [3] by Yitzhak Mandelbaum and
Trevor Jim; they have been enormously helpful in figuring out various
bugs.

[3] http://www2.research.att.com/~yitzhak/publications/yakker-ldta.pdf





More information about the augeas-devel mailing list