Blame lenses/group.aug

Packit Service a2ae7a
(* Group module for Augeas
Packit Service a2ae7a
 Author: Free Ekanayaka <free@64studio.com>
Packit Service a2ae7a
Packit Service a2ae7a
 Reference: man 5 group
Packit Service a2ae7a
Packit Service a2ae7a
*)
Packit Service a2ae7a
Packit Service a2ae7a
module Group =
Packit Service a2ae7a
Packit Service a2ae7a
   autoload xfm
Packit Service a2ae7a
Packit Service a2ae7a
(************************************************************************
Packit Service a2ae7a
 *                           USEFUL PRIMITIVES
Packit Service a2ae7a
 *************************************************************************)
Packit Service a2ae7a
Packit Service a2ae7a
let eol        = Util.eol
Packit Service a2ae7a
let comment    = Util.comment
Packit Service a2ae7a
let empty      = Util.empty
Packit Service a2ae7a
let dels       = Util.del_str
Packit Service a2ae7a
Packit Service a2ae7a
let colon      = Sep.colon
Packit Service a2ae7a
let comma      = Sep.comma
Packit Service a2ae7a
Packit Service a2ae7a
let sto_to_spc = store Rx.space_in
Packit Service a2ae7a
let sto_to_col = Passwd.sto_to_col
Packit Service a2ae7a
Packit Service a2ae7a
let word    = Rx.word
Packit Service a2ae7a
let password = /[A-Za-z0-9_.!*-]*/
Packit Service a2ae7a
let integer = Rx.integer
Packit Service a2ae7a
Packit Service a2ae7a
(************************************************************************
Packit Service a2ae7a
 *                               ENTRIES
Packit Service a2ae7a
 *************************************************************************)
Packit Service a2ae7a
Packit Service a2ae7a
let user      = [ label "user" . store word ]
Packit Service a2ae7a
let user_list = Build.opt_list user comma
Packit Service a2ae7a
let params    = [ label "password" . store password  . colon ]
Packit Service a2ae7a
                . [ label "gid"      . store integer . colon ]
Packit Service a2ae7a
                . user_list?
Packit Service a2ae7a
let entry     = Build.key_value_line word colon params
Packit Service a2ae7a
Packit Service a2ae7a
let nisdefault =
Packit Service a2ae7a
  let overrides =
Packit Service a2ae7a
        colon
Packit Service a2ae7a
      . [ label "password" . store password? . colon ]
Packit Service a2ae7a
      . [ label "gid"      . store integer?  . colon ]
Packit Service a2ae7a
      . user_list? in
Packit Service a2ae7a
  [ dels "+" . label "@nisdefault" . overrides? . eol ]
Packit Service a2ae7a
Packit Service a2ae7a
Packit Service a2ae7a
(************************************************************************
Packit Service a2ae7a
 *                                LENS
Packit Service a2ae7a
 *************************************************************************)
Packit Service a2ae7a
Packit Service a2ae7a
let lns        = (comment|empty|entry|nisdefault) *
Packit Service a2ae7a
Packit Service a2ae7a
let filter     = incl "/etc/group"
Packit Service a2ae7a
Packit Service a2ae7a
let xfm        = transform lns filter