Blame lenses/aliases.aug

Packit Service a2ae7a
(*
Packit Service a2ae7a
Module: Aliases
Packit Service a2ae7a
  Parses /etc/aliases
Packit Service a2ae7a
Packit Service a2ae7a
Author: David Lutterkort <lutter@redhat.com>
Packit Service a2ae7a
Packit Service a2ae7a
About: Reference
Packit Service a2ae7a
  This lens tries to keep as close as possible to `man 5 aliases` 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
   See <lns>.
Packit Service a2ae7a
Packit Service a2ae7a
About: Configuration files
Packit Service a2ae7a
   This lens applies to /etc/aliases.
Packit Service a2ae7a
Packit Service a2ae7a
About: Examples
Packit Service a2ae7a
   The <Test_Aliases> file contains various examples and tests.
Packit Service a2ae7a
*)
Packit Service a2ae7a
Packit Service a2ae7a
module Aliases =
Packit Service a2ae7a
   autoload xfm
Packit Service a2ae7a
Packit Service a2ae7a
   (************************************************************************
Packit Service a2ae7a
    * Group:                 USEFUL PRIMITIVES
Packit Service a2ae7a
    *************************************************************************)
Packit Service a2ae7a
Packit Service a2ae7a
   (* Group: basic tokens *)
Packit Service a2ae7a
Packit Service a2ae7a
   (* Variable: word *)
Packit Service a2ae7a
   let word = /[^|", \t\n]+/
Packit Service a2ae7a
   (* Variable: name *)
Packit Service a2ae7a
   let name = /([^ \t\n#:|@]+|"[^"|\n]*")/ (* " make emacs calm down *)
Packit Service a2ae7a
Packit Service a2ae7a
   (* Variable: command
Packit Service a2ae7a
    * a command can contain spaces, if enclosed in double quotes, the case
Packit Service a2ae7a
    * without spaces is taken care with <word>
Packit Service a2ae7a
    *)
Packit Service a2ae7a
   let command = /(\|([^", \t\n]+|"[^"\n]+"))|("\|[^"\n]+")/
Packit Service a2ae7a
Packit Service a2ae7a
   (* Group: Comments and empty lines *)
Packit Service a2ae7a
Packit Service a2ae7a
   (* View: eol *)
Packit Service a2ae7a
   let eol   = Util.eol
Packit Service a2ae7a
   (* View: comment *)
Packit Service a2ae7a
   let comment = Util.comment
Packit Service a2ae7a
   (* View: empty *)
Packit Service a2ae7a
   let empty   = Util.empty
Packit Service a2ae7a
Packit Service a2ae7a
   (* Group: separators *)
Packit Service a2ae7a
   (* View: colon
Packit Service a2ae7a
    * Separation between the alias and it's destinations
Packit Service a2ae7a
    *)
Packit Service a2ae7a
   let colon = del /[ \t]*:[ \t]*/ ":\t"
Packit Service a2ae7a
   (* View: comma
Packit Service a2ae7a
    * Separation between multiple destinations
Packit Service a2ae7a
    *)
Packit Service a2ae7a
   let comma = del /[ \t]*,[ \t]*(\n[ \t]+)?/ ", "
Packit Service a2ae7a
Packit Service a2ae7a
   (* Group: alias *)
Packit Service a2ae7a
Packit Service a2ae7a
   (* View: destination
Packit Service a2ae7a
    * Can be either a word (no spaces included) or a command with spaces
Packit Service a2ae7a
    *)
Packit Service a2ae7a
   let destination = ( word | command )
Packit Service a2ae7a
Packit Service a2ae7a
   (* View: value_list
Packit Service a2ae7a
    * List of destinations
Packit Service a2ae7a
    *)
Packit Service a2ae7a
   let value_list = Build.opt_list ([ label "value" . store destination]) comma
Packit Service a2ae7a
Packit Service a2ae7a
   (* View: alias
Packit Service a2ae7a
    * a name with one or more destinations
Packit Service a2ae7a
    *)
Packit Service a2ae7a
   let alias = [ seq "alias" .
Packit Service a2ae7a
                    [ label "name" . store name ] . colon .
Packit Service a2ae7a
                    value_list
Packit Service a2ae7a
                ] . eol
Packit Service a2ae7a
Packit Service a2ae7a
  (* View: lns *)
Packit Service a2ae7a
  let lns = (comment | empty | alias)*
Packit Service a2ae7a
Packit Service a2ae7a
  let xfm = transform lns (incl "/etc/aliases")
Packit Service a2ae7a
Packit Service a2ae7a
(* Local Variables: *)
Packit Service a2ae7a
(* mode: caml *)
Packit Service a2ae7a
(* End: *)