|
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
|