[augeas-devel] lense problem

Frederic Descamps lefred at inuits.be
Wed Jun 23 09:45:16 UTC 2010


Hello,

I'm new in the use of augeas and I'm trying to create a lense (for
radius configuration files)

I'm not able to create the sections (that are identified by section_name
{ } )


This is what I've for the moment (see aattachment)


Can somebody help me to create that section entry ?

thank you

fred


-------------- next part --------------
module Test_radius = 

    let conf ="prefix = /usr
name = radiusd
# moron comment

confdir = ${raddbdir}
# another moron comment

listen {
        type = auth
        port = 0
}

$INCLUDE sites-enabled
"

    test Radius.lns get conf =
       { "prefix" = "/usr" }
       { "name" = "radiusd" }
       { "#comment" = "moron comment" }
       {}
       { "confdir" = "${raddbdir}" }
       { "#comment" = "another moron comment" }
       {}
       { "listen"
         { "type" = "auth" }
         { "port" = "0" } }
       {}
       { "$INCLUDE" = "sites-enabled" } 
		
-------------- next part --------------
module Radius =
  autoload xfm

  let filter = (incl "/home/fred/sysctl.conf")
             . (incl "/home/fred/radiusd.conf")

  let key_re = /[A-Za-z0-9_.-]+/
  let eq = del /[ \t]*=[ \t]*/ " = "
  let value_re = /[^ \t\n](.*[^ \t\n])?/


  let empty = Util.empty
  let comment = Util.comment
  let dels = Util.del_str
  let eol = Util.eol
  let indent = Util.indent

  let kv = [ indent . key key_re . eq . store value_re . eol ]
  
  let ws = del /[ \t]+/ " "
  let wsc = del /:[ \t]+/ ": "

  let obr = del /\{([ \t]*)\n/ "{\n"
  let cbr = del /[ \t]*}[ \t]*\n/ "}\n"

  let entry = [ indent . key key_re . eq . store value_re . eol ]

  
  let ikey (k:regexp) = indent . key k
  let section (n:regexp) (b:lens) = [ ikey n . ws .obr . (b|empty|comment)* . cbr ]
  let kvsec (k:regexp) (v:regexp) = [ ikey k . wsc . store v .eol ]

  let listen =
        let setting = kvsec "type" /auth|proxy|acct|detail/
                     |kvsec "port" Rx.integer
                     in section "listen" setting

  let include = [ key "$INCLUDE" . dels " " . store /[^\n]*/ . dels "\n"]


  let lns = (empty | listen | comment | kv | include) *

  let xfm = transform lns filter


More information about the augeas-devel mailing list