Blame lenses/postfix_transport.aug

Packit Service a2ae7a
(*
Packit Service a2ae7a
Module: Postfix_Transport
Packit Service a2ae7a
  Parses /etc/postfix/transport
Packit Service a2ae7a
Packit Service a2ae7a
Author: Raphael Pinson <raphael.pinson@camptocamp.com>
Packit Service a2ae7a
Packit Service a2ae7a
About: Reference
Packit Service a2ae7a
  This lens tries to keep as close as possible to `man 5 transport` where possible.
Packit Service a2ae7a
Packit Service a2ae7a
About: License
Packit Service a2ae7a
   This file is licenced under the LGPL v2+, like the rest of Augeas.
Packit Service a2ae7a
Packit Service a2ae7a
About: Lens Usage
Packit Service a2ae7a
   To be documented
Packit Service a2ae7a
Packit Service a2ae7a
About: Configuration files
Packit Service a2ae7a
   This lens applies to /etc/postfix/transport. See <filter>.
Packit Service a2ae7a
Packit Service a2ae7a
About: Examples
Packit Service a2ae7a
   The <Test_Postfix_Transport> file contains various examples and tests.
Packit Service a2ae7a
*)
Packit Service a2ae7a
Packit Service a2ae7a
module Postfix_Transport =
Packit Service a2ae7a
Packit Service a2ae7a
autoload xfm
Packit Service a2ae7a
Packit Service a2ae7a
(* View: space_or_eol *)
Packit Service a2ae7a
let space_or_eol = del /([ \t]*\n)?[ \t]+/ " "
Packit Service a2ae7a
Packit Service a2ae7a
(* View: colon *)
Packit Service a2ae7a
let colon = Sep.colon
Packit Service a2ae7a
Packit Service a2ae7a
(* View: nexthop *)
Packit Service a2ae7a
let nexthop =
Packit Service a2ae7a
     let host_re = "[" . Rx.word . "]" | /[A-Za-z]([^\n]*[^ \t\n])?/
Packit Service a2ae7a
  in [ label "nexthop" . (store host_re)? ]
Packit Service a2ae7a
Packit Service a2ae7a
(* View: transport *)
Packit Service a2ae7a
let transport = [ label "transport" . (store Rx.word)? ]
Packit Service a2ae7a
                . colon . nexthop
Packit Service a2ae7a
Packit Service a2ae7a
(* View: nexthop_smtp *)
Packit Service a2ae7a
let nexthop_smtp =
Packit Service a2ae7a
     let host_re = "[" . Rx.word . "]" | Rx.word
Packit Service a2ae7a
  in [ label "host" . store host_re ]
Packit Service a2ae7a
     . colon
Packit Service a2ae7a
     . [ label "port" . store Rx.integer ]
Packit Service a2ae7a
Packit Service a2ae7a
(* View: record *)
Packit Service a2ae7a
let record = [ label "pattern" . store /[A-Za-z0-9@\*.-]+/
Packit Service a2ae7a
             . space_or_eol . (transport | nexthop_smtp)
Packit Service a2ae7a
             . Util.eol ]
Packit Service a2ae7a
Packit Service a2ae7a
(* View: lns *)
Packit Service a2ae7a
let lns = (Util.empty | Util.comment | record)*
Packit Service a2ae7a
Packit Service a2ae7a
(* Variable: filter *)
Packit Service a2ae7a
let filter = incl "/etc/postfix/transport"
Packit Service a2ae7a
           . incl "/usr/local/etc/postfix/transport"
Packit Service a2ae7a
Packit Service a2ae7a
let xfm = transform lns filter